From 5503b8ebda96a61fb2924cb8290bd19c6cbe691e Mon Sep 17 00:00:00 2001 From: Humza Shahid Date: Fri, 26 Sep 2025 05:27:48 +0100 Subject: [PATCH] add failing test for 'dw' motion --- test/normal-delete.sml | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/test/normal-delete.sml b/test/normal-delete.sml index d2b2f38..86041c0 100644 --- a/test/normal-delete.sml +++ b/test/normal-delete.sml @@ -855,5 +855,31 @@ struct end) ] - val tests = [dhDelete, dlDelete, djDelete, ddDelete, dkDelete] + val dwDelete = describe "delete motion 'dw'" + [test + "deletes last char and moves cursor back by one \ + \when used on last char of last word in buffer" + (fn _ => + let + (* arrange *) + val originalString = "hello world\n" + val originalIdx = String.size originalString - 2 + + val app = TestUtils.init originalString + val app = AppWith.idx (app, originalIdx) + + (* act *) + val {buffer, cursorIdx, ...} = TestUtils.updateMany (app, "dw") + + (* assert *) + val expectedString = "hello worl\n" + val actualString = LineGap.toString buffer + + val expectedIdx = String.size expectedString - 2 + in + Expect.isTrue + (expectedString = actualString andalso expectedIdx = cursorIdx) + end)] + + val tests = [dhDelete, dlDelete, djDelete, ddDelete, dkDelete, dwDelete] end