racket/collects/tests/mzscheme/string.ss
2005-05-27 18:56:37 +00:00

100 lines
4.4 KiB
Scheme

(load-relative "loadtest.ss")
(SECTION 'mzlib-string)
(require (lib "string.ss"))
(let ([s1 (string-copy "Hello!")])
(string-lowercase! s1)
(test "hello!" 'lowercase s1)
(string-uppercase! s1)
(test "HELLO!" 'uppercase s1))
(let ([s (list->string
(let loop ([i 0])
(if (= i 256)
null
(cons (integer->char i) (loop (add1 i))))))])
(test (list s) regexp-match (regexp-quote s) s)
(test (string-append "!" s "!")
regexp-replace (regexp-quote s) s (regexp-replace-quote (string-append "!" s "!"))))
(let ([s (open-input-string "hello there")])
(test #f regexp-match/fail-without-reading #rx"not there" s)
(test #f regexp-match/fail-without-reading #rx"t$" s)
(test #f regexp-match/fail-without-reading #rx"hello there!!!" s)
(test "hello there" read-string 50 s))
(test '("a" "b" "c") regexp-match* "[abc]" "here's a buck")
(test '("b" "c") regexp-match* "[abc]" "here's a buck" 8)
(test '("a") regexp-match* "[abc]" "here's a buck" 0 8)
(test '("a" "b" "c") regexp-match* "[abc]" "here's a buck" 0 #f)
(test '(#"a" #"b" #"c") regexp-match* "[abc]" #"here's a buck")
(test '(#"b" #"c") regexp-match* "[abc]" #"here's a buck" 8)
(test '(#"a") regexp-match* "[abc]" #"here's a buck" 0 8)
(test '(#"a" #"b" #"c") regexp-match* "[abc]" #"here's a buck" 0 #f)
(test '(#"a" #"b" #"c") regexp-match* #"[abc]" "here's a buck")
(test '(#"b" #"c") regexp-match* #"[abc]" "here's a buck" 8)
(test '(#"a") regexp-match* #"[abc]" "here's a buck" 0 8)
(test '(#"a" #"b" #"c") regexp-match* #"[abc]" "here's a buck" 0 #f)
(test '(#"a" #"b" #"c") regexp-match* "[abc]" (open-input-string "here's a buck"))
(test '(#"b" #"c") regexp-match* "[abc]" (open-input-string "here's a buck") 8)
(let ([s (open-input-string "here's a buck")])
(test '(#"a") regexp-match* "[abc]" s 0 8)
(test " buck" read-string 50 s))
(let ([s (open-input-string "here's a buck")])
(test '(#"a" #"b" #"c") regexp-match* "[abc]" s 0 #f)
(test eof read-char s))
(test '((7 . 8) (9 . 10) (11 . 12)) regexp-match-positions* "[abc]" "here's a buck")
(test '((9 . 10) (11 . 12)) regexp-match-positions* "[abc]" "here's a buck" 8)
(test '((7 . 8)) regexp-match-positions* "[abc]" "here's a buck" 0 8)
(test '((7 . 8) (9 . 10) (11 . 12)) regexp-match-positions* "[abc]" "here's a buck" 0 #f)
(test '((7 . 8) (9 . 10) (11 . 12)) regexp-match-positions* "[abc]" (open-input-string "here's a buck"))
(test '((9 . 10) (11 . 12)) regexp-match-positions* "[abc]" (open-input-string "here's a buck") 8)
(let ([s (open-input-string "here's a buck")])
(test '((7 . 8)) regexp-match-positions* "[abc]" s 0 8)
(test " buck" read-string 50 s))
(let ([s (open-input-string "here's a buck")])
(test '((7 . 8) (9 . 10) (11 . 12)) regexp-match-positions* "[abc]" s 0 #f)
(test eof read-char s))
(let ([s (open-input-string "here's a buck")])
(test '((7 . 8) (9 . 10) (11 . 12)) regexp-match-peek-positions* "[abc]" (open-input-string "here's a buck"))
(test '((9 . 10) (11 . 12)) regexp-match-peek-positions* "[abc]" (open-input-string "here's a buck") 8)
(test '((7 . 8)) regexp-match-peek-positions* "[abc]" s 0 8)
(test '((7 . 8) (9 . 10) (11 . 12)) regexp-match-peek-positions* "[abc]" s 0 #f)
(test "here's a buck" read-string 50 s))
(test '("here's " " " "u" "k") regexp-split "[abc]" "here's a buck")
(test '(" " "u" "k") regexp-split "[abc]" "here's a buck" 8)
(test '("" "u" "k") regexp-split "[abc]" "here's a buck" 9)
(test '("" "u" "") regexp-split "[abc]" "here's a buck" 9 12)
(test '("here's " "") regexp-split "[abc]" "here's a buck" 0 8)
(test '("here's " " ") regexp-split "[abc]" "here's a buck" 0 9)
(test '("here's " " " "u" "k") regexp-split "[abc]" "here's a buck" 0 #f)
(test '(#"here's " #" " #"u" #"k") regexp-split "[abc]" (open-input-string "here's a buck"))
(test '(#" " #"u" #"k") regexp-split "[abc]" (open-input-string "here's a buck") 8)
(test '(#"" #"u" #"k") regexp-split "[abc]" (open-input-string "here's a buck") 9)
(let ([s (open-input-string "here's a buck")])
(test '(#"" #"u" #"") regexp-split "[abc]" s 9 12)
(test "k" read-string 50 s))
(let ([s (open-input-string "here's a buck")])
(test '(#"here's " #"") regexp-split "[abc]" s 0 8)
(test " buck" read-string 50 s))
(let ([s (open-input-string "here's a buck")])
(test '(#"here's " #" ") regexp-split "[abc]" s 0 9)
(test "buck" read-string 50 s))
(let ([s (open-input-string "here's a buck")])
(test '(#"here's " #" " #"u" #"k") regexp-split "[abc]" s 0 #f)
(test eof read-char s))
(report-errs)