Mercurial > lasercutter
diff src/clojure/contrib/test_contrib/test_string.clj @ 10:ef7dbbd6452c
added clojure source goodness
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Sat, 21 Aug 2010 06:25:44 -0400 |
parents | |
children |
line wrap: on
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/src/clojure/contrib/test_contrib/test_string.clj Sat Aug 21 06:25:44 2010 -0400 1.3 @@ -0,0 +1,124 @@ 1.4 +(ns clojure.contrib.test-string 1.5 + (:require [clojure.contrib.string :as s]) 1.6 + (:use clojure.test)) 1.7 + 1.8 +(deftest t-codepoints 1.9 + (is (= (list 102 111 111 65536 98 97 114) 1.10 + (s/codepoints "foo\uD800\uDC00bar")) 1.11 + "Handles Unicode supplementary characters")) 1.12 + 1.13 +(deftest t-escape 1.14 + (is (= "<foo&bar>" 1.15 + (s/escape {\& "&" \< "<" \> ">"} "<foo&bar>"))) 1.16 + (is (= " \\\"foo\\\" " 1.17 + (s/escape {\" "\\\""} " \"foo\" " ))) 1.18 + (is (= "faabor" (s/escape {\a \o, \o \a} "foobar")))) 1.19 + 1.20 +(deftest t-blank 1.21 + (is (s/blank? nil)) 1.22 + (is (s/blank? "")) 1.23 + (is (s/blank? " ")) 1.24 + (is (s/blank? " \t \n \r ")) 1.25 + (is (not (s/blank? " foo ")))) 1.26 + 1.27 +(deftest t-take 1.28 + (is (= "foo" (s/take 3 "foobar"))) 1.29 + (is (= "foobar" (s/take 7 "foobar"))) 1.30 + (is (= "" (s/take 0 "foo")))) 1.31 + 1.32 +(deftest t-drop 1.33 + (is (= "bar" (s/drop 3 "foobar"))) 1.34 + (is (= "" (s/drop 9 "foobar"))) 1.35 + (is (= "foobar" (s/drop 0 "foobar")))) 1.36 + 1.37 +(deftest t-butlast 1.38 + (is (= "foob" (s/butlast 2 "foobar"))) 1.39 + (is (= "" (s/butlast 9 "foobar"))) 1.40 + (is (= "foobar" (s/butlast 0 "foobar")))) 1.41 + 1.42 +(deftest t-tail 1.43 + (is (= "ar" (s/tail 2 "foobar"))) 1.44 + (is (= "foobar" (s/tail 9 "foobar"))) 1.45 + (is (= "" (s/tail 0 "foobar")))) 1.46 + 1.47 +(deftest t-repeat 1.48 + (is (= "foofoofoo" (s/repeat 3 "foo")))) 1.49 + 1.50 +(deftest t-reverse 1.51 + (is (= "tab" (s/reverse "bat")))) 1.52 + 1.53 +(deftest t-replace 1.54 + (is (= "faabar" (s/replace-char \o \a "foobar"))) 1.55 + (is (= "barbarbar" (s/replace-str "foo" "bar" "foobarfoo"))) 1.56 + (is (= "FOObarFOO" (s/replace-by #"foo" s/upper-case "foobarfoo")))) 1.57 + 1.58 +(deftest t-replace-first 1.59 + (is (= "barbarfoo" (s/replace-first-re #"foo" "bar" "foobarfoo"))) 1.60 + (is (= "FOObarfoo" (s/replace-first-by #"foo" s/upper-case "foobarfoo")))) 1.61 + 1.62 +(deftest t-partition 1.63 + (is (= (list "" "abc" "123" "def") 1.64 + (s/partition #"[a-z]+" "abc123def")))) 1.65 + 1.66 +(deftest t-join 1.67 + (is (= "1,2,3" (s/join \, [1 2 3]))) 1.68 + (is (= "" (s/join \, []))) 1.69 + (is (= "1 and-a 2 and-a 3" (s/join " and-a " [1 2 3])))) 1.70 + 1.71 +(deftest t-chop 1.72 + (is (= "fo" (s/chop "foo"))) 1.73 + (is (= "") (s/chop "f")) 1.74 + (is (= "") (s/chop ""))) 1.75 + 1.76 +(deftest t-chomp 1.77 + (is (= "foo" (s/chomp "foo\n"))) 1.78 + (is (= "foo" (s/chomp "foo\r\n"))) 1.79 + (is (= "foo" (s/chomp "foo"))) 1.80 + (is (= "" (s/chomp "")))) 1.81 + 1.82 +(deftest t-swap-case 1.83 + (is (= "fOO!bAR" (s/swap-case "Foo!Bar"))) 1.84 + (is (= "" (s/swap-case "")))) 1.85 + 1.86 +(deftest t-capitalize 1.87 + (is (= "Foobar" (s/capitalize "foobar"))) 1.88 + (is (= "Foobar" (s/capitalize "FOOBAR")))) 1.89 + 1.90 +(deftest t-ltrim 1.91 + (is (= "foo " (s/ltrim " foo "))) 1.92 + (is (= "" (s/ltrim " ")))) 1.93 + 1.94 +(deftest t-rtrim 1.95 + (is (= " foo" (s/rtrim " foo "))) 1.96 + (is (= "" (s/rtrim " ")))) 1.97 + 1.98 +(deftest t-split-lines 1.99 + (is (= (list "one" "two" "three") 1.100 + (s/split-lines "one\ntwo\r\nthree"))) 1.101 + (is (= (list "foo") (s/split-lines "foo")))) 1.102 + 1.103 +(deftest t-upper-case 1.104 + (is (= "FOOBAR" (s/upper-case "Foobar")))) 1.105 + 1.106 +(deftest t-lower-case 1.107 + (is (= "foobar" (s/lower-case "FooBar")))) 1.108 + 1.109 +(deftest t-trim 1.110 + (is (= "foo" (s/trim " foo \r\n")))) 1.111 + 1.112 +(deftest t-substring 1.113 + (is (s/substring? "foo" "foobar")) 1.114 + (is (not (s/substring? "baz" "foobar")))) 1.115 + 1.116 +(deftest t-get 1.117 + (is (= \o (s/get "foo" 1)))) 1.118 + 1.119 +(deftest t-as-str 1.120 + (testing "keyword to string" 1.121 + (is (= "foo") (s/as-str :foo))) 1.122 + (testing "symbol to string" 1.123 + (is (= "foo") (s/as-str 'foo))) 1.124 + (testing "string to string" 1.125 + (is (= "foo") (s/as-str "foo"))) 1.126 + (testing "stringifying non-namish things" 1.127 + (is (= "42") (s/as-str 42))))