aboutsummaryrefslogtreecommitdiff
path: root/test/structs.nl
diff options
context:
space:
mode:
Diffstat (limited to 'test/structs.nl')
-rw-r--r--test/structs.nl52
1 files changed, 52 insertions, 0 deletions
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()
+