2026-01-15 12:49:02 +00:00
|
|
|
structure PersistentVectorTests =
|
|
|
|
|
struct
|
|
|
|
|
open Railroad
|
|
|
|
|
open Railroad.Test
|
|
|
|
|
|
|
|
|
|
fun isNotInRange (lst, pv) =
|
|
|
|
|
let
|
|
|
|
|
fun loopNotInRange lst =
|
|
|
|
|
case lst of
|
|
|
|
|
hd :: tl =>
|
|
|
|
|
if PersistentVector.isInRange (hd, pv) then
|
|
|
|
|
let
|
|
|
|
|
val msg =
|
|
|
|
|
"idx " ^ Int.toString hd
|
|
|
|
|
^ " is in range when it shouldn't be\n"
|
|
|
|
|
val () = print msg
|
|
|
|
|
in
|
|
|
|
|
Expect.isTrue false
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
loopNotInRange tl
|
|
|
|
|
| [] => Expect.isTrue true
|
|
|
|
|
in
|
|
|
|
|
loopNotInRange lst
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
fun isInRange (lst, pv) =
|
|
|
|
|
let
|
|
|
|
|
fun loopInRange lst =
|
|
|
|
|
case lst of
|
|
|
|
|
hd :: tl =>
|
|
|
|
|
if PersistentVector.isInRange (hd, pv) then
|
|
|
|
|
loopInRange tl
|
|
|
|
|
else
|
|
|
|
|
let
|
|
|
|
|
val msg =
|
|
|
|
|
"idx " ^ Int.toString hd
|
|
|
|
|
^ " is not in range when it should be\n"
|
|
|
|
|
val () = print msg
|
|
|
|
|
in
|
|
|
|
|
Expect.isTrue false
|
|
|
|
|
end
|
|
|
|
|
| [] => Expect.isTrue true
|
|
|
|
|
in
|
|
|
|
|
loopInRange lst
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
val initial =
|
|
|
|
|
let
|
|
|
|
|
val f = PersistentVector.append
|
|
|
|
|
val pv = PersistentVector.empty
|
|
|
|
|
|
|
|
|
|
val pv = f (1, 3, pv)
|
|
|
|
|
val pv = f (5, 7, pv)
|
|
|
|
|
val pv = f (9, 13, pv)
|
|
|
|
|
val pv = f (19, 27, pv)
|
|
|
|
|
val pv = f (33, 33, pv)
|
|
|
|
|
in
|
|
|
|
|
pv
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
val tests = []
|
|
|
|
|
end
|