123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- /* *******************************************************************
- * Copyright (c) 2005 Contributors.
- * All rights reserved.
- * This program and the accompanying materials are made available
- * under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution and is available at
- * http://eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Adrian Colyer Initial implementation
- * ******************************************************************/
- package org.aspectj.weaver;
-
- import org.aspectj.weaver.bcel.BcelWorld;
-
- import junit.framework.TestCase;
-
- public class BoundedReferenceTypeTestCase extends TestCase {
-
- ReferenceType javaLangClass;
- ReferenceType javaLangObject;
- BoundedReferenceType extendsClass;
- BoundedReferenceType superClass;
- BoundedReferenceType extendsWithExtras;
-
- public void testSignature() {
- String extendsSig = extendsClass.getSignature();
- assertEquals("+Ljava/lang/Class;", extendsSig);
- assertEquals("-Ljava/lang/Class;", superClass.getSignature());
- }
-
- public void testExtendsBounds() {
- assertFalse("has no lower bound", extendsClass.hasLowerBound());
- assertNull("no lower bound", extendsClass.getLowerBound());
- assertEquals(javaLangClass, extendsClass.getUpperBound());
- assertEquals("no interface bounds", 0, extendsClass.getAdditionalBounds().length);
- }
-
- public void testSuperBounds() {
- assertTrue("has lower bound", superClass.hasLowerBound());
- assertEquals(javaLangClass, superClass.getLowerBound());
- assertEquals("Ljava/lang/Object;", superClass.getUpperBound().getSignature());
- assertEquals("no interface bounds", 0, superClass.getAdditionalBounds().length);
- }
-
- public void testIsExtends() {
- assertTrue(extendsClass.kind == BoundedReferenceType.EXTENDS);
- assertFalse(superClass.kind == BoundedReferenceType.EXTENDS);
- }
-
- public void testIsSuper() {
- assertTrue(superClass.kind == BoundedReferenceType.SUPER);
- assertFalse(extendsClass.kind == BoundedReferenceType.SUPER);
- }
-
- public void testGetDeclaredInterfacesNoAdditions() {
- ResolvedType[] rt1 = extendsClass.getDeclaredInterfaces();
- ResolvedType[] rt2 = javaLangClass.getDeclaredInterfaces();
- assertEquals("same length", rt1.length, rt2.length);
- for (int i = 0; i < rt2.length; i++) {
- assertEquals("same methods", rt1[i], rt2[i]);
- }
- }
-
- public void testGetDeclaredInterfacesWithInterfaceBounds() {
- ResolvedType[] rt1 = extendsWithExtras.getDeclaredInterfaces();
- ResolvedType[] rt2 = javaLangClass.getDeclaredInterfaces();
- assertEquals("one extra interface", rt1.length, rt2.length + 1);
- for (int i = 0; i < rt2.length; i++) {
- assertEquals("same methods", rt1[i], rt2[i]);
- }
- assertEquals("Ljava/util/List;", rt1[rt1.length - 1].getSignature());
- }
-
- // all other methods in signature are delegated to upper bound...
- // representative test
- public void testGetDeclaredMethodsExtends() {
- ResolvedMember[] rm1 = extendsClass.getDeclaredMethods();
- ResolvedMember[] rm2 = javaLangClass.getDeclaredMethods();
- assertEquals("same length", rm1.length, rm2.length);
- for (int i = 0; i < rm2.length; i++) {
- assertEquals("same methods", rm1[i], rm2[i]);
- }
- }
-
- public void testGetDeclaredMethodsSuper() {
- ResolvedMember[] rm1 = superClass.getDeclaredMethods();
- ResolvedMember[] rm2 = javaLangObject.getDeclaredMethods();
- assertEquals("same length", rm1.length, rm2.length);
- for (int i = 0; i < rm2.length; i++) {
- assertEquals("same methods", rm1[i], rm2[i]);
- }
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- BcelWorld world = new BcelWorld();
- javaLangClass = (ReferenceType) world.resolve(UnresolvedType.forName("java/lang/Class"));
- javaLangObject = (ReferenceType) world.resolve(UnresolvedType.OBJECT);
- extendsClass = new BoundedReferenceType(javaLangClass, true, world);
- superClass = new BoundedReferenceType(javaLangClass, false, world);
- extendsWithExtras = new BoundedReferenceType(javaLangClass, true, world, new ReferenceType[] { (ReferenceType) world
- .resolve(UnresolvedType.forName("java/util/List")) });
- }
- }
|