import org.aspectj.testing.Tester; privileged aspect TheAspect perthis(this(TheObject)) { private TheObject theObject; private int myPrivate_int=-1, myPackage_int=-1, myProtected_int=-1, myPublic_int=-1; after() returning(TheObject obj): execution(new()) { theObject = obj; } after() returning(): call(* realMain(..)) { test_eq(); test_timeseq(); test_diveq(); test_modeq(); test_pluseq(); test_minuseq(); test_leftShifteq(); test_rightShifteq(); test_xoreq(); test_andeq(); test_unsignedRightShifteq(); test_postinc(); test_postdec(); test_preinc(); test_predec(); test_oreq(); test_gets(); test_calls(); } public void test_eq() { theObject.private_int = 1; theObject.protected_int = 2; theObject.package_int = 3; theObject.public_int = 4; Tester.checkEqual(theObject.private_int,1,"set private_int"); Tester.checkEqual(theObject.protected_int,2,"set protected_int"); Tester.checkEqual(theObject.package_int,3,"set package_int"); Tester.checkEqual(theObject.public_int,4,"set public_int"); } public void test_timeseq() { theObject.private_int *= 4; theObject.protected_int *= 4; theObject.package_int *= 4; theObject.public_int *= 4; Tester.checkEqual(theObject.private_int,4,"times private_int"); Tester.checkEqual(theObject.protected_int,8,"times protected_int"); Tester.checkEqual(theObject.package_int,12,"times package_int"); Tester.checkEqual(theObject.public_int,16,"times public_int"); } public void test_diveq() { theObject.private_int /= 2; theObject.protected_int /= 2; theObject.package_int /= 2; theObject.public_int /= 2; Tester.checkEqual(theObject.private_int,2,"div private_int"); Tester.checkEqual(theObject.protected_int,4,"div protected_int"); Tester.checkEqual(theObject.package_int,6,"div package_int"); Tester.checkEqual(theObject.public_int,8,"div public_int"); } public void test_modeq() { theObject.private_int %= 2; theObject.protected_int %= 3; theObject.package_int %= 4; theObject.public_int %= 5; Tester.checkEqual(theObject.private_int,0,"mod private_int"); Tester.checkEqual(theObject.protected_int,1,"mod protected_int"); Tester.checkEqual(theObject.package_int,2,"mod package_int"); Tester.checkEqual(theObject.public_int,3,"mod public_int"); } public void test_pluseq() { theObject.private_int += 2; theObject.protected_int += 2; theObject.package_int += 2; theObject.public_int += 2; Tester.checkEqual(theObject.private_int,2,"plus private_int"); Tester.checkEqual(theObject.protected_int,3,"plus protected_int"); Tester.checkEqual(theObject.package_int,4,"plus package_int"); Tester.checkEqual(theObject.public_int,5,"plus public_int"); } public void test_minuseq() { theObject.private_int -= 1; theObject.protected_int -= 1; theObject.package_int -= 1; theObject.public_int -= 1; Tester.checkEqual(theObject.private_int,1,"minus private_int"); Tester.checkEqual(theObject.protected_int,2,"minus protected_int"); Tester.checkEqual(theObject.package_int,3,"minus package_int"); Tester.checkEqual(theObject.public_int,4,"minus public_int"); } public void test_leftShifteq() { theObject.private_int <<= 1; theObject.protected_int <<= 1; theObject.package_int <<= 1; theObject.public_int <<= 1; Tester.checkEqual(theObject.private_int,2,"left shift private_int"); Tester.checkEqual(theObject.protected_int,4,"left shift protected_int"); Tester.checkEqual(theObject.package_int,6,"left shift package_int"); Tester.checkEqual(theObject.public_int,8,"left shift public_int"); } public void test_rightShifteq() { theObject.private_int >>= 1; theObject.protected_int >>= 1; theObject.package_int >>= 1; theObject.public_int >>= 1; Tester.checkEqual(theObject.private_int,1,"right shift private_int"); Tester.checkEqual(theObject.protected_int,2,"right shift protected_int"); Tester.checkEqual(theObject.package_int,3,"right shift package_int"); Tester.checkEqual(theObject.public_int,4,"right shift public_int"); } public void test_xoreq() { theObject.private_int ^= 0; theObject.protected_int ^= 1; theObject.package_int ^= 1; theObject.public_int ^= 1; Tester.checkEqual(theObject.private_int,1,"xor private_int"); Tester.checkEqual(theObject.protected_int,3,"xor protected_int"); Tester.checkEqual(theObject.package_int,2,"xor package_int"); Tester.checkEqual(theObject.public_int,5,"xor public_int"); } public void test_andeq() { theObject.private_int &= 3; theObject.protected_int &= 6; theObject.package_int &= 3; theObject.public_int &= 4; Tester.checkEqual(theObject.private_int,1,"and private_int"); Tester.checkEqual(theObject.protected_int,2,"and protected_int"); Tester.checkEqual(theObject.package_int,2,"and package_int"); Tester.checkEqual(theObject.public_int,4,"and public_int"); } public void test_unsignedRightShifteq() { theObject.private_int >>>= 0; theObject.protected_int >>>= 1; theObject.package_int >>>= 1; theObject.public_int >>>= 2; Tester.checkEqual(theObject.private_int,1,"unsigned right shift private_int"); Tester.checkEqual(theObject.protected_int,1,"unsigned right shift protected_int"); Tester.checkEqual(theObject.package_int,1,"unsigned right shift package_int"); Tester.checkEqual(theObject.public_int,1,"unsigned right shift public_int"); } public void test_postinc() { theObject.private_int ++; theObject.protected_int ++; theObject.package_int ++; theObject.public_int ++; Tester.checkEqual(theObject.private_int,2,"post ++ private_int"); Tester.checkEqual(theObject.protected_int,2,"post ++ protected_int"); Tester.checkEqual(theObject.package_int,2,"post ++ package_int"); Tester.checkEqual(theObject.public_int,2,"post ++ public_int"); } public void test_postdec() { theObject.private_int --; theObject.protected_int --; theObject.package_int --; theObject.public_int --; Tester.checkEqual(theObject.private_int,1,"post -- private_int"); Tester.checkEqual(theObject.protected_int,1,"post -- protected_int"); Tester.checkEqual(theObject.package_int,1,"post -- package_int"); Tester.checkEqual(theObject.public_int,1,"post -- public_int"); } public void test_preinc() { ++ theObject.private_int; ++ theObject.protected_int; ++ theObject.package_int; ++ theObject.public_int; Tester.checkEqual(theObject.private_int,2,"pre ++ private_int"); Tester.checkEqual(theObject.protected_int,2,"pre ++ protected_int"); Tester.checkEqual(theObject.package_int,2,"pre ++ package_int"); Tester.checkEqual(theObject.public_int,2,"pre ++ public_int"); } public void test_predec() { -- theObject.private_int; -- theObject.protected_int; -- theObject.package_int; -- theObject.public_int; Tester.checkEqual(theObject.private_int,1,"pre -- private_int"); Tester.checkEqual(theObject.protected_int,1,"pre -- protected_int"); Tester.checkEqual(theObject.package_int,1,"pre -- package_int"); Tester.checkEqual(theObject.public_int,1,"pre -- public_int"); } public void test_oreq() { theObject.private_int |= 8; theObject.protected_int |= 8; theObject.package_int |= 8; theObject.public_int |= 8; Tester.checkEqual(theObject.private_int,9,"or private_int"); Tester.checkEqual(theObject.protected_int,9,"or protected_int"); Tester.checkEqual(theObject.package_int,9,"or package_int"); Tester.checkEqual(theObject.public_int,9,"or public_int"); } public void test_gets() { myPrivate_int = theObject.private_int; myProtected_int = theObject.protected_int; myPackage_int = theObject.package_int; myPublic_int = theObject.public_int; } public void test_calls() { theObject.private_call(); theObject.protected_call(); theObject.package_call(); theObject.public_call(); } }