Commit Graph

217 Commits

Author SHA1 Message Date
10b76d98c5 functorise some boilerplate code to start a DFA loop 2025-07-20 09:39:17 +01:00
25fb8bfc5e make DFA for vi next WORD motion, still passing tests 2025-07-20 09:12:23 +01:00
aa068ea48e remove some opaque signature ascriptions 2025-04-22 20:49:56 +01:00
e59a1c67d8 begin scaffolding for adding deletion tests 2025-03-23 07:47:38 +00:00
cbc1359de1 add tests for cursor movement 'gg', which means all cursor movements have tests now. Next: add tests for delete motions. 2025-03-22 20:58:39 +00:00
dc3c1340bf add tests for 'F' motion 2025-03-22 13:50:24 +00:00
8fa5677d4d add tests for 'f' motion 2025-03-22 13:41:50 +00:00
87272a2667 add tests for 'T' motion 2025-03-22 13:09:50 +00:00
9eae0c2d48 begin adding multi-char tests (for motions such as 't<char>') 2025-03-22 06:13:01 +00:00
884c5fa08d pull new update from lib/brolib-sml 2025-03-22 05:31:58 +00:00
649bcb66e1 a bit of refactoring to allow addition of more tests 2025-03-22 05:18:25 +00:00
deb24c2063 with cursor movements, instead of passing in functions as parameters (callbacks/higher order functions), functorise the cursor movement functions instead so we can take advantage of defunctorisation and avoid the runtime cost of closures/higher order functions/function pointers 2025-01-09 22:30:51 +00:00
7045b69ce8 eliminate instance of currying/partial application with constant value (a constant mailbox) is shell/shell.sml 2024-12-17 10:55:58 +00:00
90f8732f06 move msgs into AppType.app_type, and refactor AppUpdate.update function to have type (app_type -> app_type) instead of pervious case which was (app_type -> app_type * MailboxType.t list). Reason: no need to allocate/return tuple when can store messages in type directly; previous msg list will be reset after each app update. All tests after refactor are passing. 2024-12-17 10:40:06 +00:00
24cdea7da3 pull in new version of railroad library, and make a one-line change to print exclusively tests that have failed (because terminal output is noisy otherwise) 2024-12-17 09:49:07 +00:00
fa723f27fa basic motion tests done 2024-11-27 10:17:42 +00:00
57f012d655 reimplement vi0 and helper functions so that they are likely faster (vi0 bring cursor to start of current line; before, this was done by checking each character in the string backwards, but now it is done by looking at the line metadata, which is faster for us by some constant factor) 2024-11-26 21:57:02 +00:00
db64917416 add tests for 'E' motion 2024-11-26 11:20:32 +00:00
bc856d3470 add tests for 'e' motion 2024-11-26 11:03:52 +00:00
233a21456d add tests for matching pairs 2024-11-26 00:43:02 +00:00
2cc7bebbd7 add tests for caret ^ motion 2024-11-25 22:13:02 +00:00
c28dc429b7 address todo in text-builder.sml by adding prerequisite: always call SearchList.goToNum before calling TextBuilder.build 2024-11-25 04:37:47 +00:00
d399016c1a add 'SearchList.exists' function to fcore/search-list.sml function, and make sure we check if mmatchedIdx exists before inserting or appending (so we maintain set-like semantics where each number exists only once) 2024-11-24 21:38:58 +00:00
c6343cac40 in fcore/search-list.sml, only call 'insMiddle' function if new value is not in middle 2024-11-24 20:42:17 +00:00
eb3eb6c41f fix bug in '^' motion: only move cursor if (chr = /home/humza/Downloads/sml/shf/fcore/cursor.sml' '), not if Char.isSpace (which also returns true if chr is newline or tab) is true 2024-11-24 20:32:47 +00:00
98f8313141 add motion tests for '$' command 2024-11-24 20:15:07 +00:00
7d73146cf4 remove line breaks between tests in test/test.sml, because more code fits on screen that way, and the differing intentation is enough of a visual sign to mark when new test begins (aside from the 'test' keyword itself) 2024-11-24 19:43:06 +00:00
88ef79ad41 add tests for '0' movement motion 2024-11-24 19:35:47 +00:00
73482a7cc2 give different strings for some tests 2024-11-24 13:43:22 +00:00
d76b753fa7 add tests for 'W' move motion 2024-11-24 12:19:43 +00:00
04d4e013e2 ensure that searchList is deleted from when calling delete functions other than 'helpRemoveChr' 2024-11-23 06:10:40 +00:00
0bfe549e04 add just one more 'word' test, extract steps to delete from search list into a reusable function (don't need to memorise the steps), and fix bug in cursor.sml where we were looking at tl without calculating correct strIdx 2024-11-23 05:16:37 +00:00
4a09a5716d add more 'w'/'word' motion tests 2024-11-19 22:41:07 +00:00
c48eeb07b3 finish testing motions for 'k', meaning tests for hjkl motions are complete (can test other motions like 'w', '0', 'e', etc. next, and then test delete motions after that) 2024-11-19 13:02:13 +00:00
26850da6d3 done testing 'j' motion; next is to test 'k' motion 2024-11-19 06:43:00 +00:00
f6d4b10d44 break test suite in test.sml into more managable chunks (one test per motion) 2024-11-19 06:35:47 +00:00
64eec10049 add tests for 'j' motion 2024-11-19 06:27:38 +00:00
e2dfe25d36 a bit of refactoring in test.sml 2024-11-19 05:51:46 +00:00
96080d0964 a bit of repository management (add Makefile to make it less verbose to run tests, and add .gitignore to avoid committing built binaries) 2024-11-19 04:32:37 +00:00
afcd3ee70b add additional tests for vi's 'h' and 'l' motions 2024-11-19 04:21:54 +00:00
09165b48d9 format test file 2024-11-19 03:53:22 +00:00
d92d3b3a26 add a couple of tests 2024-11-19 03:53:05 +00:00
55c371370f add a couple of tests 2024-11-19 03:48:30 +00:00
ee73a1c858 add Railroad framework as a git submodule properly 2024-11-18 13:50:02 +00:00
b5e1c3757f add unit tests, etc. 2024-11-18 13:47:00 +00:00
ef395feea8 add similar fix described in previous commit to 'moveLeftAndDelete' function 2024-11-18 11:42:23 +00:00
25046dcb88 bug fix to search-list.sml's 'moveRightAndDelete' function by possibly deleting if start > finish, rather than terminating 2024-11-18 11:29:54 +00:00
e90df37b43 in search-list.sml: fix 'delRightFromHere' and 'delLeftFromHere' functions which joined newHd with left/right, rather than the tl, and therefore added new numbers to the list, which is incorrect behaviour. Fixed this by using joining with 'tl' rather than left/right. In build-search-list.sml: make fromRange function return tuple instead of an instance of app. Finally, in app-update.sml: progress towards refactoring 'helpRemoveChr' function to map and delete from searchList as desired. 2024-11-17 09:25:01 +00:00
f7cc2d4740 change 'targetLength' of SearchList.t from 1024 to 32 2024-11-16 19:59:46 +00:00
5e9f118b15 fixed two issues related to insertion in search-list.sml. First issue: in top level 'insert' function, we called 'insLeft' if new value is greater than first value on right, and we called 'insRight' in the opposite case; this is backwards. Second issue: in base cases of 'insLeft' and 'insRight', when we have reached the end of one side of the list, we used to return the same list we got back instead of adding the new value to this end of the list; this is now fixed. 2024-11-16 19:51:29 +00:00