Add tests for gap-buffer manipulation

This commit is contained in:
Renaud Casenave-Péré 2025-08-30 16:43:13 +02:00
parent 268c85372e
commit f758ef3730

View file

@ -2,3 +2,43 @@
(ql:quickload :fiveam) (ql:quickload :fiveam)
(use-package :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)