blob: c90b17dc3505dfd907c30d61441e1dae3b876d6f (
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
39
|
(.module:
[lux #*
["_" test (#+ Test)]
[data
["." name]
["%" text/format (#+ format)]]
[abstract
[monad (#+ do)]
{[0 #test]
[/
["$." equivalence]]}]
[math
["r" random (#+ Random)]]]
{1
["." /
["/#" // #_
["#." i64 (#+ Mask)]]]})
(def: #export i16
(Random /.I16)
(:: r.functor map /.i16 r.i64))
(def: mask
Mask
(//i64.or //i64.sign
(//i64.mask 15)))
(def: #export test
Test
(<| (_.context (name.module (name-of /._)))
(do {@ r.monad}
[expected (:: @ map (|>> (//i64.and ..mask) (: I64)) r.i64)]
($_ _.and
($equivalence.spec /.equivalence ..i16)
(_.test "Can convert between I64 and I16"
(let [actual (|> expected /.i16 /.i64)]
(:: //i64.equivalence = expected actual)))
))))
|