git.fiddlerwoaroof.com
Browse code

chore: begin to add tests

Edward authored on 03/01/2021 06:24:31
Showing 2 changed files
... ...
@@ -21,5 +21,17 @@
21 21
   :depends-on (:data-lens
22 22
                :alexandria)
23 23
   :serial t
24
+  :in-order-to ((test-op (test-op :data-lens/transducer/test)))
24 25
   :components ((:file "package")
25 26
                (:file "transducers")))
27
+
28
+(asdf:defsystem #:data-lens/transducer/test
29
+  :description "tests for the transducers"
30
+  :author "Edward Langley <el-cl@elangley.org>"
31
+  :license "MIT"
32
+  :depends-on (:data-lens/beta/transducer
33
+               :fiveam)
34
+  :serial t
35
+  :perform (test-op (o c) (symbol-call :fiveam '#:run! :data-lens.transducers))
36
+  :components ((:module "t"
37
+                :components ((:file "transducer")))))
26 38
new file mode 100644
... ...
@@ -0,0 +1,39 @@
1
+(defpackage :fwoar.lisp-sandbox.t.transducer
2
+  (:use :cl )
3
+  (:export ))
4
+(in-package :fwoar.lisp-sandbox.t.transducer)
5
+
6
+(5am:def-suite :data-lens.transducers)
7
+(5am:in-suite :data-lens.transducers)
8
+
9
+(5am:def-test mapping (:suite :data-lens.transducers)
10
+  (5am:is (equal '(2 3 4)
11
+                 (data-lens.transducers:transduce (data-lens.transducers:mapping '1+)
12
+                                                  'data-lens.transducers:list-builder
13
+                                                  '(1 2 3)))))
14
+
15
+(5am:def-test mv-mapping (:suite :data-lens.transducers)
16
+  (5am:is (equal '((2 0) (3 1) (4 2))
17
+                 (data-lens.transducers:transduce (data-lens.transducers:mv-mapping
18
+                                                   (lambda (it)
19
+                                                     (values (1+ it) (1- it))))
20
+                                                  'data-lens.transducers:list-builder
21
+                                                  '(1 2 3)))))
22
+
23
+(5am:def-test transducer-composition (:suite :data-lens.transducers)
24
+  (5am:is (equal '(3 5 7)
25
+                 (data-lens.transducers:transduce (data-lens:•
26
+                                                   (data-lens.transducers:mapping
27
+                                                    (lambda (x)
28
+                                                      (* 2 x)))
29
+                                                   (data-lens.transducers:mapping '1+))
30
+                                                  'data-lens.transducers:list-builder
31
+                                                  '(1 2 3))))
32
+  (5am:is (equal '(3 5 7)
33
+                 (data-lens.transducers:transduce (data-lens:•
34
+                                                   (data-lens.transducers:mapping
35
+                                                    (lambda (x)
36
+                                                      (* 2 x)))
37
+                                                   (data-lens.transducers:mapping '1+))
38
+                                                  'data-lens.transducers:list-builder
39
+                                                  '(1 2 3)))))