File tree Expand file tree Collapse file tree 5 files changed +47
-3
lines changed Expand file tree Collapse file tree 5 files changed +47
-3
lines changed Original file line number Diff line number Diff line change 9
9
:dependencies [[org.clojure/clojure " 1.7.0" ]
10
10
[org.clojure/tools.reader " 0.9.2" ]]
11
11
:profiles {:dev {:dependencies [[midje " 1.7.0" :exclusions [joda-time]]
12
- [joda-time " 2.8.2" ]]
12
+ [joda-time " 2.8.2" ]
13
+ [org.clojure/test.check " 0.7.0" ]]
13
14
:plugins [[lein-midje " 3.1.3" ]
14
15
[codox " 0.8.10" ]]
15
16
:exclusions [org.clojure/clojure]
Original file line number Diff line number Diff line change 11
11
(length [this]
12
12
(count (node/string this)))
13
13
(string [_]
14
- (let [s (.toString (biginteger value) base)
14
+ (let [sign (if (< value 0 )
15
+ " -" )
16
+ abs-value (cond-> value (< value 0 ) -)
17
+ s (.toString (biginteger abs-value) base)
15
18
prefix (case (long base)
16
19
8 " 0"
17
20
10 " "
18
21
16 " 0x"
19
22
(str base " r" ))]
20
- (str prefix s)))
23
+ (str sign prefix s)))
21
24
22
25
Object
23
26
(toString [this]
Original file line number Diff line number Diff line change
1
+ (ns rewrite-clj.node.generators
2
+ (:require [clojure.test.check.generators :as gen]
3
+ [rewrite-clj.node :as node]))
4
+
5
+ (def integer-node
6
+ (gen/fmap
7
+ (fn [[n base]]
8
+ (node/integer-node n base))
9
+ (gen/tuple
10
+ (gen/choose Long/MIN_VALUE Long/MAX_VALUE)
11
+ (gen/choose 2 36 ))))
Original file line number Diff line number Diff line change
1
+ (ns rewrite-clj.node.integer-test
2
+ (:require [clojure.test.check.properties :as prop]
3
+ [midje.sweet :refer :all ]
4
+ [rewrite-clj.node :as node]
5
+ [rewrite-clj.node.generators :as g]
6
+ [rewrite-clj.test-helpers :refer :all ]))
7
+
8
+ (facts " about integer nodes"
9
+ (property " all integer nodes produce readable strings" 100
10
+ (prop/for-all [node g/integer-node]
11
+ (read-string (node/string node)))))
Original file line number Diff line number Diff line change
1
+ (ns rewrite-clj.test-helpers
2
+ (:require [clojure.test.check :as tc]
3
+ [midje.sweet :refer :all ]))
4
+
5
+ (defn holds
6
+ " A midje checker to check whether a property \" holds\" .
7
+
8
+ e.g. (fact (tc/quick-check ...) => holds)"
9
+ [result]
10
+ (= true (:result result)))
11
+
12
+ (defmacro property
13
+ " Make a test.check property into a midje fact."
14
+ ([descr prop]
15
+ `(property ~descr 25 ~prop))
16
+ ([descr trials prop]
17
+ `(fact ~descr
18
+ (tc/quick-check ~trials ~prop) => holds)))
You can’t perform that action at this time.
0 commit comments