diff options
Diffstat (limited to 'Examples/test-suite/java/operator_overload_runme.java')
| -rw-r--r-- | Examples/test-suite/java/operator_overload_runme.java | 113 |
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"); + } +} |
