This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2022-10-28
Channels
- # announcements (5)
- # babashka (7)
- # beginners (101)
- # biff (9)
- # calva (46)
- # cider (6)
- # clj-yaml (2)
- # cljsrn (13)
- # clojure (11)
- # clojure-europe (43)
- # clojure-nl (13)
- # clojure-norway (22)
- # clojurescript (20)
- # conjure (1)
- # cursive (7)
- # data-science (2)
- # datomic (26)
- # emacs (38)
- # graphql (27)
- # gratitude (5)
- # hoplon (8)
- # hugsql (22)
- # humbleui (2)
- # hyperfiddle (6)
- # introduce-yourself (8)
- # joyride (3)
- # lsp (79)
- # malli (6)
- # nbb (67)
- # portal (16)
- # rdf (27)
- # reagent (42)
- # releases (2)
- # remote-jobs (1)
- # shadow-cljs (36)
- # test-check (17)
- # tools-deps (1)
- # xtdb (15)
If you're checking multiple related properties in one test, is better to use one =
or multiple =
? Does which method you use affect shrinkage? tree/node-healthy?
returns a boolean
(defspec add-remove-node-maintains-health
(prop/for-all [k gen/small-integer
size gen/nat]
;; +1 to prevent removing nodes from empty trees
(let [tree (make-integer-tree (+ 1 size))]
(=
(tree/node-healthy? (tree/node-add tree k))
(tree/node-healthy? (tree/node-remove-least tree))
(tree/node-healthy? (tree/node-remove-greatest tree))
(tree/node-healthy? (->> tree tree/node-random node/-k (tree/node-remove tree)))))))
or
(defspec add-remove-node-maintains-health
(prop/for-all [k gen/small-integer
size gen/nat]
;; +1 to prevent removing nodes from empty trees
(let [tree (make-integer-tree (+ 1 size))]
(= (tree/node-healthy? (tree/node-add tree k)))
(= (tree/node-healthy? (tree/node-remove-least tree)))
(= (tree/node-healthy? (tree/node-remove-greatest tree)))
(= (tree/node-healthy? (->> tree tree/node-random node/-k (tree/node-remove tree)))))))
or
(defspec add-remove-node-maintains-health
(prop/for-all [k gen/small-integer
size gen/nat]
;; +1 to prevent removing nodes from empty trees
(let [tree (make-integer-tree (+ 1 size))]
(= (and
(tree/node-healthy? (tree/node-add tree k))
(tree/node-healthy? (tree/node-remove-least tree))
(tree/node-healthy? (tree/node-remove-greatest tree))
(tree/node-healthy? (->> tree tree/node-random node/-k (tree/node-remove tree))))))))
Hi Jared, I ran into a very similar brick wall. I ended up looking at chuck
: https://github.com/gfredericks/test.chuck.
Stylistically, is one preferred?
(= false)
is true. And iād worry if all of your predicates uniformly returned false and you misinterpreted this
the first sort of works, but will also report a success if all your node-healthy? calls return false
regarding the first, if I add false
or (> size 10)
inside the (=
block it fails So why would it pass when it should fail, if node-healthy?
is false?
appreciate it. Thanks š