diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/arrays.nl | 33 | ||||
| -rw-r--r-- | test/enums.nl | 20 | ||||
| -rw-r--r-- | test/integers.nl | 33 | ||||
| -rw-r--r-- | test/structs.nl | 52 |
4 files changed, 138 insertions, 0 deletions
diff --git a/test/arrays.nl b/test/arrays.nl new file mode 100644 index 00000000..5484d5e2 --- /dev/null +++ b/test/arrays.nl @@ -0,0 +1,33 @@ +>> [:Num32] += [] : [Num32] + +>> arr := [10, 20, 30] += [10, 20, 30] + +>> arr[1] += 10 +>> arr[-1] += 30 + +sum := 0 +for x in arr + sum += x +>> sum += 60 + +str := "" +for i,x in arr + str ++= "({i},{x})" +>> str += "(1,10)(2,20)(3,30)" + +>> arr2 := [10, 20] ++ [30, 40] += [10, 20, 30, 40] + +>> arr2 ++= [50, 60] +>> arr2 += [10, 20, 30, 40, 50, 60] + +>> arr2 ++= 70 +>> arr2 += [10, 20, 30, 40, 50, 60, 70] diff --git a/test/enums.nl b/test/enums.nl new file mode 100644 index 00000000..8ba90fe6 --- /dev/null +++ b/test/enums.nl @@ -0,0 +1,20 @@ +enum Foo(Zero, One(x:Int), Two(x,y:Int)) + +>> Foo__Zero() += Foo.Zero() +>> Foo__One(123) += Foo.One(x=123) +>> Foo__Two(123, 456) += Foo.Two(x=123, y=456) + +>> Foo__One(10) == Foo__One(10) += yes + +>> Foo__One(10) == Foo__Zero() += no + +>> Foo__One(10) == Foo__One(-1) += no + +>> Foo__One(10) < Foo__Two(1, 2) += yes diff --git a/test/integers.nl b/test/integers.nl new file mode 100644 index 00000000..c20d08e6 --- /dev/null +++ b/test/integers.nl @@ -0,0 +1,33 @@ + +>> 2 + 3 += 5 + +>> 2 * 3 += 6 + +>> 2 + 3 * 4 += 14 + +>> 2 * 3 + 4 += 10 + +>> 1i8 + 2i16 += 3_i16 + +>> 2 ^ 10 += 1024 : Num64 + +>> 3 and 2 += 2 + +>> 3 or 4 += 7 + +>> 3 xor 2 += 1 + +nums := "" +for x in 5 + nums ++= "{x}," +>> nums += "1,2,3,4,5," diff --git a/test/structs.nl b/test/structs.nl new file mode 100644 index 00000000..a9bb545f --- /dev/null +++ b/test/structs.nl @@ -0,0 +1,52 @@ + +struct Pair(x,y:Int) +struct Mixed(x:Int, str:Str) + +func test_literals() + >> x := Pair(10, 20) + = Pair(x=10, y=20) + >> y := Pair(y=20, 10) + = Pair(x=10, y=20) + >> x == y + = yes + >> x == Pair(-1, -2) + = no +test_literals() + +func test_metamethods() + >> x := Pair(10, 20) + >> y := Pair(100, 200) + >> x == y + = no + >> x == Pair(10, 20) + = yes + >> x == Pair(10, 30) + = no + + >> x < Pair(11, 20) + = yes + >> t2 := {x=> "found"; default="missing"} + >> t2[x] + = "found" + >> t2[y] + = "missing" +test_metamethods() + +func test_mixed() + >> x := Mixed(10, "Hello") + >> y := Mixed(99, "Hello") + >> x == y + = no + >> x == Mixed(10, "Hello") + = yes + >> x == Mixed(10, "Bye") + = no + >> x < Mixed(11, "Hello") + = yes + >> t := {x=> "found"; default="missing"} + >> t[x] + = "found" + >> t[y] + = "missing" +test_mixed() + |
