Files
sml-projects/shf/test/regression-tests.sml
Humza Shahid 6b91d64fc3 Add 'shf/' from commit 'b6c5a95b664aeb861d7b33ffc9eefe447ba99dd7'
git-subtree-dir: shf
git-subtree-mainline: 401408448f
git-subtree-split: b6c5a95b66
2026-04-24 00:27:49 +01:00

83 lines
2.4 KiB
Standard ML

structure RegressionTests =
struct
open Railroad
open Railroad.Test
fun updateLoop (pos, str, app) =
if pos = String.size str then
app
else
let
val chr = String.sub (str, pos)
val () = ExceptionLogger.addCommand (InputMsg.CHAR_EVENT chr)
val app = TestUtils.update (app, InputMsg.CHAR_EVENT chr)
in
updateLoop (pos + 1, str, app)
end
fun appFromText text = TestUtils.init text
fun loadFromFile (io, acc) =
case TextIO.inputLine io of
SOME line => loadFromFile (io, acc ^ line)
| NONE => acc
val initialText =
let
val io = TextIO.openIn "temp.txt"
val str = loadFromFile (io, "")
val () = TextIO.closeIn io
in
str
end
val charEventTests = describe "CHAR_EVENT regressions"
[ test "SearchList.goToNum vector bounds regression (1)" (fn _ =>
let
val app = TestUtils.init initialText
val history = "G12dk"
val newApp = TestUtils.updateMany (app, history)
in
(* just expect that we do not fail or throw an exception *)
Expect.isTrue true
end)
, test "No error raised when moving cursor up/down after deleting" (fn _ =>
let
val app = TestUtils.init initialText
val history =
"16G18ddjjjjjjjjjdkdkdkjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj"
val newApp = TestUtils.updateMany (app, history)
in
Expect.isTrue true
end)
, test
"SearchList.buildRange does not cause exception \
\when deleting (1)"
(fn _ =>
let
val app = TestUtils.init "h ello world\n"
(* search *)
val search = "/ello"
val app = TestUtils.updateMany (app, search)
val app = TestUtils.update (app, InputMsg.KEY_ENTER)
(* move and then delete twice *)
val app = TestUtils.updateMany (app, "edede")
in
Expect.isTrue true
end)
, test
"DfaGen does not cause exception \
\when parsing alternation that contains a char \
\from the previous alternation (1)"
(fn _ =>
(let val dfa = CaseSensitiveDfa.fromString "str|s"
in Expect.isTrue true
end)
handle _ => Expect.isTrue false)
]
val tests = [charEventTests]
end