323 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			Scheme
		
	
	
	
			
		
		
	
	
			323 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			Scheme
		
	
	
	
| (import (scheme base)
 | |
|         (picrin readline history)
 | |
|         (picrin test))
 | |
|   
 | |
| (define testfile "picrin_readline_test_file")
 | |
| (test-begin)
 | |
| 
 | |
| (test 0 (history-length))
 | |
| (test 0 (where-history))
 | |
| (add-history "1")
 | |
| (test 1 (history-length))
 | |
| (test 1 (where-history))
 | |
| (let loop ((n 2))
 | |
|   (if (>= 10 n)
 | |
|       (begin
 | |
|         (add-history (number->string n))
 | |
|         (loop (+ n 1)))))
 | |
| #|
 | |
| index     0   1   2   3   4   5   6   7   8   9
 | |
| history  "1" "2" "3" "4" "5" "6" "7" "8" "9" "10"
 | |
| offset    1   2   3   4   5   6   7   8   9   10
 | |
| pos       10  9   8   7   6   5   4   3   2   1
 | |
|                                               p
 | |
| |#
 | |
| (test 10 (history-length))
 | |
| (test 1 (where-history))
 | |
| (stifle-history 7)
 | |
| #|
 | |
| index     0   1   2   3   4   5   6   7   8   9
 | |
| history  "1" "2" "3"|"4" "5" "6" "7" "8" "9" "10"
 | |
| offset    1   2   3   4   5   6   7   8   9   10
 | |
| pos       10  9   8   7   6   5   4   3   2   1
 | |
|                                               p
 | |
| |#
 | |
| (test 10 (history-length))
 | |
| (test 1 (where-history))
 | |
| (test 0 (history-set-pos 0))
 | |
| #|
 | |
| index     0   1   2   3   4   5   6   7   8   9
 | |
| history  "1" "2" "3"|"4" "5" "6" "7" "8" "9" "10"
 | |
| offset    1   2   3   4   5   6   7   8   9   10
 | |
| pos       10  9   8   7   6   5   4   3   2   1
 | |
|           p
 | |
| |#
 | |
| (test 10 (where-history))
 | |
| (add-history "11")
 | |
| #|
 | |
| index     0   1   2   3   4   5    6
 | |
| history  "5" "6" "7" "8" "9" "10" "11"
 | |
| offset    5   6   7   8   9   10   11
 | |
| pos       7   6   5   4   3   2    1
 | |
|                                    p
 | |
| |#
 | |
| (test 7 (history-length))
 | |
| (test 1 (where-history))
 | |
| (test #t (history-stifled?))
 | |
| (unstifle-history)
 | |
| (test #f (history-stifled?))
 | |
| (test 7 (history-length))
 | |
| (test 1 (where-history))
 | |
| (add-history "12")
 | |
| #|
 | |
| index     0   1   2   3   4   5    6    7
 | |
| history  "5" "6" "7" "8" "9" "10" "11" "12"
 | |
| offset    5   6   7   8   9   10   11   12
 | |
| pos       8   7   6   5   4   3    2    1
 | |
|                                         p
 | |
| |#
 | |
| (test 8 (history-length))
 | |
| (test 1 (where-history))
 | |
| (test "12" (current-history))
 | |
| (test 1 (where-history))
 | |
| (test #f (previous-history))
 | |
| #|
 | |
| index     0   1   2   3   4   5    6    7
 | |
| history  "5" "6" "7" "8" "9" "10" "11" "12"
 | |
| index     5   6   7   8   9   10   11   12
 | |
| pos       8   7   6   5   4   3    2    1
 | |
|                                         p
 | |
| |#
 | |
| (test 1 (where-history))
 | |
| (test "11" (next-history))
 | |
| #|
 | |
| index     0   1   2   3   4   5    6    7
 | |
| history  "5" "6" "7" "8" "9" "10" "11" "12"
 | |
| offset    5   6   7   8   9   10   11   12
 | |
| pos       8   7   6   5   4   3    2    1
 | |
|                                    p
 | |
| |#
 | |
| (test 2 (where-history))
 | |
| (test 0 (history-set-pos 5))
 | |
| #|
 | |
| index     0   1   2   3   4   5    6    7
 | |
| history  "5" "6" "7" "8" "9" "10" "11" "12"
 | |
| offset    5   6   7   8   9   10   11   12
 | |
| pos       8   7   6   5   4   3    2    1
 | |
|                               p
 | |
| |#
 | |
| (test 3 (where-history))
 | |
| (test -1 (history-set-pos (history-length)))
 | |
| (test 3 (where-history))
 | |
| (test -1 (history-set-pos -1))
 | |
| (test 3 (where-history))
 | |
| (test 0 (history-set-pos 0))
 | |
| #|
 | |
| index     0   1   2   3   4   5    6    7
 | |
| history  "5" "6" "7" "8" "9" "10" "11" "12"
 | |
| offset    5   6   7   8   9   10   11   12
 | |
| pos       8   7   6   5   4   3    2    1
 | |
|           p
 | |
| |#
 | |
| (test (history-length) (where-history))
 | |
| (test 0 (history-set-pos (- (history-length) 2)))
 | |
| #|
 | |
| index     0   1   2   3   4   5    6    7
 | |
| history  "5" "6" "7" "8" "9" "10" "11" "12"
 | |
| offset    5   6   7   8   9   10   11   12
 | |
| pos       8   7   6   5   4   3    2    1
 | |
|                                    p
 | |
| |#
 | |
| (test 2 (where-history))
 | |
| (test "11" (current-history))
 | |
| (test 2 (where-history))
 | |
| (test "12" (previous-history))
 | |
| #|
 | |
| index     0   1   2   3   4   5    6    7
 | |
| history  "5" "6" "7" "8" "9" "10" "11" "12"
 | |
| offset    5   6   7   8   9   10   11   12
 | |
| pos       8   7   6   5   4   3    2    1
 | |
|                                         p
 | |
| |#
 | |
| (test 1 (where-history))
 | |
| (test "11" (next-history))
 | |
| #|
 | |
| index     0   1   2   3   4   5    6    7
 | |
| history  "5" "6" "7" "8" "9" "10" "11" "12"
 | |
| offset    5   6   7   8   9   10   11   12
 | |
| pos       8   7   6   5   4   3    2    1
 | |
|                                         p
 | |
| |#
 | |
| (test 2 (where-history))
 | |
| (test "11" (history-get 11))
 | |
| (test "6" (remove-history 1))
 | |
| #|
 | |
| index     0   1   2   3   4    5    6 
 | |
| history  "5" "7" "8" "9" "10" "11" "12"
 | |
| offset    5   7   8   9   10   11   12
 | |
| pos       7   6   5   4   3    2    1
 | |
|               p
 | |
| |#
 | |
| (test 6 (where-history))
 | |
| (test "7" (current-history))
 | |
| (test "5" (next-history))
 | |
| (test #f (history-get 6))
 | |
| #|
 | |
| index     0   1   2   3   4    5    6 
 | |
| history  "5" "7" "8" "9" "10" "11" "12"
 | |
| offset    5   7   8   9   10   11   12
 | |
| pos       7   6   5   4   3    2    1
 | |
|           p
 | |
| |#
 | |
| (test 7 (history-length))
 | |
| (history-set-pos 6)
 | |
| #|
 | |
| index     0   1   2   3   4    5    6 
 | |
| history  "5" "7" "8" "9" "10" "11" "12"
 | |
| offset    5   7   8   9   10   11   12
 | |
| pos       7   6   5   4   3    2    1
 | |
|                                     p
 | |
| |#
 | |
| (test 0 (history-search "7" -1))
 | |
| #|
 | |
| index     0   1   2   3   4    5    6 
 | |
| history  "5" "7" "8" "9" "10" "11" "12"
 | |
| offset    5   7   8   9   10   11   12
 | |
| pos       7   6   5   4   3    2    1
 | |
|               p
 | |
| |#
 | |
| (test 6 (where-history))
 | |
| (history-set-pos 6)
 | |
| #|
 | |
| index     0   1   2   3   4    5    6 
 | |
| history  "5" "7" "8" "9" "10" "11" "12"
 | |
| offset    5   7   8   9   10   11   12
 | |
| pos       7   6   5   4   3    2    1
 | |
|                                     p
 | |
| |#
 | |
| (test -1 (history-search "7" 0))
 | |
| #|
 | |
| index     0   1   2   3   4    5    6 
 | |
| history  "5" "7" "8" "9" "10" "11" "12"
 | |
| offset    5   7   8   9   10   11   12
 | |
| pos       7   6   5   4   3    2    1
 | |
|                                     p
 | |
| |#
 | |
| (history-set-pos 0)
 | |
| #|
 | |
| index     0   1   2   3   4    5    6 
 | |
| history  "5" "7" "8" "9" "10" "11" "12"
 | |
| offset    5   7   8   9   10   11   12
 | |
| pos       7   6   5   4   3    2    1
 | |
|           p
 | |
| |#
 | |
| (test -1 (history-search "7" -1))
 | |
| #|
 | |
| index     0   1   2   3   4    5    6 
 | |
| history  "5" "7" "8" "9" "10" "11" "12"
 | |
| offset    5   7   8   9   10   11   12
 | |
| pos       7   6   5   4   3    2    1
 | |
|           p
 | |
| |#
 | |
| (test 7 (where-history))
 | |
| (history-set-pos 0)
 | |
| #|
 | |
| index     0   1   2   3   4    5    6 
 | |
| history  "5" "7" "8" "9" "10" "11" "12"
 | |
| offset    5   7   8   9   10   11   12
 | |
| pos       7   6   5   4   3    2    1
 | |
|           p
 | |
| |#
 | |
| (test 0 (history-search "7" 0))
 | |
| #|
 | |
| index     0   1   2   3   4    5    6 
 | |
| history  "5" "7" "8" "9" "10" "11" "12"
 | |
| offset    5   7   8   9   10   11   12
 | |
| pos       7   6   5   4   3    2    1
 | |
|               p
 | |
| |#
 | |
| (test 6 (where-history))
 | |
| (test 0 (history-search-prefix "1" 0))
 | |
| #|
 | |
| index     0   1   2   3   4    5    6 
 | |
| history  "5" "7" "8" "9" "10" "11" "12"
 | |
| offset    5   7   8   9   10   11   12
 | |
| pos       7   6   5   4   3    2    1
 | |
|                           p
 | |
| |#
 | |
| (test 3 (where-history))
 | |
| (history-set-pos 5)
 | |
| #|
 | |
| index     0   1   2   3   4    5    6 
 | |
| history  "5" "7" "8" "9" "10" "11" "12"
 | |
| offset    5   7   8   9   10   11   12
 | |
| pos       7   6   5   4   3    2    1
 | |
|                                p
 | |
| |#
 | |
| (test 0 (history-search-prefix "1" -1))
 | |
| #|
 | |
| index     0   1   2   3   4    5    6 
 | |
| history  "5" "7" "8" "9" "10" "11" "12"
 | |
| offset    5   7   8   9   10   11   12
 | |
| pos       7   6   5   4   3    2    1
 | |
|                                p
 | |
| |#
 | |
| (test 2 (where-history))
 | |
| (test 0 (history-search-prefix "1" 0))
 | |
| #|
 | |
| index     0   1   2   3   4    5    6 
 | |
| history  "5" "7" "8" "9" "10" "11" "12"
 | |
| offset    5   7   8   9   10   11   12
 | |
| pos       7   6   5   4   3    2    1
 | |
|                                p
 | |
| |#
 | |
| (test 2 (where-history))
 | |
| (test 0 (history-search-prefix "9" -1))
 | |
| #|
 | |
| index     0   1   2   3   4    5    6 
 | |
| history  "5" "7" "8" "9" "10" "11" "12"
 | |
| offset    5   7   8   9   10   11   12
 | |
| pos       7   6   5   4   3    2    1
 | |
|                       p
 | |
| |#
 | |
| (test 4 (where-history))
 | |
| (write-history testfile)
 | |
| (test 7 (history-length))
 | |
| (clear-history)
 | |
| #|
 | |
| index     
 | |
| history  
 | |
| offset   
 | |
| pos       
 | |
|              p
 | |
| |#
 | |
| (test 0 (history-length))
 | |
| (test 0 (where-history))
 | |
| (add-history "f")
 | |
| #|
 | |
| index      1
 | |
| history   "f"
 | |
| offset     1
 | |
| pos        1
 | |
|            p
 | |
| |#
 | |
| (test 1 (history-length))
 | |
| (test 1 (where-history))
 | |
| (test "f" (history-get 1))
 | |
| ;(read-history testfile)
 | |
| ;#|
 | |
| ;index     0   1   2   3   4    5    6    7
 | |
| ;history  "f" "5" "7" "8" "9" "10" "11" "12"
 | |
| ;offset    1   2   3   4   5    6    7   8
 | |
| ;pos       8   7   6   5   4    3    2   1
 | |
| ;                                        p
 | |
| ;|#
 | |
| (test 8 (history-length))
 | |
| (clear-history)
 | |
| (truncate-file testfile 5)
 | |
| ;(read-history testfile)
 | |
| (test 5 (history-length))
 | |
| (clear-history)
 | |
| (add-history "foo")
 | |
| (add-history "bar")
 | |
| (add-history "baz")
 | |
| (test "baz" (history-expand "!b"))
 | |
| (test "baz" (history-expand "!!"))
 | |
| (test "bar" (history-expand "!?r?"))
 | |
| (add-history "com arg")
 | |
| (test "arg" (history-expand "!!:$"))
 | |
| (test "arg" (history-expand "!$"))
 | |
| (test "command arg" (history-expand "!!:s/com/command/"))
 | |
| 
 | |
| (test-end)
 |