diff options
author | Aryadev Chavali <aryadev@aryadevchavali.com> | 2025-02-24 23:52:21 +0000 |
---|---|---|
committer | Aryadev Chavali <aryadev@aryadevchavali.com> | 2025-02-24 23:52:21 +0000 |
commit | 191ef054015143a73e214a49f07b01ec7b2ea75b (patch) | |
tree | 6c8e5b73b1e84951c5343767ce111a492501b540 | |
parent | 7d7987cdc218bf1e2bff269c46e503fad0da45d8 (diff) | |
download | cantedraw-191ef054015143a73e214a49f07b01ec7b2ea75b.tar.gz cantedraw-191ef054015143a73e214a49f07b01ec7b2ea75b.tar.bz2 cantedraw-191ef054015143a73e214a49f07b01ec7b2ea75b.zip |
Implement test for card->int
-rw-r--r-- | tests/model.lisp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/model.lisp b/tests/model.lisp index 6ffdff9..e5f416d 100644 --- a/tests/model.lisp +++ b/tests/model.lisp @@ -132,3 +132,27 @@ :do (true (every (lambda (c) (eq :joker (card-suit c))) inp) "Are jokers."))) +(define-test (model-test card->int) + :depends-on ((cantedraw/tests/functions range)) + :compile-at :execute + (fail (card->int nil)) + (fail (card->int 1738)) + (fail (card->int "not a card")) + (fail (card->int :still-not-a-card)) + (let ((ranks (append (range 2 11) (list :jack :queen :king :ace)))) + (let ((res (->> (loop :for suit :in (list :diamonds :clubs :hearts :spades) + :nconc + (mapcar (lambda (rank) (make-card :rank rank :suit suit)) ranks)) + (mapcar #'card->int)))) + (true (every #'integerp res) "Every mapped element is an integer.") + (true (every #'(lambda (x) (<= 0 x)) res) "Every mapped element is positive") + (is eq (length res) (length (remove-duplicates res)) + "All mapped integers are unique.")) + (let ((res (->> (loop :for rank :in ranks + :collect (make-card :rank rank :suit :joker)) + (mapcar #'card->int)))) + (true (every #'integerp res) "Every mapped element is an integer.") + (true (every (lambda (n) (or (< n 0) (> n 51))) res) + "Every mapped element is outside of [0,51]") + (is eq (length res) (length (remove-duplicates res)) + "All mapped integers are unique.")))) |