use check-lens-view etc. more

This commit is contained in:
AlexKnauth 2015-09-07 17:18:54 -04:00
parent fdf72e24cd
commit dbcf91514d
14 changed files with 80 additions and 73 deletions

View File

@ -11,6 +11,7 @@ require racket/contract
module+ test module+ test
require rackunit require rackunit
racket/set racket/set
"../test-util/test-lens.rkt"
provide provide
contract-out contract-out
@ -40,6 +41,6 @@ module+ test
(define second-lens (make-lens second set-second)) (define second-lens (make-lens second set-second))
(define test-alist '((a 1) (b 2) (c 3))) (define test-alist '((a 1) (b 2) (c 3)))
(define first-of-second-lens (lens-compose first-lens second-lens)) (define first-of-second-lens (lens-compose first-lens second-lens))
(check-equal? (lens-view first-of-second-lens test-alist) 'b) (check-lens-view first-of-second-lens test-alist 'b)
(check-equal? (lens-set first-of-second-lens test-alist 'B) '((a 1) (B 2) (c 3))) (check-lens-set first-of-second-lens test-alist 'B '((a 1) (B 2) (c 3)))
(check-eq? (lens-compose) identity-lens) (check-eq? (lens-compose) identity-lens)

View File

@ -8,6 +8,7 @@ require racket/function
module+ test module+ test
require rackunit require rackunit
"../base/main.rkt" "../base/main.rkt"
"../test-util/test-lens.rkt"
provide provide
contract-out contract-out
@ -18,5 +19,5 @@ provide
(make-isomorphism-lens identity identity)) (make-isomorphism-lens identity identity))
(module+ test (module+ test
(check-equal? (lens-view identity-lens 'foo) 'foo) (check-lens-view identity-lens 'foo 'foo)
(check-equal? (lens-set identity-lens 'foo 'bar) 'bar)) (check-lens-set identity-lens 'foo 'bar 'bar))

View File

@ -12,7 +12,8 @@
(module+ test (module+ test
(require rackunit (require rackunit
"../list/list-ref-take-drop.rkt")) "../list/list-ref-take-drop.rkt"
"../test-util/test-lens.rkt"))
(provide (provide
(contract-out (contract-out
@ -34,8 +35,8 @@
(module+ test (module+ test
(define a-b-lens (lens-join/hash 'b third-lens (define a-b-lens (lens-join/hash 'b third-lens
'a first-lens)) 'a first-lens))
(check-equal? (lens-view a-b-lens '(1 2 3)) (check-lens-view a-b-lens '(1 2 3)
(hash 'a 1 'b 3)) (hash 'a 1 'b 3))
(check-equal? (lens-set a-b-lens '(1 2 3) (hash 'a 100 'b 200)) (check-lens-set a-b-lens '(1 2 3) (hash 'a 100 'b 200)
'(100 2 200))) '(100 2 200)))

View File

@ -9,6 +9,7 @@ require racket/list
module+ test module+ test
require rackunit require rackunit
"../list/list-ref-take-drop.rkt" "../list/list-ref-take-drop.rkt"
"../test-util/test-lens.rkt"
provide provide
contract-out contract-out
@ -28,7 +29,7 @@ provide
(lens-join/list first-lens (lens-join/list first-lens
third-lens third-lens
fifth-lens)) fifth-lens))
(check-equal? (lens-view first-third-fifth-lens '(a b c d e f)) (check-lens-view first-third-fifth-lens '(a b c d e f)
'(a c e)) '(a c e))
(check-equal? (lens-set first-third-fifth-lens '(a b c d e f) '(1 2 3)) (check-lens-set first-third-fifth-lens '(a b c d e f) '(1 2 3)
'(1 b 2 d 3 f))) '(1 b 2 d 3 f)))

View File

@ -11,6 +11,7 @@ require racket/contract
module+ test module+ test
require rackunit require rackunit
"../list/list-ref-take-drop.rkt" "../list/list-ref-take-drop.rkt"
"../test-util/test-lens.rkt"
provide provide
contract-out contract-out
@ -28,8 +29,8 @@ provide
(lens-join/string first-lens (lens-join/string first-lens
third-lens third-lens
fifth-lens)) fifth-lens))
(check-equal? (lens-view string-first-third-fifth-lens '(#\a #\b #\c #\d #\e #\f)) (check-lens-view string-first-third-fifth-lens '(#\a #\b #\c #\d #\e #\f)
"ace") "ace")
(check-pred immutable? (lens-view string-first-third-fifth-lens '(#\a #\b #\c #\d #\e #\f))) (check-pred immutable? (lens-view string-first-third-fifth-lens '(#\a #\b #\c #\d #\e #\f)))
(check-equal? (lens-set string-first-third-fifth-lens '(#\a #\b #\c #\d #\e #\f) "ACE") (check-lens-set string-first-third-fifth-lens '(#\a #\b #\c #\d #\e #\f) "ACE"
'(#\A #\b #\C #\d #\E #\f))) '(#\A #\b #\C #\d #\E #\f)))

View File

@ -11,6 +11,7 @@ require racket/contract
module+ test module+ test
require rackunit require rackunit
"../list/list-ref-take-drop.rkt" "../list/list-ref-take-drop.rkt"
"../test-util/test-lens.rkt"
provide provide
contract-out contract-out
@ -28,9 +29,9 @@ provide
(lens-join/vector first-lens (lens-join/vector first-lens
third-lens third-lens
fifth-lens)) fifth-lens))
(check-equal? (lens-view vector-first-third-fifth-lens '(a b c d e f)) (check-lens-view vector-first-third-fifth-lens '(a b c d e f)
#(a c e)) #(a c e))
(check-pred immutable? (lens-view vector-first-third-fifth-lens '(a b c d e f))) (check-pred immutable? (lens-view vector-first-third-fifth-lens '(a b c d e f)))
(check-equal? (lens-set vector-first-third-fifth-lens '(a b c d e f) #(1 2 3)) (check-lens-set vector-first-third-fifth-lens '(a b c d e f) #(1 2 3)
'(1 b 2 d 3 f))) '(1 b 2 d 3 f)))

View File

@ -8,7 +8,8 @@
(module+ test (module+ test
(require rackunit (require rackunit
"../list/list-ref-take-drop.rkt")) "../list/list-ref-take-drop.rkt"
"../test-util/test-lens.rkt"))
(provide (provide
(contract-out [lens-thrush (->* () () #:rest (listof lens?) lens?)])) (contract-out [lens-thrush (->* () () #:rest (listof lens?) lens?)]))
@ -26,5 +27,5 @@
(define second-lens (make-lens second set-second)) (define second-lens (make-lens second set-second))
(define test-alist '((a 1) (b 2) (c 3))) (define test-alist '((a 1) (b 2) (c 3)))
(define first-of-second-lens (lens-thrush second-lens first-lens)) (define first-of-second-lens (lens-thrush second-lens first-lens))
(check-equal? (lens-view first-of-second-lens test-alist) 'b) (check-lens-view first-of-second-lens test-alist 'b)
(check-equal? (lens-set first-of-second-lens test-alist 'B) '((a 1) (B 2) (c 3)))) (check-lens-set first-of-second-lens test-alist 'B '((a 1) (B 2) (c 3))))

View File

@ -9,7 +9,7 @@
"ref.rkt") "ref.rkt")
(module+ test (module+ test
(require rackunit)) (require rackunit "../test-util/test-lens.rkt"))
(provide (provide
(contract-out (contract-out
@ -24,7 +24,7 @@
(append-map hash-ref-lens-and-key ks))) (append-map hash-ref-lens-and-key ks)))
(module+ test (module+ test
(check-equal? (lens-view (hash-pick-lens 'a 'c) (hash 'a 1 'b 2 'c 3)) (check-lens-view (hash-pick-lens 'a 'c) (hash 'a 1 'b 2 'c 3)
(hash 'a 1 'c 3)) (hash 'a 1 'c 3))
(check-equal? (lens-set (hash-pick-lens 'a 'c) (hash 'a 1 'b 2 'c 3) (hash 'a 4 'c 5)) (check-lens-set (hash-pick-lens 'a 'c) (hash 'a 1 'b 2 'c 3) (hash 'a 4 'c 5)
(hash 'a 4 'b 2 'c 5))) (hash 'a 4 'b 2 'c 5)))

View File

@ -15,7 +15,7 @@
"../base/main.rkt") "../base/main.rkt")
(module+ test (module+ test
(require rackunit) (require rackunit "../test-util/test-lens.rkt")
(define assoc-list '((a . 1) (b . 2) (c . 3)))) (define assoc-list '((a . 1) (b . 2) (c . 3))))
@ -45,8 +45,8 @@
(module+ test (module+ test
(define assoc-b-lens (assoc-lens 'b)) (define assoc-b-lens (assoc-lens 'b))
(check-equal? (lens-view assoc-b-lens assoc-list) 2) (check-lens-view assoc-b-lens assoc-list 2)
(check-equal? (lens-set assoc-b-lens assoc-list 200) (check-lens-set assoc-b-lens assoc-list 200
'((a . 1) (b . 200) (c . 3)))) '((a . 1) (b . 200) (c . 3))))
@ -56,8 +56,8 @@
(module+ test (module+ test
(define assv-2-lens (assv-lens 2)) (define assv-2-lens (assv-lens 2))
(define assv-list '((1 . a) (2 . b) (3 . c))) (define assv-list '((1 . a) (2 . b) (3 . c)))
(check-eq? (lens-view assv-2-lens assv-list) 'b) (check-lens-view assv-2-lens assv-list 'b)
(check-equal? (lens-set assv-2-lens assv-list 'FOO) (check-lens-set assv-2-lens assv-list 'FOO
'((1 . a) (2 . FOO) (3 . c)))) '((1 . a) (2 . FOO) (3 . c))))
@ -67,7 +67,7 @@
(module+ test (module+ test
(define assq-a-lens (assq-lens 'a)) (define assq-a-lens (assq-lens 'a))
(define assq-list '((a . 1) (b . 2) (c . 3))) (define assq-list '((a . 1) (b . 2) (c . 3)))
(check-eqv? (lens-view assq-a-lens assq-list) 1) (check-lens-view assq-a-lens assq-list 1)
(check-equal? (lens-set assq-a-lens assq-list 100) (check-lens-set assq-a-lens assq-list 100
'((a . 100) (b . 2) (c . 3)))) '((a . 100) (b . 2) (c . 3))))

View File

@ -31,7 +31,7 @@
"car-cdr.rkt") "car-cdr.rkt")
(module+ test (module+ test
(require rackunit)) (require rackunit "../test-util/test-lens.rkt"))
(define (set-take n lst new-head) (define (set-take n lst new-head)
@ -53,8 +53,8 @@
(module+ test (module+ test
(define take2-lens (take-lens 2)) (define take2-lens (take-lens 2))
(check-equal? (lens-view take2-lens '(1 2 3 4 5)) '(1 2)) (check-lens-view take2-lens '(1 2 3 4 5) '(1 2))
(check-equal? (lens-set take2-lens '(1 2 3 4 5) '(a b)) '(a b 3 4 5))) (check-lens-set take2-lens '(1 2 3 4 5) '(a b) '(a b 3 4 5)))
(define (drop-lens n) (define (drop-lens n)
@ -62,8 +62,8 @@
(module+ test (module+ test
(define drop2-lens (drop-lens 2)) (define drop2-lens (drop-lens 2))
(check-equal? (lens-view drop2-lens '(1 2 3 4 5)) '(3 4 5)) (check-lens-view drop2-lens '(1 2 3 4 5) '(3 4 5))
(check-equal? (lens-set drop2-lens '(1 2 3 4 5) '(a b c)) '(1 2 a b c))) (check-lens-set drop2-lens '(1 2 3 4 5) '(a b c) '(1 2 a b c)))
(define (list-ref-lens i) (define (list-ref-lens i)
@ -82,13 +82,13 @@
(module+ test (module+ test
(check-eqv? (lens-view first-lens '(1 2 3 4 5)) 1) (check-lens-view first-lens '(1 2 3 4 5) 1)
(check-eqv? (lens-view second-lens '(1 2 3 4 5)) 2) (check-lens-view second-lens '(1 2 3 4 5) 2)
(check-eqv? (lens-view third-lens '(1 2 3 4 5)) 3) (check-lens-view third-lens '(1 2 3 4 5) 3)
(check-eqv? (lens-view fourth-lens '(1 2 3 4 5)) 4) (check-lens-view fourth-lens '(1 2 3 4 5) 4)
(check-eqv? (lens-view fifth-lens '(1 2 3 4 5)) 5) (check-lens-view fifth-lens '(1 2 3 4 5) 5)
(check-equal? (lens-set first-lens '(1 2 3 4 5) 'a) '(a 2 3 4 5)) (check-lens-set first-lens '(1 2 3 4 5) 'a '(a 2 3 4 5))
(check-equal? (lens-set second-lens '(1 2 3 4 5) 'a) '(1 a 3 4 5)) (check-lens-set second-lens '(1 2 3 4 5) 'a '(1 a 3 4 5))
(check-equal? (lens-set third-lens '(1 2 3 4 5) 'a) '(1 2 a 4 5)) (check-lens-set third-lens '(1 2 3 4 5) 'a '(1 2 a 4 5))
(check-equal? (lens-set fourth-lens '(1 2 3 4 5) 'a) '(1 2 3 a 5)) (check-lens-set fourth-lens '(1 2 3 4 5) 'a '(1 2 3 a 5))
(check-equal? (lens-set fifth-lens '(1 2 3 4 5) 'a) '(1 2 3 4 a))) (check-lens-set fifth-lens '(1 2 3 4 5) 'a '(1 2 3 4 a)))

View File

@ -7,7 +7,7 @@
"list-ref-take-drop.rkt") "list-ref-take-drop.rkt")
(module+ test (module+ test
(require rackunit)) (require rackunit "../test-util/test-lens.rkt"))
(provide (provide
(contract-out (contract-out
@ -28,7 +28,7 @@
(module+ test (module+ test
(define 1-5-6-lens (list-refs-lens 1 5 6)) (define 1-5-6-lens (list-refs-lens 1 5 6))
(check-equal? (lens-view 1-5-6-lens '(a b c d e f g)) (check-lens-view 1-5-6-lens '(a b c d e f g)
'(b f g)) '(b f g))
(check-equal? (lens-set 1-5-6-lens '(a b c d e f g) '(1 2 3)) (check-lens-set 1-5-6-lens '(a b c d e f g) '(1 2 3)
'(a 1 c d e 2 3))) '(a 1 c d e 2 3)))

View File

@ -16,7 +16,7 @@
"compound/main.rkt") "compound/main.rkt")
(module+ test (module+ test
(require rackunit)) (require rackunit "test-util/test-lens.rkt"))
(define (string-ref-lens i) (define (string-ref-lens i)
@ -33,8 +33,8 @@
(string-ref s j))))) (string-ref s j)))))
(module+ test (module+ test
(check-equal? (lens-view (string-ref-lens 2) "abc") #\c) (check-lens-view (string-ref-lens 2) "abc" #\c)
(check-equal? (lens-set (string-ref-lens 0) "abc" #\A) "Abc")) (check-lens-set (string-ref-lens 0) "abc" #\A "Abc"))
(define (string-pick-lens . is) (define (string-pick-lens . is)
@ -42,7 +42,7 @@
(module+ test (module+ test
(define 1-5-6-lens (string-pick-lens 1 5 6)) (define 1-5-6-lens (string-pick-lens 1 5 6))
(check-equal? (lens-view 1-5-6-lens "abcdefg") (check-lens-view 1-5-6-lens "abcdefg"
"bfg") "bfg")
(check-equal? (lens-set 1-5-6-lens "abcdefg" "BFG") (check-lens-set 1-5-6-lens "abcdefg" "BFG"
"aBcdeFG")) "aBcdeFG"))

View File

@ -8,7 +8,7 @@
"ref.rkt") "ref.rkt")
(module+ test (module+ test
(require rackunit)) (require rackunit "../test-util/test-lens.rkt"))
(provide (provide
(contract-out (contract-out
@ -21,7 +21,7 @@
(module+ test (module+ test
(define 1-5-6-lens (vector-pick-lens 1 5 6)) (define 1-5-6-lens (vector-pick-lens 1 5 6))
(check-equal? (lens-view 1-5-6-lens #(a b c d e f g)) (check-lens-view 1-5-6-lens #(a b c d e f g)
#(b f g)) #(b f g))
(check-equal? (lens-set 1-5-6-lens #(a b c d e f g) #(1 2 3)) (check-lens-set 1-5-6-lens #(a b c d e f g) #(1 2 3)
#(a 1 c d e 2 3))) #(a 1 c d e 2 3)))

View File

@ -6,7 +6,7 @@
"../util/immutable.rkt") "../util/immutable.rkt")
(module+ test (module+ test
(require rackunit)) (require rackunit "../test-util/test-lens.rkt"))
(provide (provide
(contract-out (contract-out
@ -28,5 +28,5 @@
(vector-ref v j))))) (vector-ref v j)))))
(module+ test (module+ test
(check-equal? (lens-view (vector-ref-lens 0) #(a b c)) 'a) (check-lens-view (vector-ref-lens 0) #(a b c) 'a)
(check-equal? (lens-set (vector-ref-lens 2) #(a b c) "C") #(a b "C"))) (check-lens-set (vector-ref-lens 2) #(a b c) "C" #(a b "C")))