diff options
Diffstat (limited to '')
-rw-r--r-- | stdlib/source/test/lux/data/number/i32.lux | 39 |
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))) )))) |