diff --git a/sextant-tests.lisp b/sextant-tests.lisp index 0b5e223..c557243 100644 --- a/sextant-tests.lisp +++ b/sextant-tests.lisp @@ -2,3 +2,43 @@ (ql:quickload :fiveam) (use-package :fiveam) +(use-package :editor) + +(def-suite all-tests) + +(def-suite gap-buffer :in all-tests) +(in-suite gap-buffer) + +(defparameter gb (make-gap-buffer "abcdefghijklmnopqrstuvwxyz")) +(test make-gap-buffer + (is (equal "#S(GAP-BUFFER \"abcdefghijklmnopqrstuvwxyz[26-90(64)]\")" (gap-buffer-print gb)))) + +(test move-gap + (is (equal "#S(GAP-BUFFER \"abcdefghijklmno[15-79(64)]pqrstuvwxyz\")" (gap-buffer-print (gap-buffer-move-gap gb 15)))) + (is (equal "#S(GAP-BUFFER \"ab[2-66(64)]cdefghijklmnopqrstuvwxyz\")" (gap-buffer-print (gap-buffer-move-gap gb 2))))) + +(test insert-string + (is (equal "#S(GAP-BUFFER \"ab123456789[11-66(55)]cdefghijklmnopqrstuvwxyz\")" (gap-buffer-print (gap-buffer-insert-string gb "123456789")))) + (is (equal "#S(GAP-BUFFER \"ab123456789pyfgcrlaoeuidhtns[28-66(38)]cdefghijklmnopqrstuvwxyz\")" (gap-buffer-print (gap-buffer-insert-string gb "pyfgcrlaoeuidhtns")))) + (is (equal "#S(GAP-BUFFER \"ab123456789pyfgcrlaoeuidhtns;qjkxbmwvzlrcgpoaeusnth[51-66(15)]cdefghijklmnopqrstuvwxyz\")" (gap-buffer-print (gap-buffer-insert-string gb ";qjkxbmwvzlrcgpoaeusnth")))) + (is (equal "#S(GAP-BUFFER \"ab123456789pyfgcrlaoeuidhtns;qjkxbmwvzlrcgpoaeusnth0123456789[61-66(5)]cdefghijklmnopqrstuvwxyz\")" (gap-buffer-print (gap-buffer-insert-string gb "0123456789"))))) + +(test grow-gap + (is (equal "#S(GAP-BUFFER \"ab123456789pyfgcrlaoeuidhtns;qjkxbmwvzlrcgpoaeusnth01234567899876543210abcdefghij[81-145(64)]cdefghijklmnopqrstuvwxyz\")" (gap-buffer-print (gap-buffer-insert-string gb "9876543210abcdefghij"))))) + +(test delete + (is (equal "#S(GAP-BUFFER \"ab123456789pyfgcrlaoeuidhtns;qjkxbmwvzlrcgpoaeusnth01234567899876543210abcdefghij[81-148(67)]fghijklmnopqrstuvwxyz\")" (gap-buffer-print (gap-buffer-delete gb 3 :after)))) + (is (equal "#S(GAP-BUFFER \"ab123456789pyfgcrlaoeuidhtns;qjkxbmwvzlrcgpoaeusnth01234567899876543210abcdefghij[81-169(88)]\")" (gap-buffer-print (gap-buffer-delete gb 23 :after)))) + (is (equal "#S(GAP-BUFFER \"ab123456789pyfgcrlaoeuidhtns;qjkxbmwvzlrcgpoaeusnth01234567899876543210abcdefghij[81-169(88)]\")" (gap-buffer-print (gap-buffer-delete gb 23 :after)))) + (is (equal "#S(GAP-BUFFER \"ab123456789pyfgcrlaoeuidhtns;qjkxbmwvzlrcgpoaeusnth0123456[58-169(111)]\")" (gap-buffer-print (gap-buffer-delete gb 23)))) + (is (equal "#S(GAP-BUFFER \"ab123456789pyfgcrlaoeuidhtns;qjkxbm[35-169(134)]\")" (gap-buffer-print (gap-buffer-delete gb 23)))) + (is (equal "#S(GAP-BUFFER \"ab123456789p[12-169(157)]\")" (gap-buffer-print (gap-buffer-delete gb 23)))) + (is (equal "#S(GAP-BUFFER \"[0-169(169)]\")" (gap-buffer-print (gap-buffer-delete gb 23))))) + +(test insert-string-move-gap + (is (equal "#S(GAP-BUFFER \"abcdefghijklmnopqrstuvwxyz[26-169(143)]\")" (gap-buffer-print (gap-buffer-insert-string gb "abcdefghijklmnopqrstuvwxyz")))) + (is (equal "#S(GAP-BUFFER \"[0-143(143)]abcdefghijklmnopqrstuvwxyz\")" (gap-buffer-print (gap-buffer-move-gap gb 0)))) + (is (equal "#S(GAP-BUFFER \"0123456789[10-143(133)]abcdefghijklmnopqrstuvwxyz\")" (gap-buffer-print (gap-buffer-insert-string gb "0123456789")))) + (is (equal "#S(GAP-BUFFER \"0123456789abcdefghijklmnopqrstuvwxyz[36-169(133)]\")" (gap-buffer-print (gap-buffer-move-gap gb 200))))) + +(run! 'all-tests)