1include <../std.scad>
 2include <../structs.scad>
 3
 4
 5module test_struct_set() {
 6    st = struct_set([], "Foo", 42);
 7    assert(st == [["Foo",42]]);
 8    st2 = struct_set(st, "Bar", 28);
 9    assert(st2 == [["Foo",42],["Bar",28]]);
10    st3 = struct_set(st2, "Foo", 91);
11    assert(st3 == [["Bar",28],["Foo",91]]);
12    st4 = struct_set(st3, [3,4,5,6]);
13    assert(st4 == [["Bar", 28],["Foo",91],[3,4],[5,6]]);
14    st5 = struct_set(st3, [[3,4],[5,6]]);
15    assert(st5 == [["Bar", 28],["Foo",91],[[3,4],[5,6]]]);
16    st6 = struct_set(st3, [3,4],true);
17    assert(st6 == [["Bar", 28],["Foo",91],[[3,4],true]]);
18    st7 = struct_set(st3, [3,4,[5,7],99]);
19    assert(st7 == [["Bar", 28],["Foo",91],[3,4],[[5,7],99]]);
20    st8 = struct_set(st3,[]);
21    assert(st8==st3);
22}
23test_struct_set();
24
25
26module test_struct_remove() {
27    st = [["Foo",91],["Bar",28],["Baz",9]];
28    assert(struct_remove(st, "Foo") == [["Bar",28],["Baz",9]]);
29    assert(struct_remove(st, "Bar") == [["Foo",91],["Baz",9]]);
30    assert(struct_remove(st, "Baz") == [["Foo",91],["Bar",28]]);
31    assert(struct_remove(st, ["Baz","Baz"]) == [["Foo",91],["Bar",28]]);
32    assert(struct_remove(st, ["Baz","Foo"]) == [["Bar",28]]);
33    assert(struct_remove(st, []) == st);
34    assert(struct_remove(st, struct_keys(st)) == []);
35}
36test_struct_remove();
37
38
39module test_struct_val() {
40    st = [["Foo",91],["Bar",28],[true,99],["Baz",9],[[5,4],3], [7,92]];
41    assert(struct_val(st,"Foo") == 91);
42    assert(struct_val(st,"Bar") == 28);
43    assert(struct_val(st,"Baz") == 9);
44    assert(struct_val(st,"Baz",5) == 9);
45    assert(struct_val(st,"Qux") == undef);
46    assert(struct_val(st,"Qux",5) == 5);
47    assert(struct_val(st,[5,4])==3);
48    assert(struct_val(st,true)==99);
49    assert(struct_val(st,5) == undef);
50    assert(struct_val(st,7) == 92);
51}
52test_struct_val();
53
54
55module test_struct_keys() {
56    assert(struct_keys([["Foo",3],["Bar",2],["Baz",1]]) == ["Foo","Bar","Baz"]);
57    assert(struct_keys([["Zee",1],["Why",2],["Exx",3]]) == ["Zee","Why","Exx"]);
58    assert(struct_keys([["Zee",1],[[3,4],2],["Why",2],[9,1],["Exx",3]]) == ["Zee",[3,4],"Why",9,"Exx"]);    
59}
60test_struct_keys();
61
62
63module test_echo_struct() {
64    // Can't yet test echo output
65}
66test_echo_struct();
67
68
69module test_is_struct() {
70    assert(is_struct([["Foo",1],["Bar",2],["Baz",3]]));
71    assert(!is_struct([["Foo"],["Bar"],["Baz"]]));
72    assert(!is_struct(["Foo","Bar","Baz"]));
73    assert(!is_struct([3,4,5]));
74    assert(!is_struct(3));
75    assert(!is_struct(true));
76    assert(!is_struct("foo"));
77    assert(is_struct([]));
78}
79test_is_struct();
80
81
82// vim: expandtab tabstop=4 shiftwidth=4 softtabstop=4 nowrap