X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fstrings.lisp;h=92022e9d3dd2bde8e0076e09224a521764b54a78;hb=HEAD;hp=81b5552423ba09fa59f9e67f1420c8f81edea985;hpb=bf8840c8c7a5c21190b27d51a9268cd520d473ac;p=jscl.git diff --git a/tests/strings.lisp b/tests/strings.lisp index 81b5552..92022e9 100644 --- a/tests/strings.lisp +++ b/tests/strings.lisp @@ -86,9 +86,9 @@ ;; (test (char= (schar "abc" 2) #\c)) ;; JSCL: no :FILL-POINTER yet, so disabled ;; (test (let ((str (make-array 10 -;; :element-type 'character -;; :fill-pointer 3 -;; :initial-contents "0123456789"))) +;; :element-type 'character +;; :fill-pointer 3 +;; :initial-contents "0123456789"))) ;; (and (string= str "012") ;; (char= (char str 3) #\3) ;; (char= (char str 4) #\4) @@ -109,110 +109,108 @@ (test (string= (string-upcase "abcde") "ABCDE")) (test (string= (string-upcase "Dr. Livingston, I presume?") - "DR. LIVINGSTON, I PRESUME?")) + "DR. LIVINGSTON, I PRESUME?")) (test (string= (string-upcase "Dr. Livingston, I presume?" :start 6 :end 10) - "Dr. LiVINGston, I presume?")) + "Dr. LiVINGston, I presume?")) (test (string= (string-upcase 'Kludgy-HASH-Search) "KLUDGY-HASH-SEARCH")) (test (string= (string-upcase "abcde" :start 2 :end nil) "abCDE")) (test (string= (string-downcase "Dr. Livingston, I presume?") - "dr. livingston, i presume?")) + "dr. livingston, i presume?")) (test (string= (string-downcase 'Kludgy-HASH-Search) "kludgy-hash-search")) (test (string= (string-downcase "A FOOL" :start 2 :end nil) "A fool")) (test (string= (string-capitalize "elm 13c arthur;fig don't") - "Elm 13c Arthur;Fig Don'T")) + "Elm 13c Arthur;Fig Don'T")) (test (string= (string-capitalize " hello ") " Hello ")) (test (string= (string-capitalize - "occlUDeD cASEmenTs FOreSTAll iNADVertent DEFenestraTION") - "Occluded Casements Forestall Inadvertent Defenestration")) + "occlUDeD cASEmenTs FOreSTAll iNADVertent DEFenestraTION") + "Occluded Casements Forestall Inadvertent Defenestration")) (test (string= (string-capitalize 'kludgy-hash-search) "Kludgy-Hash-Search")) (test (string= (string-capitalize "DON'T!") "Don'T!")) ;not "Don't!" (test (string= (string-capitalize "pipe 13a, foo16c") "Pipe 13a, Foo16c")) (test (string= (string-capitalize "a fool" :start 2 :end nil) "a Fool")) -;; JSCL: no COPY-SEQ yet -;; (test (let ((str (copy-seq "0123ABCD890a"))) -;; (and (string= (nstring-downcase str :start 5 :end 7) "0123AbcD890a") -;; (string= str "0123AbcD890a")))) - -;; (test (let* ((str0 (copy-seq "abcde")) -;; (str (nstring-upcase str0))) -;; (and (eq str0 str) -;; (string= str "ABCDE")))) -;; (test (let* ((str0 (copy-seq "Dr. Livingston, I presume?")) -;; (str (nstring-upcase str0))) -;; (and (eq str0 str) -;; (string= str "DR. LIVINGSTON, I PRESUME?")))) -;; (test (let* ((str0 (copy-seq "Dr. Livingston, I presume?")) -;; (str (nstring-upcase str0 :start 6 :end 10))) -;; (and (eq str0 str) -;; (string= str "Dr. LiVINGston, I presume?")))) - -;; (test (let* ((str0 (copy-seq "abcde")) -;; (str (nstring-upcase str0 :start 2 :end nil))) -;; (string= str "abCDE"))) - - - -;; (test (let* ((str0 (copy-seq "Dr. Livingston, I presume?")) -;; (str (nstring-downcase str0))) -;; (and (eq str0 str) -;; (string= str "dr. livingston, i presume?")))) -;; (test (let* ((str0 (copy-seq "ABCDE")) -;; (str (nstring-downcase str0 :start 2 :end nil))) -;; (string= str "ABcde"))) - -;; (test (let* ((str0 (copy-seq "elm 13c arthur;fig don't")) -;; (str (nstring-capitalize str0))) -;; (and (eq str0 str) -;; (string= str "Elm 13c Arthur;Fig Don'T")))) - -;; (test (let* ((str0 (copy-seq " hello ")) -;; (str (nstring-capitalize str0))) -;; (and (eq str0 str) -;; (string= str " Hello ")))) -;; (test (let* ((str0 (copy-seq -;; "occlUDeD cASEmenTs FOreSTAll iNADVertent DEFenestraTION")) -;; (str (nstring-capitalize str0))) -;; (and (eq str0 str) -;; (string= str -;; "Occluded Casements Forestall Inadvertent Defenestration")))) -;; (test (let* ((str0 (copy-seq "DON'T!")) -;; (str (nstring-capitalize str0))) -;; (and (eq str0 str) -;; (string= str "Don'T!")))) ;not "Don't!" -;; (test (let* ((str0 (copy-seq "pipe 13a, foo16c")) -;; (str (nstring-capitalize str0))) -;; (and (eq str0 str) -;; (string= str "Pipe 13a, Foo16c")))) -;; (test (let* ((str0 (copy-seq "a fool")) -;; (str (nstring-capitalize str0 :start 2 :end nil))) -;; (string= str "a Fool"))) - - - -;; JSCL: my implementation of these needs :FROM-END, which doesn't exist yet. -;; (test (string= (string-trim "abc" "abcaakaaakabcaaa") "kaaak")) +(test (let ((str (copy-seq "0123ABCD890a"))) + (and (string= (nstring-downcase str :start 5 :end 7) "0123AbcD890a") + (string= str "0123AbcD890a")))) + +(test (let* ((str0 (copy-seq "abcde")) + (str (nstring-upcase str0))) + (and (eq str0 str) + (string= str "ABCDE")))) +(test (let* ((str0 (copy-seq "Dr. Livingston, I presume?")) + (str (nstring-upcase str0))) + (and (eq str0 str) + (string= str "DR. LIVINGSTON, I PRESUME?")))) +(test (let* ((str0 (copy-seq "Dr. Livingston, I presume?")) + (str (nstring-upcase str0 :start 6 :end 10))) + (and (eq str0 str) + (string= str "Dr. LiVINGston, I presume?")))) + +(test (let* ((str0 (copy-seq "abcde")) + (str (nstring-upcase str0 :start 2 :end nil))) + (string= str "abCDE"))) + + + +(test (let* ((str0 (copy-seq "Dr. Livingston, I presume?")) + (str (nstring-downcase str0))) + (and (eq str0 str) + (string= str "dr. livingston, i presume?")))) +(test (let* ((str0 (copy-seq "ABCDE")) + (str (nstring-downcase str0 :start 2 :end nil))) + (string= str "ABcde"))) + +(test (let* ((str0 (copy-seq "elm 13c arthur;fig don't")) + (str (nstring-capitalize str0))) + (and (eq str0 str) + (string= str "Elm 13c Arthur;Fig Don'T")))) + +(test (let* ((str0 (copy-seq " hello ")) + (str (nstring-capitalize str0))) + (and (eq str0 str) + (string= str " Hello ")))) +(test (let* ((str0 (copy-seq + "occlUDeD cASEmenTs FOreSTAll iNADVertent DEFenestraTION")) + (str (nstring-capitalize str0))) + (and (eq str0 str) + (string= str + "Occluded Casements Forestall Inadvertent Defenestration")))) +(test (let* ((str0 (copy-seq "DON'T!")) + (str (nstring-capitalize str0))) + (and (eq str0 str) + (string= str "Don'T!")))) ;not "Don't!" +(test (let* ((str0 (copy-seq "pipe 13a, foo16c")) + (str (nstring-capitalize str0))) + (and (eq str0 str) + (string= str "Pipe 13a, Foo16c")))) +(test (let* ((str0 (copy-seq "a fool")) + (str (nstring-capitalize str0 :start 2 :end nil))) + (string= str "a Fool"))) + + + +(test (string= (string-trim "abc" "abcaakaaakabcaaa") "kaaak")) ;; (test (string= (string-trim '(#\Space #\Tab #\Newline) " garbanzo beans ;; ") "garbanzo beans")) -;; (test (string= (string-trim " (*)" " ( *three (silly) words* ) ") -;; "three (silly) words")) -;; (test (string= (string-left-trim "abc" "labcabcabc") "labcabcabc")) -;; (test (string= (string-left-trim " (*)" " ( *three (silly) words* ) ") -;; "three (silly) words* ) ")) -;; (test (string= (string-right-trim " (*)" " ( *three (silly) words* ) ") -;; " ( *three (silly) words")) -;; (test (string= (string-trim "ABC" "abc") "abc")) -;; (test (string= (string-trim "AABBCC" "abc") "abc")) -;; (test (string= (string-trim "" "abc") "abc")) -;; (test (string= (string-trim "ABC" "") "")) -;; (test (string= (string-trim "cba" "abc") "")) -;; (test (string= (string-trim "cba" "abccba") "")) -;; (test (string= (string-trim "ccbbba" "abccba") "")) -;; (test (string= (string-trim "cba" "abcxabc") "x")) -;; (test (string= (string-trim "xyz" "xxyabcxyyz") "abc")) -;; (test (string= (string-trim "CBA" 'abcxabc) "X")) -;; (test (string= (string-trim "a" #\a) "")) +(test (string= (string-trim " (*)" " ( *three (silly) words* ) ") + "three (silly) words")) +(test (string= (string-left-trim "abc" "labcabcabc") "labcabcabc")) +(test (string= (string-left-trim " (*)" " ( *three (silly) words* ) ") + "three (silly) words* ) ")) +(test (string= (string-right-trim " (*)" " ( *three (silly) words* ) ") + " ( *three (silly) words")) +(test (string= (string-trim "ABC" "abc") "abc")) +(test (string= (string-trim "AABBCC" "abc") "abc")) +(test (string= (string-trim "" "abc") "abc")) +(test (string= (string-trim "ABC" "") "")) +(test (string= (string-trim "cba" "abc") "")) +(test (string= (string-trim "cba" "abccba") "")) +(test (string= (string-trim "ccbbba" "abccba") "")) +(test (string= (string-trim "cba" "abcxabc") "x")) +(test (string= (string-trim "xyz" "xxyabcxyyz") "abc")) +(test (string= (string-trim "CBA" 'abcxabc) "X")) +(test (string= (string-trim "a" #\a) "")) (test (string= (string-left-trim "ABC" "abc") "abc")) @@ -225,15 +223,15 @@ (test (string= (string-left-trim "CBA" 'abcxabc) "XABC")) (test (string= (string-left-trim "a" #\a) "")) -;; (test (string= (string-right-trim "ABC" "abc") "abc")) -;; (test (string= (string-right-trim "" "abc") "abc")) -;; (test (string= (string-right-trim "ABC" "") "")) -;; (test (string= (string-right-trim "cba" "abc") "")) -;; (test (string= (string-right-trim "cba" "abccba") "")) -;; (test (string= (string-right-trim "cba" "abcxabc") "abcx")) -;; (test (string= (string-right-trim "xyz" "xxyabcxyz") "xxyabc")) -;; (test (string= (string-right-trim "CBA" 'abcxabc) "ABCX")) -;; (test (string= (string-right-trim "a" #\a) "")) +(test (string= (string-right-trim "ABC" "abc") "abc")) +(test (string= (string-right-trim "" "abc") "abc")) +(test (string= (string-right-trim "ABC" "") "")) +(test (string= (string-right-trim "cba" "abc") "")) +(test (string= (string-right-trim "cba" "abccba") "")) +(test (string= (string-right-trim "cba" "abcxabc") "abcx")) +(test (string= (string-right-trim "xyz" "xxyabcxyz") "xxyabc")) +(test (string= (string-right-trim "CBA" 'abcxabc) "ABCX")) +(test (string= (string-right-trim "a" #\a) "")) @@ -249,20 +247,18 @@ (test (string-equal "foo" "Foo")) (test (string= "abcd" "01234abcd9012" :start2 5 :end2 9)) (test (eql (string< "aaaa" "aaab") 3)) -;; JSCL: STRING>= doesn't exist yet, disabled -;; (test (eql (string>= "aaaaa" "aaaa") 4)) -;; JSCL: STRING-NOT-GREATERP doesn't exist yet, disabling: -;; (test (eql (string-not-greaterp "Abcde" "abcdE") 5)) -;; (test (eql (string-lessp "012AAAA789" "01aaab6" -;; :start1 3 :end1 7 -;; :start2 2 :end2 6) 6)) -;; (test (not (string-not-equal "AAAA" "aaaA"))) +(test (eql (string>= "aaaaa" "aaaa") 4)) +(test (eql (string-not-greaterp "Abcde" "abcdE") 5)) +(test (eql (string-lessp "012AAAA789" "01aaab6" + :start1 3 :end1 7 + :start2 2 :end2 6) 6)) +(test (not (string-not-equal "AAAA" "aaaA"))) (test (string= "" "")) ;; JSCL: making an array of BASE-CHAR doesn't make a string, yet ;; (test (string= (make-array 0 :element-type 'character) -;; (make-array 0 :element-type 'base-char))) +;; (make-array 0 :element-type 'base-char))) (test (not (string= "abc" ""))) (test (not (string= "" "abc"))) (test (not (string= "A" "a"))) @@ -279,7 +275,7 @@ (test (not (string/= "" ""))) ;; (test (not (string/= (make-array 0 :element-type 'character) -;; (make-array 0 :element-type 'base-char)))) +;; (make-array 0 :element-type 'base-char)))) (test (eql (string/= "abc" "") 0)) (test (eql (string/= "" "abc") 0)) (test (eql (string/= "A" "a") 0)) @@ -315,7 +311,7 @@ (test (not (string< "aba" "aaa"))) (test (not (string< "my cat food" "your dog food" :start1 6 :start2 8))) (test (not (string< "cat food 2 dollars" "dog food 3 dollars" - :start1 3 :end1 9 :start2 3 :end2 9))) + :start1 3 :end1 9 :start2 3 :end2 9))) (test (eql (string< "xyzabc" "abcd" :start1 3) 6)) (test (eql (string< "abc" "abc" :end1 1) 1)) (test (eql (string< "xyzabc" "abc" :start1 3 :end1 5) 5)) @@ -326,10 +322,10 @@ (test (eql (string< "aaaa" "z") 0)) (test (eql (string< "pppTTTaTTTqqq" "pTTTxTTT" :start1 3 :start2 1) 6)) (test (eql (string< "pppTTTaTTTqqq" "pTTTxTTT" - :start1 6 :end1 7 - :start2 4 :end2 5) 6)) + :start1 6 :end1 7 + :start2 4 :end2 5) 6)) ;; (test (not (string< (make-array 0 :element-type 'character) -;; (make-array 0 :element-type 'base-char)))) +;; (make-array 0 :element-type 'base-char)))) (test (not (string< 'love 'hate))) (test (= (string< 'peace 'war) 0)) (test (not (string< 'love 'love))) @@ -348,7 +344,7 @@ (test (not (string> "aaa" "aba"))) (test (not (string> "my cat food" "your dog food" :start1 6 :start2 8))) (test (not (string> "cat food 2 dollars" "dog food 3 dollars" - :start1 3 :end1 9 :start2 3 :end2 9))) + :start1 3 :end1 9 :start2 3 :end2 9))) (test (eql (string> "xyzabcde" "abcd" :start1 3) 7)) (test (not (string> "abc" "abc" :end1 1))) (test (eql (string> "xyzabc" "a" :start1 3 :end1 5) 4)) @@ -359,10 +355,10 @@ (test (eql (string> "z" "aaaa") 0)) (test (eql (string> "pTTTxTTTqqq" "pppTTTaTTT" :start1 1 :start2 3) 4)) (test (eql (string> "pppTTTxTTTqqq" "pTTTaTTT" - :start1 6 :end1 7 - :start2 4 :end2 5) 6)) + :start1 6 :end1 7 + :start2 4 :end2 5) 6)) ;; (test (not (string> (make-array 0 :element-type 'character) -;; (make-array 0 :element-type 'base-char)))) +;; (make-array 0 :element-type 'base-char)))) (test (= (string> 'love 'hate) 0)) (test (not (string> 'peace 'war))) (test (not (string> 'love 'love))) @@ -371,77 +367,77 @@ (test (= (string> #\z #\a) 0)) -;; (test (eql (string<= "" "") 0)) -;; (test (eql (string<= "dog" "dog") 3)) -;; (test (eql (string<= " " " ") 1)) -;; (test (not (string<= "abc" ""))) -;; (test (eql (string<= "ab" "abc") 2)) -;; (test (eql (string<= "aaa" "aba") 1)) -;; (test (not (string<= "aba" "aaa"))) -;; (test (eql (string<= "my cat food" "your dog food" :start1 6 :start2 8) 11)) -;; (test (eql (string<= "cat food 2 dollars" "dog food 3 dollars" -;; :start1 3 :end1 9 :start2 3 :end2 9) 9)) -;; (test (eql (string<= "xyzabc" "abcd" :start1 3) 6)) -;; (test (eql (string<= "abc" "abc" :end1 1) 1)) -;; (test (eql (string<= "xyzabc" "abc" :start1 3 :end1 5) 5)) -;; (test (eql (string<= "xyz" "abcxyzXYZ" :start2 3) 3)) -;; (test (eql (string<= "abc" "abcxyz" :end2 3) 3)) -;; (test (eql (string<= "xyz" "abcxyz" :end1 2 :start2 3) 2)) -;; (test (eql (string<= "xyzabc" "abcdef" :start1 3 :end2 3) 6)) -;; (test (eql (string<= "aaaa" "z") 0)) -;; (test (eql (string<= "pppTTTaTTTqqq" "pTTTxTTT" :start1 3 :start2 1) 6)) -;; (test (eql (string<= "pppTTTaTTTqqq" "pTTTxTTT" -;; :start1 6 :end1 7 -;; :start2 4 :end2 5) 6)) +(test (eql (string<= "" "") 0)) +(test (eql (string<= "dog" "dog") 3)) +(test (eql (string<= " " " ") 1)) +(test (not (string<= "abc" ""))) +(test (eql (string<= "ab" "abc") 2)) +(test (eql (string<= "aaa" "aba") 1)) +(test (not (string<= "aba" "aaa"))) +(test (eql (string<= "my cat food" "your dog food" :start1 6 :start2 8) 11)) +(test (eql (string<= "cat food 2 dollars" "dog food 3 dollars" + :start1 3 :end1 9 :start2 3 :end2 9) 9)) +(test (eql (string<= "xyzabc" "abcd" :start1 3) 6)) +(test (eql (string<= "abc" "abc" :end1 1) 1)) +(test (eql (string<= "xyzabc" "abc" :start1 3 :end1 5) 5)) +(test (eql (string<= "xyz" "abcxyzXYZ" :start2 3) 3)) +(test (eql (string<= "abc" "abcxyz" :end2 3) 3)) +(test (eql (string<= "xyz" "abcxyz" :end1 2 :start2 3) 2)) +(test (eql (string<= "xyzabc" "abcdef" :start1 3 :end2 3) 6)) +(test (eql (string<= "aaaa" "z") 0)) +(test (eql (string<= "pppTTTaTTTqqq" "pTTTxTTT" :start1 3 :start2 1) 6)) +(test (eql (string<= "pppTTTaTTTqqq" "pTTTxTTT" + :start1 6 :end1 7 + :start2 4 :end2 5) 6)) ;; (test (eql (string<= (make-array 0 :element-type 'character) -;; (make-array 0 :element-type 'base-char)) 0)) -;; (test (not (string<= 'love 'hate))) -;; (test (= (string<= 'peace 'war) 0)) -;; (test (= (string<= 'love 'love) 4)) -;; (test (= (string<= #\a #\a) 1)) -;; (test (= (string<= #\a #\b) 0)) -;; (test (not (string<= #\z #\a))) - - -;; (test (eql (string>= "" "") 0)) -;; (test (eql (string>= "dog" "dog") 3)) -;; (test (eql (string>= " " " ") 1)) -;; (test (eql (string>= "abc" "") 0)) -;; (test (not (string>= "" "abc"))) -;; (test (not (string>= "ab" "abc"))) -;; (test (eql (string>= "abc" "ab") 2)) -;; (test (eql (string>= "aba" "aaa") 1)) -;; (test (not (string>= "aaa" "aba"))) -;; (test (eql (string>= "my cat food" "your dog food" :start1 6 :start2 8) 11)) -;; (test (eql (string>= "cat food 2 dollars" "dog food 3 dollars" -;; :start1 3 :end1 9 :start2 3 :end2 9) 9)) -;; (test (eql (string>= "xyzabcde" "abcd" :start1 3) 7)) -;; (test (not (string>= "abc" "abc" :end1 1))) -;; (test (eql (string>= "xyzabc" "a" :start1 3 :end1 5) 4)) -;; (test (eql (string>= "xyzXYZ" "abcxyz" :start2 3) 3)) -;; (test (eql (string>= "abcxyz" "abcxyz" :end2 3) 3)) -;; (test (not (string>= "xyzXYZ" "abcxyz" :end1 2 :start2 3))) -;; (test (eql (string>= "xyzabc" "abcdef" :start1 3 :end2 3) 6)) -;; (test (eql (string>= "z" "aaaa") 0)) -;; (test (eql (string>= "pTTTxTTTqqq" "pppTTTaTTT" :start1 1 :start2 3) 4)) -;; (test (eql (string>= "pppTTTxTTTqqq" "pTTTaTTT" -;; :start1 6 :end1 7 -;; :start2 4 :end2 5) 6)) +;; (make-array 0 :element-type 'base-char)) 0)) +(test (not (string<= 'love 'hate))) +(test (= (string<= 'peace 'war) 0)) +(test (= (string<= 'love 'love) 4)) +(test (= (string<= #\a #\a) 1)) +(test (= (string<= #\a #\b) 0)) +(test (not (string<= #\z #\a))) + + +(test (eql (string>= "" "") 0)) +(test (eql (string>= "dog" "dog") 3)) +(test (eql (string>= " " " ") 1)) +(test (eql (string>= "abc" "") 0)) +(test (not (string>= "" "abc"))) +(test (not (string>= "ab" "abc"))) +(test (eql (string>= "abc" "ab") 2)) +(test (eql (string>= "aba" "aaa") 1)) +(test (not (string>= "aaa" "aba"))) +(test (eql (string>= "my cat food" "your dog food" :start1 6 :start2 8) 11)) +(test (eql (string>= "cat food 2 dollars" "dog food 3 dollars" + :start1 3 :end1 9 :start2 3 :end2 9) 9)) +(test (eql (string>= "xyzabcde" "abcd" :start1 3) 7)) +(test (not (string>= "abc" "abc" :end1 1))) +(test (eql (string>= "xyzabc" "a" :start1 3 :end1 5) 4)) +(test (eql (string>= "xyzXYZ" "abcxyz" :start2 3) 3)) +(test (eql (string>= "abcxyz" "abcxyz" :end2 3) 3)) +(test (not (string>= "xyzXYZ" "abcxyz" :end1 2 :start2 3))) +(test (eql (string>= "xyzabc" "abcdef" :start1 3 :end2 3) 6)) +(test (eql (string>= "z" "aaaa") 0)) +(test (eql (string>= "pTTTxTTTqqq" "pppTTTaTTT" :start1 1 :start2 3) 4)) +(test (eql (string>= "pppTTTxTTTqqq" "pTTTaTTT" + :start1 6 :end1 7 + :start2 4 :end2 5) 6)) ;; (test (eql (string>= (make-array 0 :element-type 'character) -;; (make-array 0 :element-type 'base-char)) 0)) -;; (test (= (string>= 'love 'hate) 0)) -;; (test (not (string>= 'peace 'war))) -;; (test (= (string>= 'love 'love) 4)) -;; (test (= (string>= #\a #\a) 1)) -;; (test (not (string>= #\a #\b))) -;; (test (= (string>= #\z #\a) 0)) +;; (make-array 0 :element-type 'base-char)) 0)) +(test (= (string>= 'love 'hate) 0)) +(test (not (string>= 'peace 'war))) +(test (= (string>= 'love 'love) 4)) +(test (= (string>= #\a #\a) 1)) +(test (not (string>= #\a #\b))) +(test (= (string>= #\z #\a) 0)) (test (string-equal "" "")) ;; (test (string-equal (make-array 0 :element-type 'character) -;; (make-array 0 :element-type 'base-char))) +;; (make-array 0 :element-type 'base-char))) (test (not (string-equal "abc" ""))) (test (not (string-equal "" "abc"))) (test (string-equal "A" "a")) @@ -462,7 +458,7 @@ (test (not (string-not-equal "" ""))) ;; (test (not (string-not-equal (make-array 0 :element-type 'character) -;; (make-array 0 :element-type 'base-char)))) +;; (make-array 0 :element-type 'base-char)))) (test (eql (string-not-equal "abc" "") 0)) (test (eql (string-not-equal "" "abc") 0)) (test (not (string-not-equal "A" "a"))) @@ -491,146 +487,146 @@ (test (= (string-not-equal #\z #\a) 0)) -;; (test (not (string-lessp "" ""))) -;; (test (not (string-lessp "dog" "dog"))) -;; (test (not (string-lessp " " " "))) -;; (test (not (string-lessp "abc" ""))) -;; (test (eql (string-lessp "" "abc") 0)) -;; (test (eql (string-lessp "ab" "abc") 2)) -;; (test (not (string-lessp "abc" "ab"))) -;; (test (eql (string-lessp "aaa" "aba") 1)) -;; (test (not (string-lessp "aba" "aaa"))) -;; (test (not (string-lessp "my cat food" "your dog food" :start1 6 :start2 8))) -;; (test (not (string-lessp "cat food 2 dollars" "dog food 3 dollars" -;; :start1 3 :end1 9 :start2 3 :end2 9))) -;; (test (eql (string-lessp "xyzabc" "abcd" :start1 3) 6)) -;; (test (eql (string-lessp "abc" "abc" :end1 1) 1)) -;; (test (eql (string-lessp "xyzabc" "abc" :start1 3 :end1 5) 5)) -;; (test (eql (string-lessp "xyz" "abcxyzXYZ" :start2 3) 3)) -;; (test (not (string-lessp "abc" "abcxyz" :end2 3))) -;; (test (eql (string-lessp "xyz" "abcxyz" :end1 2 :start2 3) 2)) -;; (test (not (string-lessp "xyzabc" "abcdef" :start1 3 :end2 3))) -;; (test (eql (string-lessp "aaaa" "z") 0)) -;; (test (eql (string-lessp "pppTTTaTTTqqq" "pTTTxTTT" :start1 3 :start2 1) 6)) -;; (test (eql (string-lessp "pppTTTaTTTqqq" "pTTTxTTT" -;; :start1 6 :end1 7 -;; :start2 4 :end2 5) 6)) +(test (not (string-lessp "" ""))) +(test (not (string-lessp "dog" "dog"))) +(test (not (string-lessp " " " "))) +(test (not (string-lessp "abc" ""))) +(test (eql (string-lessp "" "abc") 0)) +(test (eql (string-lessp "ab" "abc") 2)) +(test (not (string-lessp "abc" "ab"))) +(test (eql (string-lessp "aaa" "aba") 1)) +(test (not (string-lessp "aba" "aaa"))) +(test (not (string-lessp "my cat food" "your dog food" :start1 6 :start2 8))) +(test (not (string-lessp "cat food 2 dollars" "dog food 3 dollars" + :start1 3 :end1 9 :start2 3 :end2 9))) +(test (eql (string-lessp "xyzabc" "abcd" :start1 3) 6)) +(test (eql (string-lessp "abc" "abc" :end1 1) 1)) +(test (eql (string-lessp "xyzabc" "abc" :start1 3 :end1 5) 5)) +(test (eql (string-lessp "xyz" "abcxyzXYZ" :start2 3) 3)) +(test (not (string-lessp "abc" "abcxyz" :end2 3))) +(test (eql (string-lessp "xyz" "abcxyz" :end1 2 :start2 3) 2)) +(test (not (string-lessp "xyzabc" "abcdef" :start1 3 :end2 3))) +(test (eql (string-lessp "aaaa" "z") 0)) +(test (eql (string-lessp "pppTTTaTTTqqq" "pTTTxTTT" :start1 3 :start2 1) 6)) +(test (eql (string-lessp "pppTTTaTTTqqq" "pTTTxTTT" + :start1 6 :end1 7 + :start2 4 :end2 5) 6)) ;; (test (not (string-lessp (make-array 0 :element-type 'character) -;; (make-array 0 :element-type 'base-char)))) -;; (test (and (not (string-lessp "abc" "ABC")) -;; (not (string-lessp "ABC" "abc")))) -;; (test (not (string-lessp 'love 'hate))) -;; (test (= (string-lessp 'peace 'war) 0)) -;; (test (not (string-lessp 'love 'love))) -;; (test (not (string-lessp #\a #\a))) -;; (test (= (string-lessp #\a #\b) 0)) -;; (test (not (string-lessp #\z #\a))) - - -;; (test (not (string-greaterp "" ""))) -;; (test (not (string-greaterp "dog" "dog"))) -;; (test (not (string-greaterp " " " "))) -;; (test (eql (string-greaterp "abc" "") 0)) -;; (test (not (string-greaterp "" "abc"))) -;; (test (not (string-greaterp "ab" "abc"))) -;; (test (eql (string-greaterp "abc" "ab") 2)) -;; (test (eql (string-greaterp "aba" "aaa") 1)) -;; (test (not (string-greaterp "aaa" "aba"))) -;; (test (not (string-greaterp "my cat food" "your dog food" :start1 6 :start2 8))) -;; (test (not (string-greaterp "cat food 2 dollars" "dog food 3 dollars" -;; :start1 3 :end1 9 :start2 3 :end2 9))) -;; (test (eql (string-greaterp "xyzabcde" "abcd" :start1 3) 7)) -;; (test (not (string-greaterp "abc" "abc" :end1 1))) -;; (test (eql (string-greaterp "xyzabc" "a" :start1 3 :end1 5) 4)) -;; (test (eql (string-greaterp "xyzXYZ" "abcxyz" :start2 3) 3)) -;; (test (eql (string-greaterp "abcxyz" "abcxyz" :end2 3) 3)) -;; (test (not (string-greaterp "xyzXYZ" "abcxyz" :end1 2 :start2 3))) -;; (test (not (string-greaterp "xyzabc" "abcdef" :start1 3 :end2 3))) -;; (test (eql (string-greaterp "z" "aaaa") 0)) -;; (test (eql (string-greaterp "pTTTxTTTqqq" "pppTTTaTTT" :start1 1 :start2 3) 4)) -;; (test (eql (string-greaterp "pppTTTxTTTqqq" "pTTTaTTT" -;; :start1 6 :end1 7 -;; :start2 4 :end2 5) 6)) +;; (make-array 0 :element-type 'base-char)))) +(test (and (not (string-lessp "abc" "ABC")) + (not (string-lessp "ABC" "abc")))) +(test (not (string-lessp 'love 'hate))) +(test (= (string-lessp 'peace 'war) 0)) +(test (not (string-lessp 'love 'love))) +(test (not (string-lessp #\a #\a))) +(test (= (string-lessp #\a #\b) 0)) +(test (not (string-lessp #\z #\a))) + + +(test (not (string-greaterp "" ""))) +(test (not (string-greaterp "dog" "dog"))) +(test (not (string-greaterp " " " "))) +(test (eql (string-greaterp "abc" "") 0)) +(test (not (string-greaterp "" "abc"))) +(test (not (string-greaterp "ab" "abc"))) +(test (eql (string-greaterp "abc" "ab") 2)) +(test (eql (string-greaterp "aba" "aaa") 1)) +(test (not (string-greaterp "aaa" "aba"))) +(test (not (string-greaterp "my cat food" "your dog food" :start1 6 :start2 8))) +(test (not (string-greaterp "cat food 2 dollars" "dog food 3 dollars" + :start1 3 :end1 9 :start2 3 :end2 9))) +(test (eql (string-greaterp "xyzabcde" "abcd" :start1 3) 7)) +(test (not (string-greaterp "abc" "abc" :end1 1))) +(test (eql (string-greaterp "xyzabc" "a" :start1 3 :end1 5) 4)) +(test (eql (string-greaterp "xyzXYZ" "abcxyz" :start2 3) 3)) +(test (eql (string-greaterp "abcxyz" "abcxyz" :end2 3) 3)) +(test (not (string-greaterp "xyzXYZ" "abcxyz" :end1 2 :start2 3))) +(test (not (string-greaterp "xyzabc" "abcdef" :start1 3 :end2 3))) +(test (eql (string-greaterp "z" "aaaa") 0)) +(test (eql (string-greaterp "pTTTxTTTqqq" "pppTTTaTTT" :start1 1 :start2 3) 4)) +(test (eql (string-greaterp "pppTTTxTTTqqq" "pTTTaTTT" + :start1 6 :end1 7 + :start2 4 :end2 5) 6)) ;; (test (not (string-greaterp (make-array 0 :element-type 'character) -;; (make-array 0 :element-type 'base-char)))) -;; (test (and (not (string-greaterp "abc" "ABC")) -;; (not (string-greaterp "ABC" "abc")))) -;; (test (= (string-greaterp 'love 'hate) 0)) -;; (test (not (string-greaterp 'peace 'war))) -;; (test (not (string-greaterp 'love 'love))) -;; (test (not (string-greaterp #\a #\a))) -;; (test (not (string-greaterp #\a #\b))) -;; (test (= (string-greaterp #\z #\a) 0)) - - -;; (test (eql (string-not-greaterp "" "") 0)) -;; (test (eql (string-not-greaterp "dog" "dog") 3)) -;; (test (eql (string-not-greaterp " " " ") 1)) -;; (test (not (string-not-greaterp "abc" ""))) -;; (test (eql (string-not-greaterp "ab" "abc") 2)) -;; (test (eql (string-not-greaterp "aaa" "aba") 1)) -;; (test (not (string-not-greaterp "aba" "aaa"))) -;; (test (eql (string-not-greaterp "my cat food" "your dog food" :start1 6 :start2 8) 11)) -;; (test (eql (string-not-greaterp "cat food 2 dollars" "dog food 3 dollars" -;; :start1 3 :end1 9 :start2 3 :end2 9) 9)) -;; (test (eql (string-not-greaterp "xyzabc" "abcd" :start1 3) 6)) -;; (test (eql (string-not-greaterp "abc" "abc" :end1 1) 1)) -;; (test (eql (string-not-greaterp "xyzabc" "abc" :start1 3 :end1 5) 5)) -;; (test (eql (string-not-greaterp "xyz" "abcxyzXYZ" :start2 3) 3)) -;; (test (eql (string-not-greaterp "abc" "abcxyz" :end2 3) 3)) -;; (test (eql (string-not-greaterp "xyz" "abcxyz" :end1 2 :start2 3) 2)) -;; (test (eql (string-not-greaterp "xyzabc" "abcdef" :start1 3 :end2 3) 6)) -;; (test (eql (string-not-greaterp "aaaa" "z") 0)) -;; (test (eql (string-not-greaterp "pppTTTaTTTqqq" "pTTTxTTT" :start1 3 :start2 1) 6)) -;; (test (eql (string-not-greaterp "pppTTTaTTTqqq" "pTTTxTTT" -;; :start1 6 :end1 7 -;; :start2 4 :end2 5) 6)) +;; (make-array 0 :element-type 'base-char)))) +(test (and (not (string-greaterp "abc" "ABC")) + (not (string-greaterp "ABC" "abc")))) +(test (= (string-greaterp 'love 'hate) 0)) +(test (not (string-greaterp 'peace 'war))) +(test (not (string-greaterp 'love 'love))) +(test (not (string-greaterp #\a #\a))) +(test (not (string-greaterp #\a #\b))) +(test (= (string-greaterp #\z #\a) 0)) + + +(test (eql (string-not-greaterp "" "") 0)) +(test (eql (string-not-greaterp "dog" "dog") 3)) +(test (eql (string-not-greaterp " " " ") 1)) +(test (not (string-not-greaterp "abc" ""))) +(test (eql (string-not-greaterp "ab" "abc") 2)) +(test (eql (string-not-greaterp "aaa" "aba") 1)) +(test (not (string-not-greaterp "aba" "aaa"))) +(test (eql (string-not-greaterp "my cat food" "your dog food" :start1 6 :start2 8) 11)) +(test (eql (string-not-greaterp "cat food 2 dollars" "dog food 3 dollars" + :start1 3 :end1 9 :start2 3 :end2 9) 9)) +(test (eql (string-not-greaterp "xyzabc" "abcd" :start1 3) 6)) +(test (eql (string-not-greaterp "abc" "abc" :end1 1) 1)) +(test (eql (string-not-greaterp "xyzabc" "abc" :start1 3 :end1 5) 5)) +(test (eql (string-not-greaterp "xyz" "abcxyzXYZ" :start2 3) 3)) +(test (eql (string-not-greaterp "abc" "abcxyz" :end2 3) 3)) +(test (eql (string-not-greaterp "xyz" "abcxyz" :end1 2 :start2 3) 2)) +(test (eql (string-not-greaterp "xyzabc" "abcdef" :start1 3 :end2 3) 6)) +(test (eql (string-not-greaterp "aaaa" "z") 0)) +(test (eql (string-not-greaterp "pppTTTaTTTqqq" "pTTTxTTT" :start1 3 :start2 1) 6)) +(test (eql (string-not-greaterp "pppTTTaTTTqqq" "pTTTxTTT" + :start1 6 :end1 7 + :start2 4 :end2 5) 6)) ;; (test (eql (string-not-greaterp (make-array 0 :element-type 'character) -;; (make-array 0 :element-type 'base-char)) 0)) -;; (test (and (eql (string-not-greaterp "abc" "ABC") 3) -;; (eql (string-not-greaterp "ABC" "abc") 3))) -;; (test (not (string-not-greaterp 'love 'hate))) -;; (test (= (string-not-greaterp 'peace 'war) 0)) -;; (test (= (string-not-greaterp 'love 'love) 4)) -;; (test (= (string-not-greaterp #\a #\a) 1)) -;; (test (= (string-not-greaterp #\a #\b) 0)) -;; (test (not (string-not-greaterp #\z #\a))) - - -;; (test (eql (string-not-lessp "" "") 0)) -;; (test (eql (string-not-lessp "dog" "dog") 3)) -;; (test (eql (string-not-lessp " " " ") 1)) -;; (test (eql (string-not-lessp "abc" "") 0)) -;; (test (not (string-not-lessp "" "abc"))) -;; (test (not (string-not-lessp "ab" "abc"))) -;; (test (eql (string-not-lessp "abc" "ab") 2)) -;; (test (eql (string-not-lessp "aba" "aaa") 1)) -;; (test (not (string-not-lessp "aaa" "aba"))) -;; (test (eql (string-not-lessp "my cat food" "your dog food" :start1 6 :start2 8) 11)) -;; (test (eql (string-not-lessp "cat food 2 dollars" "dog food 3 dollars" -;; :start1 3 :end1 9 :start2 3 :end2 9) 9)) -;; (test (eql (string-not-lessp "xyzabcde" "abcd" :start1 3) 7)) -;; (test (not (string-not-lessp "abc" "abc" :end1 1))) -;; (test (eql (string-not-lessp "xyzabc" "a" :start1 3 :end1 5) 4)) -;; (test (eql (string-not-lessp "xyzXYZ" "abcxyz" :start2 3) 3)) -;; (test (eql (string-not-lessp "abcxyz" "abcxyz" :end2 3) 3)) -;; (test (not (string-not-lessp "xyzXYZ" "abcxyz" :end1 2 :start2 3))) -;; (test (eql (string-not-lessp "xyzabc" "abcdef" :start1 3 :end2 3) 6)) -;; (test (eql (string-not-lessp "z" "aaaa") 0)) -;; (test (eql (string-not-lessp "pTTTxTTTqqq" "pppTTTaTTT" :start1 1 :start2 3) 4)) -;; (test (eql (string-not-lessp "pppTTTxTTTqqq" "pTTTaTTT" -;; :start1 6 :end1 7 -;; :start2 4 :end2 5) 6)) +;; (make-array 0 :element-type 'base-char)) 0)) +(test (and (eql (string-not-greaterp "abc" "ABC") 3) + (eql (string-not-greaterp "ABC" "abc") 3))) +(test (not (string-not-greaterp 'love 'hate))) +(test (= (string-not-greaterp 'peace 'war) 0)) +(test (= (string-not-greaterp 'love 'love) 4)) +(test (= (string-not-greaterp #\a #\a) 1)) +(test (= (string-not-greaterp #\a #\b) 0)) +(test (not (string-not-greaterp #\z #\a))) + + +(test (eql (string-not-lessp "" "") 0)) +(test (eql (string-not-lessp "dog" "dog") 3)) +(test (eql (string-not-lessp " " " ") 1)) +(test (eql (string-not-lessp "abc" "") 0)) +(test (not (string-not-lessp "" "abc"))) +(test (not (string-not-lessp "ab" "abc"))) +(test (eql (string-not-lessp "abc" "ab") 2)) +(test (eql (string-not-lessp "aba" "aaa") 1)) +(test (not (string-not-lessp "aaa" "aba"))) +(test (eql (string-not-lessp "my cat food" "your dog food" :start1 6 :start2 8) 11)) +(test (eql (string-not-lessp "cat food 2 dollars" "dog food 3 dollars" + :start1 3 :end1 9 :start2 3 :end2 9) 9)) +(test (eql (string-not-lessp "xyzabcde" "abcd" :start1 3) 7)) +(test (not (string-not-lessp "abc" "abc" :end1 1))) +(test (eql (string-not-lessp "xyzabc" "a" :start1 3 :end1 5) 4)) +(test (eql (string-not-lessp "xyzXYZ" "abcxyz" :start2 3) 3)) +(test (eql (string-not-lessp "abcxyz" "abcxyz" :end2 3) 3)) +(test (not (string-not-lessp "xyzXYZ" "abcxyz" :end1 2 :start2 3))) +(test (eql (string-not-lessp "xyzabc" "abcdef" :start1 3 :end2 3) 6)) +(test (eql (string-not-lessp "z" "aaaa") 0)) +(test (eql (string-not-lessp "pTTTxTTTqqq" "pppTTTaTTT" :start1 1 :start2 3) 4)) +(test (eql (string-not-lessp "pppTTTxTTTqqq" "pTTTaTTT" + :start1 6 :end1 7 + :start2 4 :end2 5) 6)) ;; (test (eql (string-not-lessp (make-array 0 :element-type 'character) -;; (make-array 0 :element-type 'base-char)) 0)) -;; (test (and (eql (string-not-lessp "abc" "ABC") 3) -;; (eql (string-not-lessp "ABC" "abc") 3))) -;; (test (= (string-not-lessp 'love 'hate) 0)) -;; (test (not (string-not-lessp 'peace 'war))) -;; (test (= (string-not-lessp 'love 'love) 4)) -;; (test (= (string-not-lessp #\a #\a) 1)) -;; (test (not (string-not-lessp #\a #\b))) -;; (test (= (string-not-lessp #\z #\a) 0)) +;; (make-array 0 :element-type 'base-char)) 0)) +(test (and (eql (string-not-lessp "abc" "ABC") 3) + (eql (string-not-lessp "ABC" "abc") 3))) +(test (= (string-not-lessp 'love 'hate) 0)) +(test (not (string-not-lessp 'peace 'war))) +(test (= (string-not-lessp 'love 'love) 4)) +(test (= (string-not-lessp #\a #\a) 1)) +(test (not (string-not-lessp #\a #\b))) +(test (= (string-not-lessp #\z #\a) 0)) @@ -657,5 +653,5 @@ ;; JSCL: BUG?: this barfs inside the JS function xstring(), and i don't know why. ;; (test (subtypep (upgraded-array-element-type -;; (array-element-type (make-string 3 :element-type 'standard-char))) -;; 'character)) +;; (array-element-type (make-string 3 :element-type 'standard-char))) +;; 'character))