Skip to content

Commit fdc5e7b

Browse files
committed
Start converting tests
1 parent d86cd10 commit fdc5e7b

File tree

5 files changed

+70
-55
lines changed

5 files changed

+70
-55
lines changed

.dir-locals.el

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,8 @@
1-
((nil . ((cider-clojure-cli-global-options . "-A:dev:test"))))
1+
((nil . ((cider-clojure-cli-global-options . "-A:dev:test")
2+
(cider-repl-display-help-banner . nil)
3+
(cider-redirect-server-output-to-repl . t)
4+
(cider-default-cljs-repl . node)))
5+
(clojure . ((eval . (define-clojure-indent
6+
(assoc 0)
7+
(ex-info 0)
8+
(for* 1))))))

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@ scratch.clj
1111
pom.xml
1212
pom.xml.asc
1313
*.jar
14-
*.class
14+
*.classout

src/lambdaisland/deep_diff/diff.cljc

Lines changed: 59 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,19 @@
22
(:require [clojure.data :as data]
33
[clj-diff.core :as seq-diff]))
44

5-
(declare diff)
5+
(declare diff diff-similar left-undiff right-undiff)
66

77
(defrecord Mismatch [- +])
88
(defrecord Deletion [-])
99
(defrecord Insertion [+])
1010

1111
(defprotocol Diff
12-
(diff-similar [x y]))
12+
(-diff-similar [x y]))
1313

1414
;; For property based testing
1515
(defprotocol Undiff
16-
(left-undiff [x])
17-
(right-undiff [x]))
16+
(-left-undiff [x])
17+
(-right-undiff [x]))
1818

1919
(defn- shift-insertions [ins]
2020
(reduce (fn [res idx]
@@ -126,107 +126,115 @@
126126
{}) 0]
127127
exp-ks))))
128128

129+
(defn- primitive? [x]
130+
(or (number? x) (string? x) (boolean? x) (inst? x) (keyword? x) (symbol? x)))
131+
129132
(defn- diff-atom [exp act]
130-
(if #?(:clj (= exp act)
131-
:cljs (= (js->clj exp) (js->clj act)))
133+
(if (= exp act)
132134
exp
133135
(->Mismatch exp act)))
134136

137+
(defn- diff-similar [x y]
138+
#?(:clj (-diff-similar x y)
139+
:cljs
140+
(if (primitive? x)
141+
(diff-atom x y)
142+
(-diff-similar x y))))
143+
144+
(defn- left-undiff [m]
145+
#?(:clj (-left-undiff m)
146+
:cljs
147+
(if (primitive? m)
148+
m
149+
(-left-undiff m))))
150+
151+
(defn- right-undiff [m]
152+
#?(:clj (-right-undiff m)
153+
:cljs
154+
(if (primitive? m)
155+
m
156+
(-right-undiff m))))
157+
135158
(defn diff [exp act]
136-
;; (print "Hola from diff namespace"))
137159
(if (= (data/equality-partition exp) (data/equality-partition act))
138160
(diff-similar exp act)
139161
(diff-atom exp act)))
140162

141163
#?(:clj (extend nil
142164
Diff
143-
{:diff-similar diff-atom})
165+
{:-diff-similar diff-atom})
144166
:cljs (extend-type nil
145167
Diff
146-
(diff-similar [x y] (diff-atom x y))))
168+
(-diff-similar [x y] (diff-atom x y))))
147169

148170
#?(:clj (extend Object
149171
Diff
150-
{:diff-similar (fn [exp act]
151-
(if (.isArray (.getClass ^Object exp))
152-
(diff-seq exp act)
153-
(diff-atom exp act)))})
154-
:cljs (extend-type js/Number
155-
Diff
156-
(diff-similar [x y] (diff-atom (js/Number x) (js/Number y)))))
172+
{:-diff-similar (fn [exp act]
173+
(if (.isArray (.getClass ^Object exp))
174+
(diff-seq exp act)
175+
(diff-atom exp act)))}))
157176

158-
#?(:cljs (extend-type js/String
159-
Diff
160-
(diff-similar [x y] (diff-atom (js/String x) (js/String y)))))
161-
162-
#?(:cljs (extend-type js/Boolean
163-
Diff
164-
(diff-similar [x y] (diff-atom (js/Boolean x) (js/Boolean y)))))
165-
166-
#?(:cljs (extend-type js/Date
167-
Diff
168-
(diff-similar [x y] (diff-atom (js/Date x) (js/Date y)))))
169177

170178
(extend-protocol Diff
171179
#?(:clj java.util.List
172180
:cljs cljs.core/List)
173-
(diff-similar [exp act] (diff-seq exp act))
181+
(-diff-similar [exp act] (diff-seq exp act))
182+
183+
#?@(:cljs
184+
[cljs.core/PersistentVector
185+
(-diff-similar [exp act] (diff-seq exp act))
174186

175-
;; #?(:clj java.util.Vector
176-
;; :cljs cljs.core/PersistentVector)
177-
;; (diff-similar [exp act] (diff-seq exp act)))
187+
cljs.core/PersistentHashMap
188+
(-diff-similar [exp act] (diff-map exp act))])
178189

179190
#?(:clj java.util.Set
180191
:cljs cljs.core/PersistentHashSet)
181-
(diff-similar [exp act]
192+
(-diff-similar [exp act]
182193
(let [exp-seq (seq exp)
183194
act-seq (seq act)]
184195
(set (diff-seq exp-seq (concat (filter act exp-seq)
185196
(remove exp act-seq))))))
186197
#?(:clj java.util.Map
187198
:cljs cljs.core/PersistentArrayMap)
188-
(diff-similar [exp act] (diff-map exp act)))
199+
(-diff-similar [exp act] (diff-map exp act)))
189200

190201
(extend-protocol Undiff
191202
#?(:clj java.util.List
192203
:cljs cljs.core/List)
193-
(left-undiff [s] (map left-undiff (remove #(instance? Insertion %) s)))
194-
(right-undiff [s] (map right-undiff (remove #(instance? Deletion %) s)))
204+
(-left-undiff [s] (map left-undiff (remove #(instance? Insertion %) s)))
205+
(-right-undiff [s] (map right-undiff (remove #(instance? Deletion %) s)))
195206

196207
#?(:clj java.util.Set
197208
:cljs cljs.core/PersistentHashSet)
198-
(left-undiff [s] (set (left-undiff (seq s))))
199-
(right-undiff [s] (set (right-undiff (seq s))))
209+
(-left-undiff [s] (set (left-undiff (seq s))))
210+
(-right-undiff [s] (set (right-undiff (seq s))))
200211

201212
#?(:clj java.util.Map
202213
:cljs cljs.core/PersistentArrayMap)
203-
(left-undiff [m]
214+
(-left-undiff [m]
204215
(into {}
205216
(comp (remove #(instance? Insertion (key %)))
206217
(map (juxt (comp left-undiff key) (comp left-undiff val))))
207218
m))
208-
(right-undiff [m]
219+
(-right-undiff [m]
209220
(into {}
210221
(comp (remove #(instance? Deletion (key %)))
211222
(map (juxt (comp right-undiff key) (comp right-undiff val))))
212223
m))
213224

214225
Mismatch
215-
(left-undiff [m] (get m :-))
216-
(right-undiff [m] (get m :+))
226+
(-left-undiff [m] (get m :-))
227+
(-right-undiff [m] (get m :+))
217228

218229
Insertion
219-
(right-undiff [m] (get m :+))
230+
(-right-undiff [m] (get m :+))
220231

221232
Deletion
222-
(left-undiff [m] (get m :-)))
233+
(-left-undiff [m] (get m :-)))
223234

224-
#?(:clj (extend nil Undiff {:left-undiff identity :right-undiff identity})
225-
:cljs (extend-type nil Undiff
226-
(left-undiff [m] (identity m))
227-
(right-undiff [m] (identity m))))
235+
(extend-type nil
236+
Undiff
237+
(-left-undiff [m] m)
238+
(-right-undiff [m] m))
228239

229-
#?(:clj (extend Object Undiff {:left-undiff identity :right-undiff identity})
230-
:cljs (extend-type js/Number Undiff
231-
(left-undiff [m] (identity m))
232-
(right-undiff [m] (identity m))))
240+
#?(:clj (extend Object Undiff {:-left-undiff identity :-right-undiff identity}))

test/lambdaisland/deep_diff/diff_test.clj renamed to test/lambdaisland/deep_diff/diff_test.cljc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
(ns lambdaisland.deep-diff.diff-test
2-
(:require [clojure.test :refer :all]
2+
(:require [clojure.test :refer [deftest testing is are]]
33
[clojure.test.check :as tc]
44
[clojure.test.check.clojure-test :refer [defspec]]
55
[clojure.test.check.generators :as gen]

test/lambdaisland/deep_diff/printer_test.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
(ns lambdaisland.deep-diff.printer-test
2-
(:require [clojure.test :refer :all]
2+
(:require [clojure.test :refer [deftest testing is are]]
33
[lambdaisland.deep-diff.diff :as diff]
44
[lambdaisland.deep-diff.printer :as printer])
55
(:import (java.sql Timestamp)

0 commit comments

Comments
 (0)