rlm@10: (ns clojure.contrib.test-string rlm@10: (:require [clojure.contrib.string :as s]) rlm@10: (:use clojure.test)) rlm@10: rlm@10: (deftest t-codepoints rlm@10: (is (= (list 102 111 111 65536 98 97 114) rlm@10: (s/codepoints "foo\uD800\uDC00bar")) rlm@10: "Handles Unicode supplementary characters")) rlm@10: rlm@10: (deftest t-escape rlm@10: (is (= "<foo&bar>" rlm@10: (s/escape {\& "&" \< "<" \> ">"} ""))) rlm@10: (is (= " \\\"foo\\\" " rlm@10: (s/escape {\" "\\\""} " \"foo\" " ))) rlm@10: (is (= "faabor" (s/escape {\a \o, \o \a} "foobar")))) rlm@10: rlm@10: (deftest t-blank rlm@10: (is (s/blank? nil)) rlm@10: (is (s/blank? "")) rlm@10: (is (s/blank? " ")) rlm@10: (is (s/blank? " \t \n \r ")) rlm@10: (is (not (s/blank? " foo ")))) rlm@10: rlm@10: (deftest t-take rlm@10: (is (= "foo" (s/take 3 "foobar"))) rlm@10: (is (= "foobar" (s/take 7 "foobar"))) rlm@10: (is (= "" (s/take 0 "foo")))) rlm@10: rlm@10: (deftest t-drop rlm@10: (is (= "bar" (s/drop 3 "foobar"))) rlm@10: (is (= "" (s/drop 9 "foobar"))) rlm@10: (is (= "foobar" (s/drop 0 "foobar")))) rlm@10: rlm@10: (deftest t-butlast rlm@10: (is (= "foob" (s/butlast 2 "foobar"))) rlm@10: (is (= "" (s/butlast 9 "foobar"))) rlm@10: (is (= "foobar" (s/butlast 0 "foobar")))) rlm@10: rlm@10: (deftest t-tail rlm@10: (is (= "ar" (s/tail 2 "foobar"))) rlm@10: (is (= "foobar" (s/tail 9 "foobar"))) rlm@10: (is (= "" (s/tail 0 "foobar")))) rlm@10: rlm@10: (deftest t-repeat rlm@10: (is (= "foofoofoo" (s/repeat 3 "foo")))) rlm@10: rlm@10: (deftest t-reverse rlm@10: (is (= "tab" (s/reverse "bat")))) rlm@10: rlm@10: (deftest t-replace rlm@10: (is (= "faabar" (s/replace-char \o \a "foobar"))) rlm@10: (is (= "barbarbar" (s/replace-str "foo" "bar" "foobarfoo"))) rlm@10: (is (= "FOObarFOO" (s/replace-by #"foo" s/upper-case "foobarfoo")))) rlm@10: rlm@10: (deftest t-replace-first rlm@10: (is (= "barbarfoo" (s/replace-first-re #"foo" "bar" "foobarfoo"))) rlm@10: (is (= "FOObarfoo" (s/replace-first-by #"foo" s/upper-case "foobarfoo")))) rlm@10: rlm@10: (deftest t-partition rlm@10: (is (= (list "" "abc" "123" "def") rlm@10: (s/partition #"[a-z]+" "abc123def")))) rlm@10: rlm@10: (deftest t-join rlm@10: (is (= "1,2,3" (s/join \, [1 2 3]))) rlm@10: (is (= "" (s/join \, []))) rlm@10: (is (= "1 and-a 2 and-a 3" (s/join " and-a " [1 2 3])))) rlm@10: rlm@10: (deftest t-chop rlm@10: (is (= "fo" (s/chop "foo"))) rlm@10: (is (= "") (s/chop "f")) rlm@10: (is (= "") (s/chop ""))) rlm@10: rlm@10: (deftest t-chomp rlm@10: (is (= "foo" (s/chomp "foo\n"))) rlm@10: (is (= "foo" (s/chomp "foo\r\n"))) rlm@10: (is (= "foo" (s/chomp "foo"))) rlm@10: (is (= "" (s/chomp "")))) rlm@10: rlm@10: (deftest t-swap-case rlm@10: (is (= "fOO!bAR" (s/swap-case "Foo!Bar"))) rlm@10: (is (= "" (s/swap-case "")))) rlm@10: rlm@10: (deftest t-capitalize rlm@10: (is (= "Foobar" (s/capitalize "foobar"))) rlm@10: (is (= "Foobar" (s/capitalize "FOOBAR")))) rlm@10: rlm@10: (deftest t-ltrim rlm@10: (is (= "foo " (s/ltrim " foo "))) rlm@10: (is (= "" (s/ltrim " ")))) rlm@10: rlm@10: (deftest t-rtrim rlm@10: (is (= " foo" (s/rtrim " foo "))) rlm@10: (is (= "" (s/rtrim " ")))) rlm@10: rlm@10: (deftest t-split-lines rlm@10: (is (= (list "one" "two" "three") rlm@10: (s/split-lines "one\ntwo\r\nthree"))) rlm@10: (is (= (list "foo") (s/split-lines "foo")))) rlm@10: rlm@10: (deftest t-upper-case rlm@10: (is (= "FOOBAR" (s/upper-case "Foobar")))) rlm@10: rlm@10: (deftest t-lower-case rlm@10: (is (= "foobar" (s/lower-case "FooBar")))) rlm@10: rlm@10: (deftest t-trim rlm@10: (is (= "foo" (s/trim " foo \r\n")))) rlm@10: rlm@10: (deftest t-substring rlm@10: (is (s/substring? "foo" "foobar")) rlm@10: (is (not (s/substring? "baz" "foobar")))) rlm@10: rlm@10: (deftest t-get rlm@10: (is (= \o (s/get "foo" 1)))) rlm@10: rlm@10: (deftest t-as-str rlm@10: (testing "keyword to string" rlm@10: (is (= "foo") (s/as-str :foo))) rlm@10: (testing "symbol to string" rlm@10: (is (= "foo") (s/as-str 'foo))) rlm@10: (testing "string to string" rlm@10: (is (= "foo") (s/as-str "foo"))) rlm@10: (testing "stringifying non-namish things" rlm@10: (is (= "42") (s/as-str 42))))