added tests for 'PersistentVector.splitLeft' function

This commit is contained in:
2026-01-16 21:30:56 +00:00
parent 47cf451501
commit 08abb43e3b
2 changed files with 116 additions and 23 deletions

View File

@@ -166,7 +166,8 @@ struct
]
val splitLeftTests = describe "PersistentVector.splitLeft"
[test "returns same vector when split idx is greater than any idx in vector"
[ test
"returns same vector when split idx is greater than any idx in vector"
(fn _ =>
let
(* arrange *)
@@ -189,7 +190,99 @@ struct
val outputList = PersistentVector.toList pv
in
Expect.isTrue (inputList = outputList)
end)]
end)
, test "removes last element when split idx is = to last element" (fn _ =>
let
(* arrange *)
val inputList =
[ {start = 1, finish = 1}
, {start = 2, finish = 2}
, {start = 3, finish = 3}
, {start = 4, finish = 4}
, {start = 5, finish = 5}
, {start = 6, finish = 6}
, {start = 7, finish = 7}
, {start = 8, finish = 8}
]
val pv = PersistentVector.fromList inputList
(* act *)
val pv = PersistentVector.splitLeft (8, pv)
(* assert *)
val outputList = PersistentVector.toList pv
val expectedOutput =
[ {start = 1, finish = 1}
, {start = 2, finish = 2}
, {start = 3, finish = 3}
, {start = 4, finish = 4}
, {start = 5, finish = 5}
, {start = 6, finish = 6}
, {start = 7, finish = 7}
]
in
Expect.isTrue (outputList = expectedOutput)
end)
, test "removes all elements when split idx = first element" (fn _ =>
let
(* arrange *)
val inputList =
[ {start = 1, finish = 1}
, {start = 2, finish = 2}
, {start = 3, finish = 3}
, {start = 4, finish = 4}
, {start = 5, finish = 5}
, {start = 6, finish = 6}
, {start = 7, finish = 7}
, {start = 8, finish = 8}
]
val pv = PersistentVector.fromList inputList
(* act *)
val pv = PersistentVector.splitLeft (1, pv)
(* assert *)
val outputList = PersistentVector.toList pv
val expectedOutput = []
in
Expect.isTrue (outputList = expectedOutput)
end)
, test
"removes element whose start and finish is in range \
\of the split idx, and removes all elements after it too"
(fn _ =>
let
(* arrange *)
val inputList =
[ {start = 1, finish = 1}
, {start = 2, finish = 2}
, {start = 3, finish = 3}
, {start = 4, finish = 4}
, {start = 5, finish = 155}
, {start = 200, finish = 200}
, {start = 210, finish = 210}
, {start = 220, finish = 220}
, {start = 230, finish = 230}
, {start = 240, finish = 240}
, {start = 250, finish = 250}
]
val pv = PersistentVector.fromList inputList
(* act *)
val pv = PersistentVector.splitLeft (7, pv)
(* assert *)
val outputList = PersistentVector.toList pv
val expectedOutput =
[ {start = 1, finish = 1}
, {start = 2, finish = 2}
, {start = 3, finish = 3}
, {start = 4, finish = 4}
]
in
Expect.isTrue (outputList = expectedOutput)
end)
]
val tests = [appendTests, toListTests, splitLeftTests]
end

View File

@@ -1,3 +1,3 @@
# To-do list
- Test `PersistentVector.splitLeft`
- Implement `PersistentVector.delete` and test it
- Implement 'yj' motion and add tests for it