mirror of https://github.com/swig/swig
112 lines
2.1 KiB
JavaScript
112 lines
2.1 KiB
JavaScript
var operator_overload = require("operator_overload");
|
|
var { Op } = operator_overload;
|
|
|
|
// first check all the operators are implemented correctly from pure C++ code
|
|
Op.sanity_check();
|
|
|
|
pop = (new Op(6)).Divide(new Op(3));
|
|
|
|
// test routine
|
|
a = new Op();
|
|
b = new Op(5);
|
|
c = new Op(b); // copy construct
|
|
d = new Op(2);
|
|
dd = new Op();
|
|
dd.Equal(d); // assignment operator
|
|
|
|
// test equality
|
|
if (!a.NotEqual(b)) {
|
|
throw new Error("a!=b");
|
|
}
|
|
if (!b.EqualEqual(c)) {
|
|
throw new Error("b==c");
|
|
}
|
|
if (!a.NotEqual(d)) {
|
|
throw new Error("a!=d");
|
|
}
|
|
if (!d.EqualEqual(dd)) {
|
|
throw new Error("d==dd");
|
|
}
|
|
|
|
// test <
|
|
if (!a.LessThan(b)) {
|
|
throw new Error("a<b");
|
|
}
|
|
if (!a.LessThanEqual(b)) {
|
|
throw new Error("a<=b");
|
|
}
|
|
if (!b.LessThanEqual(c)) {
|
|
throw new Error("b<=c");
|
|
}
|
|
if (!b.GreaterThanEqual(c)) {
|
|
throw new Error("b>=c");
|
|
}
|
|
if (!b.GreaterThan(d)) {
|
|
throw new Error("b>d");
|
|
}
|
|
if (!b.GreaterThanEqual(d)) {
|
|
throw new Error("b>=d");
|
|
}
|
|
|
|
// test +=
|
|
e = new Op(3);
|
|
e.PlusEqual(d);
|
|
if (!e.EqualEqual(b)) {
|
|
throw new Error(`e==b (${e.i}==${b.i})`);
|
|
}
|
|
e.MinusEqual(c);
|
|
if (!e.EqualEqual(a)) {
|
|
throw new Error("e==a");
|
|
}
|
|
e = new Op(1);
|
|
e.MultiplyEqual(b);
|
|
if (!e.EqualEqual(c)) {
|
|
throw new Error("e==c");
|
|
}
|
|
e.DivideEqual(d);
|
|
if (!e.EqualEqual(d)) {
|
|
throw new Error("e==d");
|
|
}
|
|
e.PercentEqual(c);
|
|
if (!e.EqualEqual(d)) {
|
|
throw new Error("e==d");
|
|
}
|
|
|
|
// test +
|
|
f = new Op(1);
|
|
g = new Op(1);
|
|
if (!f.Plus(g).EqualEqual(new Op(2))) {
|
|
throw new Error("f+g==Op(2)");
|
|
}
|
|
if (!f.Minus(g).EqualEqual(new Op(0))) {
|
|
throw new Error("f-g==Op(0)");
|
|
}
|
|
if (!f.Multiply(g).EqualEqual(new Op(1))) {
|
|
throw new Error("f*g==Op(1)");
|
|
}
|
|
if (!f.Divide(g).EqualEqual(new Op(1))) {
|
|
throw new Error("f/g==Op(1)");
|
|
}
|
|
if (!f.Percent(g).EqualEqual(new Op(0))) {
|
|
throw new Error("f%g==Op(0)");
|
|
}
|
|
|
|
// test unary operators
|
|
if (!a.Minus().EqualEqual(a)) {
|
|
throw new Error("-a==a");
|
|
}
|
|
if (!b.Minus().EqualEqual(new Op(-5))) {
|
|
throw new Error("-b==Op(-5)");
|
|
}
|
|
|
|
// test functors
|
|
if (!b.Functor() == 5) {
|
|
throw new Error("functor");
|
|
}
|
|
if (!b.Functor(1) == 6) {
|
|
throw new Error("functor");
|
|
}
|
|
if (!b.Functor(1, 2) == 8) {
|
|
throw new Error("functor");
|
|
}
|