| // Check usage of template attributes | |
| var li_attribute_template = require("li_attribute_template"); | |
| chell = new li_attribute_template.Cintint(1, 2, 3); | |
| function rassert(what, master) { | |
| if (what != master) { | |
| throw new Error("what: {}".format(what)); | |
| } | |
| } | |
| // Testing primitive by value attribute | |
| rassert(chell.a, 1); | |
| chell.a = 3; | |
| rassert(chell.a, 3); | |
| // Testing primitive by ref attribute | |
| rassert(chell.b, 2); | |
| chell.b = 5; | |
| rassert(chell.b, 5); | |
| // Testing string | |
| chell.str = "abc"; | |
| rassert(chell.str, "abc"); | |
| // Testing class by value | |
| rassert(chell.d.value, 1); | |
| chell.d = new li_attribute_template.Foo(2); | |
| rassert(chell.d.value, 2); | |
| // Testing class by reference | |
| rassert(chell.e.value, 2); | |
| chell.e = new li_attribute_template.Foo(3); | |
| rassert(chell.e.value, 3); | |
| chell.e.value = 4; | |
| rassert(chell.e.value, 4); | |
| // Testing moderately complex template by value | |
| rassert(chell.f.first, 1); | |
| rassert(chell.f.second, 2); | |
| pair = new li_attribute_template.pair_intint(3, 4); | |
| chell.f = pair; | |
| rassert(chell.f.first, 3); | |
| rassert(chell.f.second, 4); | |
| // Testing moderately complex template by ref | |
| rassert(chell.g.first, 2); | |
| rassert(chell.g.second, 3); | |
| pair = new li_attribute_template.pair_intint(4, 5); | |
| chell.g = pair; | |
| rassert(chell.g.first, 4); | |
| rassert(chell.g.second, 5); | |
| chell.g.first = 6; | |
| chell.g.second = 7; | |
| rassert(chell.g.first, 6); | |
| rassert(chell.g.second, 7); |