;; (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)
(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 HACK: a simple COPY-SEQ for testing string functions, since we don't have a real one yet -- remove me
-(defun copy-seq (string)
- (let ((copy (make-string (length string))))
- (dotimes (i (length string) copy)
- (aset copy i (char string i)))))
-
(test (let ((str (copy-seq "0123ABCD890a")))
(and (string= (nstring-downcase str :start 5 :end 7) "0123AbcD890a")
(string= str "0123AbcD890a"))))
(and (eq str0 str)
(string= str " Hello "))))
(test (let* ((str0 (copy-seq
- "occlUDeD cASEmenTs FOreSTAll iNADVertent DEFenestraTION"))
+ "occlUDeD cASEmenTs FOreSTAll iNADVertent DEFenestraTION"))
(str (nstring-capitalize str0)))
(and (eq str0 str)
(string= str
- "Occluded Casements Forestall Inadvertent Defenestration"))))
+ "Occluded Casements Forestall Inadvertent Defenestration"))))
(test (let* ((str0 (copy-seq "DON'T!"))
(str (nstring-capitalize str0)))
(and (eq str0 str)
;; (test (string= (string-trim '(#\Space #\Tab #\Newline) " garbanzo beans
;; ") "garbanzo beans"))
(test (string= (string-trim " (*)" " ( *three (silly) words* ) ")
- "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* ) "))
+ "three (silly) words* ) "))
(test (string= (string-right-trim " (*)" " ( *three (silly) words* ) ")
- " ( *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 (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))
+ :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")))
(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))
(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))
(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)))
(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))
(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)))
(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))
+ :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<= "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 (eql (string<= (make-array 0 :element-type 'character)
-;; (make-array 0 :element-type 'base-char)) 0))
+;; (make-array 0 :element-type 'base-char)) 0))
(test (not (string<= 'love 'hate)))
(test (= (string<= 'peace 'war) 0))
(test (= (string<= 'love 'love) 4))
(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))
+ :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>= "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 (eql (string>= (make-array 0 :element-type 'character)
-;; (make-array 0 :element-type 'base-char)) 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-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"))
(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")))
(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)))
+ :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 "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))
+ :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))))
+;; (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 (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)))
+ :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 "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))
+ :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))))
+;; (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-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))
+ :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 "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))
+ :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))
+;; (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 (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))
+ :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 "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))
+ :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))
+;; (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))
;; 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))