|
5 | 5 | [clojure.test.check.generators :as gen :include-macros true]
|
6 | 6 | [clojure.test.check.properties :as prop :include-macros true]
|
7 | 7 | [cats.core :as m]
|
8 |
| - [cats.labs.lens :as l]) |
| 8 | + [cats.labs.lens :as l] |
| 9 | + [cats.labs.traversals :as tv]) |
9 | 10 | :clj
|
10 | 11 | (:require [clojure.test :as t]
|
11 | 12 | [clojure.test.check]
|
12 | 13 | [clojure.test.check.clojure-test :refer [defspec]]
|
13 | 14 | [clojure.test.check.generators :as gen]
|
14 | 15 | [clojure.test.check.properties :as prop]
|
15 | 16 | [cats.core :as m]
|
16 |
| - [cats.labs.lens :as l])) |
| 17 | + [cats.labs.lens :as l] |
| 18 | + [cats.labs.traversals :as tv])) |
17 | 19 | #?(:cljs
|
18 | 20 | (:require-macros [clojure.test.check.clojure-test :refer (defspec)])))
|
19 | 21 |
|
|
221 | 223 |
|
222 | 224 | (defn first-traversal-law [{:keys [gen trav]}]
|
223 | 225 | (prop/for-all [s gen]
|
224 |
| - (coll? (l/foci trav s)))) |
| 226 | + (coll? (tv/foci trav s)))) |
225 | 227 |
|
226 | 228 | ;; it
|
227 | 229 |
|
228 | 230 | (def it-traversal
|
229 | 231 | {:gen gen/any
|
230 |
| - :trav l/it}) |
| 232 | + :trav tv/it}) |
231 | 233 |
|
232 | 234 | (defspec it-first-traversal-law 10
|
233 | 235 | (first-traversal-law it-traversal))
|
|
236 | 238 |
|
237 | 239 | (def each-traversal
|
238 | 240 | {:gen gen/any
|
239 |
| - :trav l/each}) |
| 241 | + :trav tv/each}) |
240 | 242 |
|
241 | 243 | (defspec each-first-traversal-law 10
|
242 | 244 | (first-traversal-law each-traversal))
|
|
245 | 247 |
|
246 | 248 | (def filter-traversal
|
247 | 249 | {:gen gen/any
|
248 |
| - :trav (l/filter identity)}) |
| 250 | + :trav (tv/filter identity)}) |
249 | 251 |
|
250 | 252 | (defspec filter-first-traversal-law 10
|
251 | 253 | (first-traversal-law filter-traversal))
|
|
254 | 256 |
|
255 | 257 | (def only-traversal
|
256 | 258 | {:gen gen/any
|
257 |
| - :trav (l/only identity)}) |
| 259 | + :trav (tv/only identity)}) |
258 | 260 |
|
259 | 261 | (defspec only-first-traversal-law 10
|
260 | 262 | (first-traversal-law only-traversal))
|
|
263 | 265 |
|
264 | 266 | (def keys-traversal
|
265 | 267 | {:gen (gen/map gen/keyword gen/any)
|
266 |
| - :trav l/keys}) |
| 268 | + :trav tv/keys}) |
267 | 269 |
|
268 | 270 | (defspec keys-first-traversal-law 10
|
269 | 271 | (first-traversal-law keys-traversal))
|
|
272 | 274 |
|
273 | 275 | (def vals-traversal
|
274 | 276 | {:gen (gen/map gen/keyword gen/any)
|
275 |
| - :trav l/vals}) |
| 277 | + :trav tv/vals}) |
276 | 278 |
|
277 | 279 | (defspec vals-first-traversal-law 10
|
278 | 280 | (first-traversal-law vals-traversal))
|
|
281 | 283 |
|
282 | 284 | (def indexed-traversal
|
283 | 285 | {:gen (gen/vector gen/any)
|
284 |
| - :trav l/indexed}) |
| 286 | + :trav tv/indexed}) |
285 | 287 |
|
286 | 288 | (defspec indexed-first-traversal-law 10
|
287 | 289 | (first-traversal-law indexed-traversal))
|
|
290 | 292 |
|
291 | 293 | (def nothing-traversal
|
292 | 294 | {:gen gen/any
|
293 |
| - :trav l/nothing}) |
| 295 | + :trav tv/nothing}) |
294 | 296 |
|
295 | 297 | (defspec nothing-first-traversal-law 10
|
296 | 298 | (first-traversal-law nothing-traversal))
|
|
299 | 301 |
|
300 | 302 | (def both-traversal
|
301 | 303 | {:gen (gen/vector gen/int)
|
302 |
| - :trav (l/both (filter odd?) (filter #(< % 5)))}) |
| 304 | + :trav (tv/both (filter odd?) (filter #(< % 5)))}) |
303 | 305 |
|
304 | 306 | (defspec both-first-traversal-law 10
|
305 | 307 | (first-traversal-law both-traversal))
|
|
308 | 310 |
|
309 | 311 | (def lens->traversal
|
310 | 312 | {:gen (with-key :a)
|
311 |
| - :trav (l/lens->traversal (l/key :a))}) |
| 313 | + :trav (tv/lens->traversal (l/key :a))}) |
312 | 314 |
|
313 | 315 | (defspec lens->traversal-first-traversal-law 10
|
314 | 316 | (first-traversal-law lens->traversal))
|
|
350 | 352 | (t/deftest foci-atom
|
351 | 353 | (t/testing "Reflects an atoms focused values"
|
352 | 354 | (let [source (atom [0 1 2 3 4 5])
|
353 |
| - fsource (l/foci-atom (l/only odd?) source)] |
| 355 | + fsource (tv/foci-atom (tv/only odd?) source)] |
354 | 356 | (t/is (= @fsource [1 3 5]))
|
355 | 357 |
|
356 | 358 | (swap! source #(subvec % 2))
|
|
365 | 367 | (t/testing "Supports watches"
|
366 | 368 | (let [source (atom [1 2 3 4 5])
|
367 | 369 | watched (volatile! nil)
|
368 |
| - fsource (l/foci-atom (l/only odd?) source)] |
| 370 | + fsource (tv/foci-atom (tv/only odd?) source)] |
369 | 371 | (add-watch fsource :test (fn [key ref old new]
|
370 | 372 | (vreset! watched [ref old new])))
|
371 | 373 |
|
|
0 commit comments