summaryrefslogtreecommitdiff
path: root/Examples/test-suite/java/operator_overload_runme.java
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/test-suite/java/operator_overload_runme.java')
-rw-r--r--Examples/test-suite/java/operator_overload_runme.java113
1 files changed, 113 insertions, 0 deletions
diff --git a/Examples/test-suite/java/operator_overload_runme.java b/Examples/test-suite/java/operator_overload_runme.java
new file mode 100644
index 0000000..8a9dddf
--- /dev/null
+++ b/Examples/test-suite/java/operator_overload_runme.java
@@ -0,0 +1,113 @@
+import operator_overload.*;
+
+public class operator_overload_runme {
+
+ static {
+ System.loadLibrary("operator_overload");
+ }
+
+ public static void main(String argv[]) {
+
+ // Java does not support operators, so we just check that these can be called as methods.
+
+ Op.sanity_check();
+
+ //test routine:
+ Op a = new Op();
+ Op b = new Op(5);
+ Op c = new Op(b); // copy constructor
+ Op d = new Op(2);
+ Op dd = d.Equal(d); // assignment operator
+
+ // test equality
+ Assert(a.NotEqual(b));
+ Assert(b.EqualEqual(c));
+ Assert(a.NotEqual(d));
+ Assert(d.EqualEqual(dd));
+
+ // test <
+ Assert(a.LessThan(b));
+ Assert(a.LessThanEqual(b));
+ Assert(b.LessThanEqual(c));
+ Assert(b.GreaterThanEqual(c));
+ Assert(b.GreaterThan(d));
+ Assert(b.GreaterThanEqual(d));
+
+ // test +=
+ Op e = new Op(3);
+ e.PlusEqual(d);
+ Assert(e.EqualEqual(b));
+ e.MinusEqual(c);
+ Assert(e.EqualEqual(a));
+ e = new Op(1);
+ e.MultiplyEqual(b);
+ Assert(e.EqualEqual(c));
+ e.DivideEqual(d);
+ Assert(e.EqualEqual(d));
+ e.PercentEqual(c);
+ Assert(e.EqualEqual(d));
+
+ // test +
+ Op f = new Op(1);
+ Op g = new Op(1);
+ Assert(f.Plus(g).EqualEqual(new Op(2)));
+ Assert(f.Minus(g).EqualEqual(new Op(0)));
+ Assert(f.Multiply(g).EqualEqual(new Op(1)));
+ Assert(f.Divide(g).EqualEqual(new Op(1)));
+ Assert(f.Percent(g).EqualEqual(new Op(0)));
+
+ // test unary operators
+ Assert((a.Not() == true));
+ Assert((b.Not() == false));
+ Assert(a.Minus().EqualEqual(a));
+ Assert(b.Minus().EqualEqual( new Op(-5)));
+
+ // test []
+ Op h = new Op(3);
+ Assert(h.__getitem__(0) == 3);
+ Assert(h.__getitem__(1) == 0);
+ h.__setitem__(0,2); // set
+ Assert(h.__getitem__(0) == 2);
+ h.__setitem__(1,2); // ignored
+ Assert(h.IndexIntoConst(0) == 2);
+ Assert(h.IndexIntoConst(1) == 0);
+
+ // test ()
+ Op i = new Op(3);
+ Assert(i.Functor()==3);
+ Assert(i.Functor(1)==4);
+ Assert(i.Functor(1,2)==6);
+
+ // test ++ --
+ Op j = new Op(10);
+ j.PlusPlusPrefix();
+ j.PlusPlusPostfix(0);
+ Assert(j.getI() == 12);
+ j.MinusMinusPrefix();
+ j.MinusMinusPostfix(0);
+ Assert(j.getI() == 10);
+ {
+ Op op = j.PlusPlusPostfix(0);
+ Assert(j.getI() == op.getI()+1);
+ }
+ {
+ Op op = j.MinusMinusPostfix(0);
+ Assert(j.getI() == op.getI()-1);
+ }
+
+ // cast operators
+ Op k = new Op(3);
+ int check_k = k.IntCast();
+ Assert(check_k == 3);
+
+ Op l = new Op(4);
+ double check_l = l.DoubleCast();
+ Assert(check_l == 4);
+
+ }
+
+ public static void Assert(boolean b) {
+ if (!b)
+ throw new RuntimeException("Assertion failed");
+ }
+}