code / tomo

Lines41.3K C23.7K Markdown9.7K YAML5.0K Tomo2.3K
7 others 763
Python231 Shell230 make212 INI47 Text21 SVG16 Lua6
(99 lines)
1 func main()
2 t := {"one": 1, "two": 2}
3 assert t == {"one": 1, "two": 2}
5 assert t["one"] == 1
6 assert t["two"] == 2
7 assert t["???"] == none
8 assert t["one"]! == 1
9 assert t["???"] or -1 == -1
11 t_str := ""
12 for k,v in t
13 t_str ++= "($k=$v)"
14 assert t_str == "(one=1)(two=2)"
16 assert t.length == 2
17 assert t.fallback == none
19 assert t.keys == ["one", "two"]
20 assert t.values == [1, 2]
22 t2 := {"three": 3; fallback=t}
23 assert t2 == {"three": 3; fallback={"one": 1, "two": 2}}
25 assert t2["one"] == 1
26 assert t2["three"] == 3
27 assert t2["???"] == none
29 assert t2.length == 1
30 assert t2.fallback == {"one": 1, "two": 2}
32 t2_str := ""
33 for k,v in t2
34 t2_str ++= "($k=$v)"
35 assert t2_str == "(three=3)"
37 assert {i: 10*i for i in 5} == {1: 10, 2: 20, 3: 30, 4: 40, 5: 50}
38 assert {i: 10*i for i in 5 if i mod 2 != 0} == {1: 10, 3: 30, 5: 50}
39 assert {x: 10*x for x in y if x > 1 for y in [3, 4, 5] if y < 5} == {2: 20, 3: 30, 4: 40}
41 >> t3 := @{1: 10, 2: 20, 3: 30}
42 >> t3.remove(3)
43 assert t3[] == {1: 10, 2: 20}
45 do
46 >> plain := {1: 10, 2: 20, 3: 30}
47 assert plain[2]! == 20
48 assert plain[2]! == 20
49 assert plain[456] or -999 == -999
50 assert plain.has(2) == yes
51 assert plain.has(456) == no
53 >> fallback := {4: 40; fallback=plain}
54 assert fallback.has(1) == yes
55 assert fallback[1] or -999 == 10
57 do
58 >> t4 := &{"one": 1}
59 >> t4["one"] = 999
60 >> t4["two"] = 222
61 assert t4[] == {"one": 999, "two": 222}
63 do
64 assert {1: 1, 2: 2} == {2: 2, 1: 1}
65 assert {1: 1, 2: 2} != {1: 1, 2: 999}
67 assert ({1: 1, 2: 2} <> {2: 2, 1: 1}) == Int32(0)
68 ints : [{Int:Int}] = [{}, {0: 0}, {99: 99}, {1: 1, 2: 2, 3: 3}, {1: 1, 99: 99, 3: 3}, {1: 1, 2: -99, 3: 3}, {1: 1, 99: -99, 3: 4}]
69 assert ints.sorted() == [{}, {0: 0}, {1: 1, 2: -99, 3: 3}, {1: 1, 2: 2, 3: 3}, {1: 1, 99: 99, 3: 3}, {1: 1, 99: -99, 3: 4}, {99: 99}]
71 do
72 # Default values:
73 counter := &{"x": 10; default=0}
74 assert counter["x"] == 10
75 assert counter["y"] == 0
76 assert counter.has("x") == yes
77 assert counter.has("y") == no
79 >> counter["y"] += 1
81 do
82 # Set operations
83 a := {"A":1, "B":2, "C":3}
84 b := {"B":2, "C":30, "D":40}
85 assert a.with(b) == {"A":1, "B":2, "C":30, "D":40}
86 assert a.with(b) == a ++ b
87 assert a.intersection(b) == {"B":2}
88 assert a.difference(b) == {"A":1, "D":40}
89 assert a.without(b) == {"A":1, "C":3}
91 do
92 # Set operations with sets
93 a := {"A", "B", "C"}
94 b := {"B", "C", "D"}
95 assert a.with(b) == {"A", "B", "C", "D"}
96 assert a.with(b) == a ++ b
97 assert a.intersection(b) == {"B", "C"}
98 assert a.difference(b) == {"A", "D"}
99 assert a.without(b) == {"A"}