/test/contrib/orderedmap_test.cljc

https://github.com/hyperfiddle/hyperfiddle · Clojure · 56 lines · 49 code · 7 blank · 0 comment · 19 complexity · 78463dc59aa947df4929fa3c84eb2657 MD5 · raw file

  1. (ns contrib.orderedmap-test
  2. (:require
  3. [contrib.orderedmap :refer [ordered-map]]
  4. [clojure.test :refer [deftest is testing]]))
  5. (deftest orderedmap|construct
  6. (let [m (apply ordered-map (interleave (range 1 30) (range 1 30)))]
  7. (testing
  8. "Ordered Map Construct"
  9. (is (nil? (get m 30)))
  10. (is (= (get m 1) 1))
  11. (is (nil? (get m nil)))
  12. (is (= (keys m) (range 1 30)))
  13. (is (= (vals m) (range 1 30)))
  14. (is (= (map vector (range 1 30) (range 1 30)) (seq m))))))
  15. (deftest orderedmap|assoc
  16. (let [m (apply ordered-map (interleave (range 1 30) (range 1 30)))]
  17. (testing
  18. "Ordered Map Assoc"
  19. (is (= (get (assoc m 30 30) 30) 30))
  20. (is (= (get (assoc m 1 :a) 1) :a))
  21. (is (= [1 1] (first m)))
  22. (is (= (get (assoc m nil 1) nil) 1))
  23. (is (= (keys (assoc m 30 30)) (range 1 31)))
  24. (is (= (vals (assoc m 30 30)) (range 1 31)))
  25. (is (= (map vector (range 1 31) (range 1 31)) (seq (assoc m 30 30)))))))
  26. (deftest orderedmap|dissoc
  27. (let [m (apply ordered-map (interleave (range 1 30) (range 1 30)))]
  28. (testing
  29. "Ordered Map Dissoc"
  30. (is (nil? (get (dissoc m 29) 29)))
  31. (is (nil? (get (dissoc m 1) 1)))
  32. (is (nil? (get (dissoc (assoc m nil :asdf) nil) nil)))
  33. (is (= (keys (dissoc m 29)) (range 1 29)))
  34. (is (= (vals (dissoc m 29)) (range 1 29)))
  35. (is (= (map vector (range 1 29) (range 1 29)) (seq (dissoc m 29)))))))
  36. (deftest orderedmap|seq
  37. (is (= nil (seq (ordered-map)))))
  38. (deftest orderedmap|reduce-kv
  39. (let [m (apply ordered-map (interleave (range 1 30) (range 1 30)))]
  40. (testing
  41. "Ordered Map reduce-kv"
  42. (is (= (vec (range 1 30)) (reduce-kv (fn [acc k v] (conj acc k)) [] m))))))
  43. #(:clj
  44. (deftest orderedmap|iterator
  45. (let [m (apply ordered-map (interleave (range 1 30) (range 1 30)))
  46. iter (.iterator m)]
  47. (testing
  48. "Ordered Map Iterator"
  49. (is (reduce (fn [acc kv] (if (and (.hasNext iter) (= (.next iter) kv)) true (reduced false))) true m))))))