Browse code
chore: begin to add tests
Edward authored on 03/01/2021 06:24:31
Showing 2 changed files
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))))) |