mirror of
https://github.com/janet-lang/janet
synced 2025-10-16 16:27:40 +00:00
Initial struct prototype code.
Also add a number of cfunctions for manipulating structs with prototypes.
This commit is contained in:
@@ -161,4 +161,22 @@
|
||||
([err] :caught))))
|
||||
"regression #638"))
|
||||
|
||||
# Struct prototypes
|
||||
(def x (struct/with-proto {1 2 3 4} 5 6))
|
||||
(def y (-> x marshal unmarshal))
|
||||
(def z {1 2 3 4})
|
||||
(assert (= x y) "struct proto marshal equality 1")
|
||||
(assert (= (getproto x) (getproto y)) "struct proto marshal equality 2")
|
||||
(assert (= 0 (cmp x y)) "struct proto comparison 1")
|
||||
(assert (= 0 (cmp (getproto x) (getproto y))) "struct proto comparison 2")
|
||||
(assert (not= (cmp x z) 0) "struct proto comparison 3")
|
||||
(assert (not= (cmp y z) 0) "struct proto comparison 4")
|
||||
(assert (not= x z) "struct proto comparison 5")
|
||||
(assert (not= y z) "struct proto comparison 6")
|
||||
(assert (= (x 5) 6) "struct proto get 1")
|
||||
(assert (= (y 5) 6) "struct proto get 1")
|
||||
(assert (deep= x y) "struct proto deep= 1")
|
||||
(assert (deep-not= x z) "struct proto deep= 2")
|
||||
(assert (deep-not= y z) "struct proto deep= 3")
|
||||
|
||||
(end-suite)
|
||||
|
Reference in New Issue
Block a user