#unittest { name: "Vector class."; result: 69; }; class Vector { public var x=0; public var y=0; public var z=0; public func init (a, b, c) { if (!a) a = 0; if (!b) b = 0; if (!c) c = 0; x = a; y = b; z = c; } public func + (v) { if (v is Int) { return Vector(x+v, y+v, z+v); } else if (v is Vector) { return Vector(x+v.x, y+v.y, z+v.z); } return null; } public func - (v) { if (v is Int) { return Vector(x-v, y-v, z-v); } else if (v is Vector) { return Vector(x-v.x, y-v.y, z-v.z); } return null; } public func * (v) { if (v is Int) { return Vector(x*v, y*v, z*v); } else if (v is Vector) { return Vector(x*v.x, y*v.y, z*v.z); } return null; } public func / (v) { if (v is Int) { return Vector(x/v, y/v, z/v); } else if (v is Vector) { return Vector(x/v.x, y/v.y, z/v.z); } return null; } public func neg() { return Vector(-x, -y, -z); } public func sum() { return x+y+z; } public func String() { return "[" + x.String() + "," + y.String() + "," + z.String() + "]"; } } func main() { var v1 = Vector(1,2,3); // 1,2,3 (6) var v2 = Vector(4,5,6); // 4,5,6 (15) var v3 = v1 + v2; // 5,7,9 var v4 = v2 - v1; // 3,3,3 var v5 = -v4; // -3,-3,-3 var v6 = v4 / v5; // -1,-1,-1 var v7 = v3 + v6; // 4,6,8 (18) var v8 = v4 * v1; // 3,6,9 (18) var v9 = v1 + 2; // 3,4,5 (12) // just trigger this code in order in order to trigger internal test var test = v9.String(); if (test != "[3,4,5]") return false; return v1.sum() + v2.sum() + v7.sum() + v8.sum() + v9.sum(); }