aboutsummaryrefslogtreecommitdiff
path: root/tests/test/hnh-util-lens.scm
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test/hnh-util-lens.scm')
-rw-r--r--tests/test/hnh-util-lens.scm38
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/test/hnh-util-lens.scm b/tests/test/hnh-util-lens.scm
index bcfafba2..0508553a 100644
--- a/tests/test/hnh-util-lens.scm
+++ b/tests/test/hnh-util-lens.scm
@@ -19,3 +19,41 @@
(test-equal '(1 (10) 3) (set '(1 (2) 3) (ref 1) (ref 0) 10))
;; (set (list (iota 10)) first first 11)
+
+(define cadr* (compose-lenses cdr* car*))
+
+(test-group "Primitive lenses get and set"
+ (define lst '(1 2 3 4 5))
+ (test-equal 1 (car* lst))
+ (test-equal '(2 3 4 5) (cdr* lst))
+
+ (test-equal '(10 2 3 4 5)
+ (car* lst 10)))
+
+(test-group "Primitive lens composition"
+ (define lst '(1 2 3 4 5))
+ (test-equal 2 (cadr* lst))
+ (test-equal '(1 10 3 4 5) (cadr* lst 10)))
+
+(test-group "Modify"
+ (define lst '(1 2 3 4 5))
+ (test-equal '(10 2 3 4 5) (modify lst car* * 10))
+ (test-equal '(1 20 3 4 5) (modify lst cadr* * 10))
+ )
+
+(test-group "Modify*"
+ (define lst '(1 2 3 4 5))
+ (test-equal '(1 2 4 4 5) (modify* lst cdr* cdr* car* 1+)))
+
+;; modify
+;; modify*
+;; set
+;; get
+
+;; identity-lens
+;; compose-lenses
+;; lens-compose
+
+;; ref car* cdr*
+
+;; each