From 91db3f2432041c3fd7b548038117969526bbe5ae Mon Sep 17 00:00:00 2001 From: Greg Look Date: Thu, 22 May 2014 01:16:55 -0700 Subject: [PATCH] Improve test coverage. --- test/puget/data_test.clj | 73 +++++++++++++++++++++---------------- test/puget/printer_test.clj | 21 ++++++++++- 2 files changed, 60 insertions(+), 34 deletions(-) diff --git a/test/puget/data_test.clj b/test/puget/data_test.clj index bf6598a..73fba35 100644 --- a/test/puget/data_test.clj +++ b/test/puget/data_test.clj @@ -5,23 +5,36 @@ [puget.data :as data])) -(defrecord TestRecord [x y]) -(data/extend-tagged-map TestRecord 'test/record) -(deftest tagged-value-extension - (let [rec (TestRecord. :foo :bar)] - (is (= 'test/record (data/edn-tag rec))) - (is (= {:x :foo, :y :bar} (data/edn-value rec))))) +(defn test-tagged-value + [data t v & [reader]] + (is (= t (data/edn-tag data))) + (is (= v (data/edn-value data))) + (let [s (data/edn-str data) + data' (edn/read-string (if reader {:readers {t reader}} {}) s)] + (is (= s (pr-str data))) + (is (= data data')))) -(deftest generic-tagged-value - (let [data (data/tagged-value 'foo :bar) - string (data/edn-str data)] - (is (= 'foo (data/edn-tag data))) - (is (= :bar (data/edn-value data))) - (is (= data (edn/read-string {:default data/tagged-value} string))))) +(deftest inst-tagged-values + (test-tagged-value + (java.util.Date. 1383271402749) + 'inst "2013-11-01T02:03:22.749-00:00")) + + +(deftest uuid-tagged-values + (test-tagged-value + (java.util.UUID/fromString "96d91316-53b9-4800-81c1-97ae9f4b86b0") + 'uuid "96d91316-53b9-4800-81c1-97ae9f4b86b0")) + +(deftest uri-tagged-values + (test-tagged-value + (java.net.URI. "http://en.wikipedia.org/wiki/Uniform_resource_identifier") + 'uri "http://en.wikipedia.org/wiki/Uniform_resource_identifier" + data/read-uri)) -(deftest byte-arrays + +(deftest bin-tagged-values (let [byte-arr (.getBytes "foobarbaz") string (data/edn-str byte-arr) read-arr (edn/read-string {:readers {'bin data/read-bin}} string)] @@ -31,22 +44,18 @@ (is (= (seq byte-arr) (seq read-arr))))) -(defn test-tagged-value - [data t v] - (is (= t (data/edn-tag data))) - (is (= v (data/edn-value data))) - (let [s (data/edn-str data)] - (is (= s (pr-str data))))) - - -(deftest built-in-printing - (testing "TaggedValue" - (test-tagged-value - (java.util.Date. 1383271402749) - 'inst "2013-11-01T02:03:22.749-00:00") - (test-tagged-value - (java.util.UUID/fromString "96d91316-53b9-4800-81c1-97ae9f4b86b0") - 'uuid "96d91316-53b9-4800-81c1-97ae9f4b86b0") - (test-tagged-value - (java.net.URI. "http://en.wikipedia.org/wiki/Uniform_resource_identifier") - 'uri "http://en.wikipedia.org/wiki/Uniform_resource_identifier"))) +(deftest generic-tagged-value + (let [data (data/tagged-value 'foo :bar) + string (data/edn-str data)] + (is (= 'foo (data/edn-tag data))) + (is (= :bar (data/edn-value data))) + (is (= "#foo :bar" (pr-str data))) + (is (= data (edn/read-string {:default data/tagged-value} string))))) + + +(defrecord TestRecord [x y]) +(data/extend-tagged-map TestRecord 'test/record) +(deftest tagged-value-extension + (let [rec (TestRecord. :foo :bar)] + (is (= 'test/record (data/edn-tag rec))) + (is (= {:x :foo, :y :bar} (data/edn-value rec))))) diff --git a/test/puget/printer_test.clj b/test/puget/printer_test.clj index ed1e67a..06c3e51 100644 --- a/test/puget/printer_test.clj +++ b/test/puget/printer_test.clj @@ -3,10 +3,27 @@ [clojure.string :as str] [clojure.test :refer :all] (puget - [data :as data] + [data :refer [TaggedValue]] [printer :refer :all]))) +(deftest color-scheme-setting + (let [old-scheme *color-scheme*] + (set-color-scheme! {:tag [:green]}) + (is (= [:green] (:tag *color-scheme*))) + (set-color-scheme! :nil [:black] :number [:bold :cyan]) + (is (= [:black] (:nil *color-scheme*))) + (is (= [:bold :cyan] (:number *color-scheme*))) + (set-color-scheme! old-scheme))) + + +(deftest map-delimiter-setting + (let [old-delim *map-delimiter*] + (set-map-commas!) + (is (= "," *map-delimiter*)) + (alter-var-root #'*map-delimiter* (constantly old-delim)))) + + (deftest canonical-primitives (testing "Primitive values" (are [v text] (= text (-> v pprint with-out-str str/trim)) @@ -50,7 +67,7 @@ (deftest canonical-tagged-value - (let [tval (reify data/TaggedValue + (let [tval (reify TaggedValue (edn-tag [this] 'foo) (edn-value [this] :bar/baz)) doc (canonize tval)]))