(ns pocketbook.transit-test (:require [clojure.test :refer [deftest is testing]] [pocketbook.transit :as t])) (deftest roundtrip-basic-types (doseq [v [42 "hello" :keyword true nil [1 2 3] {:a 1 :b {:c 2}} #{1 2 3}]] (is (= v (t/decode (t/encode v))) (str "Roundtrip failed for: " (pr-str v))))) (deftest roundtrip-clojure-types (let [uuid (java.util.UUID/randomUUID) inst #inst "2026-04-04T10:00:00Z"] (is (= uuid (t/decode (t/encode uuid)))) (is (= inst (t/decode (t/encode inst)))))) (deftest roundtrip-complex-structure (let [data [{:id "todo:1" :value {:text "Buy milk" :tags #{:groceries :urgent}} :version 3 :updated 1743760800000} {:id "todo:2" :deleted true :version 5}]] (is (= data (t/decode (t/encode data)))))) (deftest encode-returns-string (let [v {:hello "world" :nums [1 2 3]} s (t/encode v)] (is (string? s)) (is (= v (t/decode s)))))