@@ -94,6 +94,9 @@ def largeNatTests : TestSeq :=
9494def hashMapEq (m1 m2 : Std.HashMap Nat Nat) : Bool :=
9595 m1.size == m2.size && m1.toList.all fun (k, v) => m2.get? k == some v
9696
97+ def dHashMapRawEq (m1 m2 : DHashMapRaw Nat (fun _ => Nat)) : Bool :=
98+ m1.size == m2.size && m1.toList.all fun ⟨k, v⟩ => m2.get? k == some v
99+
97100def assocListEq (l1 l2 : AssocList Nat (fun _ => Nat)) : Bool :=
98101 let toSimpleList (l : AssocList Nat (fun _ => Nat)) : List (Nat × Nat) :=
99102 l.toList.map fun ⟨k, v⟩ => (k, v)
@@ -111,6 +114,14 @@ def hashMapTests : TestSeq :=
111114 test "HashMap empty" (hashMapEq (roundtripHashMapNatNat {}) {}) ++
112115 test "HashMap single" (hashMapEq (roundtripHashMapNatNat (({} : Std.HashMap Nat Nat).insert 1 42 )) (({} : Std.HashMap Nat Nat).insert 1 42 ))
113116
117+ def dHashMapRawTests : TestSeq :=
118+ let emptyMap : DHashMapRaw Nat (fun _ => Nat) := {}
119+ let single : DHashMapRaw Nat (fun _ => Nat) := ({} : DHashMapRaw Nat (fun _ => Nat)).insert 1 42
120+ let double : DHashMapRaw Nat (fun _ => Nat) := (({} : DHashMapRaw Nat (fun _ => Nat)).insert 1 42 ).insert 2 99
121+ test "DHashMapRaw empty" (dHashMapRawEq (roundtripDHashMapRawNatNat emptyMap) emptyMap) ++
122+ test "DHashMapRaw single" (dHashMapRawEq (roundtripDHashMapRawNatNat single) single) ++
123+ test "DHashMapRaw double" (dHashMapRawEq (roundtripDHashMapRawNatNat double) double)
124+
114125def boolTests : TestSeq :=
115126 test "Bool true" (roundtripBool true == true ) ++
116127 test "Bool false" (roundtripBool false == false )
@@ -122,6 +133,7 @@ public def suite : List TestSeq := [
122133 largeNatTests,
123134 assocListTests,
124135 hashMapTests,
136+ dHashMapRawTests,
125137 boolTests,
126138 checkIO "Nat roundtrip" (∀ n : Nat, roundtripNat n == n),
127139 checkIO "String roundtrip" (∀ s : String, roundtripString s == s),
@@ -131,6 +143,9 @@ public def suite : List TestSeq := [
131143 checkIO "Point roundtrip" (∀ p : Point, roundtripPoint p == p),
132144 checkIO "NatTree roundtrip" (∀ t : NatTree, roundtripNatTree t == t),
133145 checkIO "HashMap Nat Nat roundtrip" (∀ m : Std.HashMap Nat Nat, hashMapEq (roundtripHashMapNatNat m) m),
146+ checkIO "DHashMapRaw Nat Nat roundtrip" (∀ m : Std.HashMap Nat Nat,
147+ let raw := m.toList.foldl (init := ({} : DHashMapRaw Nat (fun _ => Nat))) fun acc (k, v) => acc.insert k v
148+ dHashMapRawEq (roundtripDHashMapRawNatNat raw) raw),
134149]
135150
136151end Tests.FFI.Basic
0 commit comments