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 (= "&lt;foo&amp;bar&gt;"
    1.15 +         (s/escape {\& "&amp;" \< "&lt;" \> "&gt;"} "<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))))