diff --git a/src/jolt/core.janet b/src/jolt/core.janet index 9f44e18..90eebf1 100644 --- a/src/jolt/core.janet +++ b/src/jolt/core.janet @@ -87,7 +87,10 @@ (set ok (if (phm? a) (deep= (phm-to-struct a) (if (phm? b) (phm-to-struct b) b)) - (if (phm? b) (deep= a (phm-to-struct b)) (deep= a b))))) + (if (phm? b) (deep= a (phm-to-struct b)) + (if (set? a) + (deep= (phs-to-struct a) (if (set? b) (phs-to-struct b) b)) + (if (set? b) (deep= a (phs-to-struct b)) (deep= a b))))))) (++ i)) ok))) diff --git a/src/jolt/phm.janet b/src/jolt/phm.janet index ee8fca0..13c29f1 100644 --- a/src/jolt/phm.janet +++ b/src/jolt/phm.janet @@ -194,3 +194,6 @@ (defn phs-get [s x &opt default] (default default nil) (if (phm-contains? (s :phm) x) x default)) + +(defn phs-to-struct [s] + (phm-to-struct (s :phm))) diff --git a/test/phase7-test.janet b/test/phase7-test.janet index d715674..ba01edc 100644 --- a/test/phase7-test.janet +++ b/test/phase7-test.janet @@ -19,7 +19,7 @@ (assert (= false (ct-eval ctx "(set? [1 2 3])")) "set? false") (assert (= 4 (ct-eval ctx "(count (conj #{1 2 3} 4))")) "conj add") (assert (= 2 (ct-eval ctx "(count (disj #{1 2 3} 3))")) "disj") - (assert (= 3 (ct-eval ctx "(count #{1 2 3})")) "count")) -(print " passed") + (assert (= 3 (ct-eval ctx "(count #{1 2 3})")) "count") + (assert (= true (ct-eval ctx "(= #{1 2 3} #{3 2 1})")) "= order-independent")) (print "\nAll Phase 7 tests passed!")