1 7 package ch.ethz.prose.filter; 8 9 import java.lang.reflect.Modifier ; 11 12 import junit.framework.*; 13 import ch.ethz.jvmai.FieldAccessJoinPoint; 14 import ch.ethz.prose.ProseSystem; 15 import ch.ethz.prose.engine.FieldAccessRequest; 16 import ch.ethz.prose.engine.JoinPointManager; 17 18 24 public class FieldSTest extends TestCase { 25 26 static class Single { 29 int anna; 30 } 31 32 static class Basket { 33 public boolean apple; 34 transient protected short pear; 35 long banana; 36 private float tea; 37 } 38 39 static public class Meal { 40 transient public long salad; 41 protected int steak; 42 float sauce; 43 private double scotch; 44 } 45 46 47 48 Basket pickNick; 49 Meal dinner; 50 51 FieldAccessRequest annaRequest; 53 FieldAccessRequest appleRequest; 54 FieldAccessRequest bananaRequest; 55 FieldAccessRequest pearRequest; 56 FieldAccessRequest teaRequest; 57 FieldAccessRequest saladRequest; 58 FieldAccessRequest steakRequest; 59 FieldAccessRequest sauceRequest; 60 FieldAccessRequest scotchRequest; 61 62 66 public FieldSTest(String name) { 67 super(name); 68 } 69 70 73 protected void setUp() throws Exception { 74 ProseSystem.startup(); 75 76 JoinPointManager jpm = ProseSystem.getAspectManager().getJoinPointManager(); 77 78 pickNick = new Basket(); 79 dinner = new Meal(); 80 81 annaRequest = (FieldAccessRequest)jpm.createJoinPointRequest(FieldAccessJoinPoint.KIND,Single.class.getDeclaredField("anna") ); 82 appleRequest = (FieldAccessRequest)jpm.createJoinPointRequest(FieldAccessJoinPoint.KIND,Basket.class.getDeclaredField("apple") ); 83 bananaRequest = (FieldAccessRequest)jpm.createJoinPointRequest(FieldAccessJoinPoint.KIND,Basket.class.getDeclaredField("banana")); 84 pearRequest = (FieldAccessRequest)jpm.createJoinPointRequest(FieldAccessJoinPoint.KIND,Basket.class.getDeclaredField("pear") ); 85 teaRequest = (FieldAccessRequest)jpm.createJoinPointRequest(FieldAccessJoinPoint.KIND,Basket.class.getDeclaredField("tea") ); 86 saladRequest = (FieldAccessRequest)jpm.createJoinPointRequest(FieldAccessJoinPoint.KIND, Meal.class.getDeclaredField("salad") ); 87 steakRequest = (FieldAccessRequest)jpm.createJoinPointRequest(FieldAccessJoinPoint.KIND, Meal.class.getDeclaredField("steak") ); 88 sauceRequest = (FieldAccessRequest)jpm.createJoinPointRequest(FieldAccessJoinPoint.KIND, Meal.class.getDeclaredField("sauce") ); 89 scotchRequest = (FieldAccessRequest)jpm.createJoinPointRequest(FieldAccessJoinPoint.KIND, Meal.class.getDeclaredField("scotch")); 90 } 91 92 protected void tearDown() 93 { 94 try 95 { ProseSystem.teardown(); } 96 catch (Exception e) 97 { Assert.fail("ProseSystem.teardown() failed"); } 98 } 99 100 public void testFieldSNamed() { 101 try 102 { 103 PointCutter wantsToDance = (Fields.named("anna")); 104 assertTrue("1", wantsToDance.isSpecialRequest(annaRequest)); 105 assertTrue("2", ! wantsToDance.isSpecialRequest(appleRequest)); 106 107 PointCutter dinnerReady = (Fields.named("s.*")); 108 assertTrue("3", dinnerReady.isSpecialRequest(saladRequest)); 109 assertTrue("4", dinnerReady.isSpecialRequest(steakRequest)); 110 assertTrue("5", dinnerReady.isSpecialRequest(sauceRequest)); 111 assertTrue("6", dinnerReady.isSpecialRequest(scotchRequest)); 112 assertTrue("7", ! dinnerReady.isSpecialRequest(annaRequest)); 113 114 PointFilter danceOrDinner = 115 (wantsToDance).OR 116 (dinnerReady); 117 assertTrue("8", danceOrDinner.isSpecialRequest(annaRequest)); 118 assertTrue("9", danceOrDinner.isSpecialRequest(saladRequest)); 119 assertTrue("10", ! danceOrDinner.isSpecialRequest(appleRequest)); 120 121 PointFilter noDinnerAndDance = 122 (wantsToDance).AND 123 (dinnerReady); 124 assertTrue("11", ! noDinnerAndDance.isSpecialRequest(annaRequest)); 125 assertTrue("12", ! noDinnerAndDance.isSpecialRequest(steakRequest)); 126 } 127 catch (RuntimeException wrongTest) 128 { 129 wrongTest.printStackTrace(); 130 throw wrongTest; 131 } 132 } 133 134 135 public void testFieldsDeclared() 136 { 137 PointCutter publicFood = (Fields.withModifier(Modifier.PUBLIC)); 138 assertTrue("1", publicFood.isSpecialRequest(appleRequest)); 139 assertTrue("2", publicFood.isSpecialRequest(saladRequest)); 140 assertTrue("3", ! publicFood.isSpecialRequest(pearRequest)); assertTrue("4", ! publicFood.isSpecialRequest(bananaRequest)); assertTrue("5", ! publicFood.isSpecialRequest(scotchRequest)); 144 PointCutter transientFood = (Fields.withModifier(Modifier.TRANSIENT)); 145 assertTrue("6", transientFood.isSpecialRequest(saladRequest)); 146 assertTrue("7", ! transientFood.isSpecialRequest(appleRequest)); 147 148 PointFilter transientPublicFood = 149 (publicFood).AND 150 (transientFood); 151 assertTrue("8", transientPublicFood.isSpecialRequest(saladRequest)); 152 assertTrue("9", ! transientPublicFood.isSpecialRequest(appleRequest)); assertTrue("10", ! transientPublicFood.isSpecialRequest(pearRequest)); 155 PointFilter transientOrPublicFood = 156 (publicFood).OR 157 (transientFood); 158 assertTrue("11", transientOrPublicFood.isSpecialRequest(saladRequest)); 159 assertTrue("12", transientOrPublicFood.isSpecialRequest(appleRequest)); 160 assertTrue("13", transientOrPublicFood.isSpecialRequest(pearRequest)); 161 assertTrue("14", ! transientOrPublicFood.isSpecialRequest(bananaRequest)); 163 } 164 165 169 public static Test suite() { 170 return new TestSuite(FieldSTest.class); 171 } 172 173 } 174 175 176 | Popular Tags |