annotate src/clojure/test_clojure/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
rev   line source
rlm@10 1 (ns clojure.test-clojure.string
rlm@10 2 (:require [clojure.string :as s])
rlm@10 3 (:use clojure.test))
rlm@10 4
rlm@10 5 (deftest t-split
rlm@10 6 (is (= ["a" "b"] (s/split "a-b" #"-")))
rlm@10 7 (is (= ["a" "b-c"] (s/split "a-b-c" #"-" 2)))
rlm@10 8 (is (vector? (s/split "abc" #"-"))))
rlm@10 9
rlm@10 10 (deftest t-reverse
rlm@10 11 (is (= "tab" (s/reverse "bat"))))
rlm@10 12
rlm@10 13 (deftest t-replace
rlm@10 14 (is (= "faabar" (s/replace "foobar" \o \a)))
rlm@10 15 (is (= "barbarbar" (s/replace "foobarfoo" "foo" "bar")))
rlm@10 16 (is (= "FOObarFOO" (s/replace "foobarfoo" #"foo" s/upper-case))))
rlm@10 17
rlm@10 18 (deftest t-replace-first
rlm@10 19 (is (= "barbarfoo" (s/replace-first "foobarfoo" "foo" "bar")))
rlm@10 20 (is (= "barbarfoo" (s/replace-first "foobarfoo" #"foo" "bar")))
rlm@10 21 (is (= "z.ology" (s/replace-first "zoology" \o \.)))
rlm@10 22 (is (= "FOObarfoo" (s/replace-first "foobarfoo" #"foo" s/upper-case))))
rlm@10 23
rlm@10 24 (deftest t-join
rlm@10 25 (are [x coll] (= x (s/join coll))
rlm@10 26 "" nil
rlm@10 27 "" []
rlm@10 28 "1" [1]
rlm@10 29 "12" [1 2])
rlm@10 30 (are [x sep coll] (= x (s/join sep coll))
rlm@10 31 "1,2,3" \, [1 2 3]
rlm@10 32 "" \, []
rlm@10 33 "1" \, [1]
rlm@10 34 "1 and-a 2 and-a 3" " and-a " [1 2 3]))
rlm@10 35
rlm@10 36 (deftest t-trim-newline
rlm@10 37 (is (= "foo" (s/trim-newline "foo\n")))
rlm@10 38 (is (= "foo" (s/trim-newline "foo\r\n")))
rlm@10 39 (is (= "foo" (s/trim-newline "foo")))
rlm@10 40 (is (= "" (s/trim-newline ""))))
rlm@10 41
rlm@10 42 (deftest t-capitalize
rlm@10 43 (is (= "Foobar" (s/capitalize "foobar")))
rlm@10 44 (is (= "Foobar" (s/capitalize "FOOBAR"))))
rlm@10 45
rlm@10 46 (deftest t-triml
rlm@10 47 (is (= "foo " (s/triml " foo ")))
rlm@10 48 (is (= "" (s/triml " "))))
rlm@10 49
rlm@10 50 (deftest t-trimr
rlm@10 51 (is (= " foo" (s/trimr " foo ")))
rlm@10 52 (is (= "" (s/trimr " "))))
rlm@10 53
rlm@10 54 (deftest t-trim
rlm@10 55 (is (= "foo" (s/trim " foo \r\n"))))
rlm@10 56
rlm@10 57 (deftest t-upper-case
rlm@10 58 (is (= "FOOBAR" (s/upper-case "Foobar"))))
rlm@10 59
rlm@10 60 (deftest t-lower-case
rlm@10 61 (is (= "foobar" (s/lower-case "FooBar"))))
rlm@10 62
rlm@10 63 (deftest nil-handling
rlm@10 64 (are [f args] (thrown? NullPointerException (apply f args))
rlm@10 65 s/reverse [nil]
rlm@10 66 s/replace [nil #"foo" "bar"]
rlm@10 67 s/replace-first [nil #"foo" "bar"]
rlm@10 68 s/capitalize [nil]
rlm@10 69 s/upper-case [nil]
rlm@10 70 s/lower-case [nil]
rlm@10 71 s/split [nil #"-"]
rlm@10 72 s/split [nil #"-" 1]
rlm@10 73 s/trim [nil]
rlm@10 74 s/triml [nil]
rlm@10 75 s/trimr [nil]
rlm@10 76 s/trim-newline [nil]))
rlm@10 77
rlm@10 78 (deftest char-sequence-handling
rlm@10 79 (are [result f args] (let [[^CharSequence s & more] args]
rlm@10 80 (= result (apply f (StringBuffer. s) more)))
rlm@10 81 "paz" s/reverse ["zap"]
rlm@10 82 "foo:bar" s/replace ["foo-bar" \- \:]
rlm@10 83 "ABC" s/replace ["abc" #"\w" s/upper-case]
rlm@10 84 "faa" s/replace ["foo" #"o" (StringBuffer. "a")]
rlm@10 85 "baz::quux" s/replace-first ["baz--quux" #"--" "::"]
rlm@10 86 "baz::quux" s/replace-first ["baz--quux" (StringBuffer. "--") (StringBuffer. "::")]
rlm@10 87 "zim-zam" s/replace-first ["zim zam" #" " (StringBuffer. "-")]
rlm@10 88 "Pow" s/capitalize ["POW"]
rlm@10 89 "BOOM" s/upper-case ["boom"]
rlm@10 90 "whimper" s/lower-case ["whimPER"]
rlm@10 91 ["foo" "bar"] s/split ["foo-bar" #"-"]
rlm@10 92 "calvino" s/trim [" calvino "]
rlm@10 93 "calvino " s/triml [" calvino "]
rlm@10 94 " calvino" s/trimr [" calvino "]
rlm@10 95 "the end" s/trim-newline ["the end\r\n\r\r\n"]
rlm@10 96 true s/blank? [" "]
rlm@10 97 ["a" "b"] s/split-lines ["a\nb"]
rlm@10 98 "fa la la" s/escape ["fo lo lo" {\o \a}]))
rlm@10 99
rlm@10 100 (deftest t-escape
rlm@10 101 (is (= "&lt;foo&amp;bar&gt;"
rlm@10 102 (s/escape "<foo&bar>" {\& "&amp;" \< "&lt;" \> "&gt;"})))
rlm@10 103 (is (= " \\\"foo\\\" "
rlm@10 104 (s/escape " \"foo\" " {\" "\\\""})))
rlm@10 105 (is (= "faabor"
rlm@10 106 (s/escape "foobar" {\a \o, \o \a}))))
rlm@10 107
rlm@10 108 (deftest t-blank
rlm@10 109 (is (s/blank? nil))
rlm@10 110 (is (s/blank? ""))
rlm@10 111 (is (s/blank? " "))
rlm@10 112 (is (s/blank? " \t \n \r "))
rlm@10 113 (is (not (s/blank? " foo "))))
rlm@10 114
rlm@10 115 (deftest t-split-lines
rlm@10 116 (let [result (s/split-lines "one\ntwo\r\nthree")]
rlm@10 117 (is (= ["one" "two" "three"] result))
rlm@10 118 (is (vector? result)))
rlm@10 119 (is (= (list "foo") (s/split-lines "foo"))))
rlm@10 120