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 4.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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.getAdditionalBounds().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.getAdditionalBounds().length);
  37. }
  38. public void testIsExtends() {
  39. assertTrue(extendsClass.kind == BoundedReferenceType.EXTENDS);
  40. assertFalse(superClass.kind == BoundedReferenceType.EXTENDS);
  41. }
  42. public void testIsSuper() {
  43. assertTrue(superClass.kind == BoundedReferenceType.SUPER);
  44. assertFalse(extendsClass.kind == BoundedReferenceType.SUPER);
  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. @Override
  82. protected void setUp() throws Exception {
  83. super.setUp();
  84. BcelWorld world = new BcelWorld();
  85. javaLangClass = (ReferenceType) world.resolve(UnresolvedType.forName("java/lang/Class"));
  86. javaLangObject = (ReferenceType) world.resolve(UnresolvedType.OBJECT);
  87. extendsClass = new BoundedReferenceType(javaLangClass, true, world);
  88. superClass = new BoundedReferenceType(javaLangClass, false, world);
  89. extendsWithExtras = new BoundedReferenceType(javaLangClass, true, world, new ReferenceType[] { (ReferenceType) world
  90. .resolve(UnresolvedType.forName("java/util/List")) });
  91. }
  92. }