You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

BoundedReferenceTypeTestCase.java 3.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. /* *******************************************************************
  2. * Copyright (c) 2005 Contributors.
  3. * All rights reserved.
  4. * This program and the accompanying materials are made available
  5. * under the terms of the Eclipse Public License v1.0
  6. * which accompanies this distribution and is available at
  7. * http://eclipse.org/legal/epl-v10.html
  8. *
  9. * Contributors:
  10. * Adrian Colyer Initial implementation
  11. * ******************************************************************/
  12. package org.aspectj.weaver;
  13. import org.aspectj.weaver.bcel.BcelWorld;
  14. import junit.framework.TestCase;
  15. public class BoundedReferenceTypeTestCase extends TestCase {
  16. ReferenceType javaLangClass;
  17. ReferenceType javaLangObject;
  18. BoundedReferenceType extendsClass;
  19. BoundedReferenceType superClass;
  20. BoundedReferenceType extendsWithExtras;
  21. public void testSignature() {
  22. String extendsSig = extendsClass.getSignature();
  23. assertEquals("+Ljava/lang/Class;",extendsSig);
  24. assertEquals("-Ljava/lang/Class;",superClass.getSignature());
  25. }
  26. public void testExtendsBounds() {
  27. assertFalse("has no lower bound",extendsClass.hasLowerBound());
  28. assertNull("no lower bound",extendsClass.getLowerBound());
  29. assertEquals(javaLangClass,extendsClass.getUpperBound());
  30. assertEquals("no interface bounds",0,extendsClass.getInterfaceBounds().length);
  31. }
  32. public void testSuperBounds() {
  33. assertTrue("has lower bound",superClass.hasLowerBound());
  34. assertEquals(javaLangClass,superClass.getLowerBound());
  35. assertEquals("Ljava/lang/Object;",superClass.getUpperBound().getSignature());
  36. assertEquals("no interface bounds",0,superClass.getInterfaceBounds().length);
  37. }
  38. public void testIsExtends() {
  39. assertTrue(extendsClass.isExtends);
  40. assertFalse(superClass.isExtends);
  41. }
  42. public void testIsSuper() {
  43. assertTrue(superClass.isSuper);
  44. assertFalse(extendsClass.isSuper);
  45. }
  46. public void testGetDeclaredInterfacesNoAdditions() {
  47. ResolvedType[] rt1 = extendsClass.getDeclaredInterfaces();
  48. ResolvedType[] rt2 = javaLangClass.getDeclaredInterfaces();
  49. assertEquals("same length",rt1.length,rt2.length);
  50. for (int i = 0; i < rt2.length; i++) {
  51. assertEquals("same methods",rt1[i],rt2[i]);
  52. }
  53. }
  54. public void testGetDeclaredInterfacesWithInterfaceBounds() {
  55. ResolvedType[] rt1 = extendsWithExtras.getDeclaredInterfaces();
  56. ResolvedType[] rt2 = javaLangClass.getDeclaredInterfaces();
  57. assertEquals("one extra interface",rt1.length,rt2.length + 1);
  58. for (int i = 0; i < rt2.length; i++) {
  59. assertEquals("same methods",rt1[i],rt2[i]);
  60. }
  61. assertEquals("Ljava/util/List;",rt1[rt1.length-1].getSignature());
  62. }
  63. // all other methods in signature are delegated to upper bound...
  64. // representative test
  65. public void testGetDeclaredMethodsExtends() {
  66. ResolvedMember[] rm1 = extendsClass.getDeclaredMethods();
  67. ResolvedMember[] rm2 = javaLangClass.getDeclaredMethods();
  68. assertEquals("same length",rm1.length,rm2.length);
  69. for (int i = 0; i < rm2.length; i++) {
  70. assertEquals("same methods",rm1[i],rm2[i]);
  71. }
  72. }
  73. public void testGetDeclaredMethodsSuper() {
  74. ResolvedMember[] rm1 = superClass.getDeclaredMethods();
  75. ResolvedMember[] rm2 = javaLangObject.getDeclaredMethods();
  76. assertEquals("same length",rm1.length,rm2.length);
  77. for (int i = 0; i < rm2.length; i++) {
  78. assertEquals("same methods",rm1[i],rm2[i]);
  79. }
  80. }
  81. protected void setUp() throws Exception {
  82. super.setUp();
  83. BcelWorld world = new BcelWorld();
  84. javaLangClass = (ReferenceType) world.resolve(UnresolvedType.forName("java/lang/Class"));
  85. javaLangObject = (ReferenceType) world.resolve(UnresolvedType.OBJECT);
  86. extendsClass = new BoundedReferenceType(javaLangClass,true,world);
  87. superClass = new BoundedReferenceType(javaLangClass,false,world);
  88. extendsWithExtras = new BoundedReferenceType(javaLangClass,true,world,
  89. new ReferenceType[] {(ReferenceType)world.resolve(UnresolvedType.forName("java/util/List"))});
  90. }
  91. }