blob: fbb0b62b734eed9c9cfee693d6ac3edc41972e03 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
(.module:
[library
[lux #*
["_" test (#+ Test)]
[abstract
[monad (#+ do)]
[\\specification
["$." equivalence]]]
[math
["." random (#+ Random)]]]]
[\\library
["." /
["/#" // #_
["i" int]
["#." i64]]]])
(def: .public random
(Random /.I16)
(\ random.functor each /.i16 random.i64))
(def: .public test
Test
(<| (_.covering /._)
(_.for [/.I16])
(do {! random.monad}
[.let [limit (|> (-- /.width)
//i64.mask
.int
++)]
expected (\ ! each (i.% limit) random.int)]
($_ _.and
(_.for [/.equivalence]
($equivalence.spec /.equivalence ..random))
(_.cover [/.i16 /.i64 /.width]
(let [actual (|> expected .i64 /.i16 /.i64)]
(\ //i64.equivalence = expected actual)))
))))
|