import smart_pointer_const_overload.*; public class smart_pointer_const_overload_runme { static int CONST_ACCESS = 1; static int MUTABLE_ACCESS = 2; static { System.loadLibrary("smart_pointer_const_overload"); } public static void test(Bar b, Foo f) { Assert(f.getX() == 0); // Test member variable get Assert(b.getX() == 0); Assert(f.getAccess() == CONST_ACCESS); // Test member variable set b.setX(1); Assert(f.getX() == 1); Assert(f.getAccess() == MUTABLE_ACCESS); // Test const method Assert(b.getx() == 1); Assert(f.getAccess() == CONST_ACCESS); // Test mutable method b.setx(2); Assert(f.getX() == 2); Assert(f.getAccess() == MUTABLE_ACCESS); // Test extended const method Assert(b.getx2() == 2); Assert(f.getAccess() == CONST_ACCESS); // Test extended mutable method b.setx2(3); Assert(f.getX() == 3); Assert(f.getAccess() == MUTABLE_ACCESS); // Test static method b.stat(); Assert(f.getAccess() == CONST_ACCESS); // Test const member f.setAccess(MUTABLE_ACCESS); Assert(b.getY() == 0); Assert(f.getAccess() == CONST_ACCESS); // Test get through mutable pointer to const member f.setAccess(MUTABLE_ACCESS); Assert(smart_pointer_const_overload.get_int(b.getYp()) == 0); Assert(f.getAccess() == CONST_ACCESS); // Test get through const pointer to mutable member f.setX(4); f.setAccess(MUTABLE_ACCESS); Assert(smart_pointer_const_overload.get_int(b.getXp()) == 4); Assert(f.getAccess() == CONST_ACCESS); // Test set through const pointer to mutable member f.setAccess(MUTABLE_ACCESS); smart_pointer_const_overload.set_int(b.getXp(), 5); Assert(f.getX() == 5); Assert(f.getAccess() == CONST_ACCESS); // Test set pointer to const member b.setYp(smart_pointer_const_overload.new_int(6)); Assert(f.getY() == 0); Assert(smart_pointer_const_overload.get_int(f.getYp()) == 6); Assert(f.getAccess() == MUTABLE_ACCESS); smart_pointer_const_overload.delete_int(f.getYp()); } public static void main(String argv[]) { Foo f = new Foo(); Bar b = new Bar(f); //Foo f2 = new Foo(); //Bar b2 = new Bar2(f2); test(b, f); //test(b2, f2); } public static void Assert(boolean b) { if (!b) throw new RuntimeException("Assertion failed"); } }