(use gap-buffer test) (define data "aaaaa\nbbbbb\nccccc\nddddd\neeeee\nffff\nggggg\nhhhhh\niiiii\njjjjj\nkkkkk\nlllll\n") (define buffer (make-gap-buffer data)) (test-begin "gap-buffer") (test "Basic gb->string test" data (gb->string buffer)) (test "Basic gb->lines test" (append (string-split data "\n") (list "")) (gb->lines buffer)) (test "Checking whether point is at point max" (+ 1 (string-length data)) (gb-point buffer)) (test "Checking point min" 1 (gb-point-min buffer)) (test "Basic gb-goto-char test" 1 (begin (gb-goto-char buffer 1) (gb-point buffer))) ;; Breaks on CHICKENs that don't have the fix for #1135 (test "Checking buffer content after moving point" data (gb->string buffer)) (test "Checking point-max after moving point" (+ 1 (string-length data)) (gb-point-max buffer)) (test "Basic gb-insert-char! test" (string-append "x" data) (begin (gb-goto-char buffer (gb-point-min buffer)) (gb-insert-char! buffer #\x) (gb->string buffer))) ;; Delete char (x) inserted at previous test (test "Basic gb-delete-char! (backward) test" data (begin (gb-delete-char! buffer -1) (gb->string buffer))) ;; Delete forward (test "Basic gb-delete-char! (forward) test" (substring data 1) (begin (gb-delete-char! buffer 1) (gb->string buffer))) ;; Reset the buffer content to the original state and prepend "x" (test "Basic gb-insert-string! test" (string-append "x" data) (begin (gb-goto-char buffer (gb-point-min buffer)) (gb-insert-string! buffer "xa") (gb->string buffer))) (test "Basic gb-erase! test" "" (begin (gb-erase! buffer) (gb->string buffer))) (test "Checking point-min after erasing buffer" 1 (gb-point-min buffer)) (test "Checking point-max after erasing buffer" 1 (gb-point-max buffer)) (test "Basic gb-filter! test" data (begin (gb-insert-string! buffer data) (gb-filter! buffer (lambda (content) content)) (gb->string buffer))) (test "Point position after gb-filter!" (gb-point-max buffer) (gb-point buffer)) (test "Basic gb-filter-lines! test" (append (cdr (string-split data "\n")) (list "")) (begin (gb-filter-lines! buffer (lambda (lines) (cdr lines))) (gb->lines buffer))) (test "Point position after gb-filter-lines!" (gb-point-max buffer) (gb-point buffer)) (test-end "gap-buffer")