aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/test/lux/data/number/i32.lux
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--stdlib/source/test/lux/data/number/i32.lux39
1 files changed, 20 insertions, 19 deletions
diff --git a/stdlib/source/test/lux/data/number/i32.lux b/stdlib/source/test/lux/data/number/i32.lux
index 1bf6bfee7..11dd6f3f9 100644
--- a/stdlib/source/test/lux/data/number/i32.lux
+++ b/stdlib/source/test/lux/data/number/i32.lux
@@ -1,39 +1,40 @@
(.module:
[lux #*
["_" test (#+ Test)]
- [data
- ["." name]
- ["%" text/format (#+ format)]]
[abstract
[monad (#+ do)]
{[0 #spec]
[/
["$." equivalence]]}]
+ [data
+ [number
+ ["i" int]]]
[math
- ["r" random (#+ Random)]]]
+ ["." random (#+ Random)]]]
{1
["." /
["/#" // #_
- ["#." i64 (#+ Mask)]]]})
+ ["#." i64]]]})
-(def: #export i32
+(def: #export random
(Random /.I32)
- (\ r.functor map /.i32 r.i64))
-
-(def: mask
- Mask
- (//i64.or //i64.sign
- (//i64.mask 31)))
+ (\ random.functor map /.i32 random.i64))
(def: #export test
Test
- (<| (_.context (name.module (name-of /._)))
- (do {! r.monad}
- [expected (\ ! map (|>> (//i64.and ..mask) (: I64)) r.i64)]
+ (<| (_.covering /._)
+ (_.with-cover [/.I32])
+ (do {! random.monad}
+ [#let [limit (|> (dec /.width)
+ //i64.mask
+ .int
+ inc)]
+ expected (\ ! map (i.% limit) random.int)]
($_ _.and
- ($equivalence.spec /.equivalence ..i32)
+ (_.with-cover [/.equivalence]
+ ($equivalence.spec /.equivalence ..random))
- (_.test "Can convert between I64 and I32"
- (let [actual (|> expected /.i32 /.i64)]
- (\ //i64.equivalence = expected actual)))
+ (_.cover [/.i32 /.i64 /.width]
+ (let [actual (|> expected .i64 /.i32 /.i64)]
+ (\ //i64.equivalence = expected actual)))
))))