diff options
Diffstat (limited to 'stdlib/source/test/lux/time/duration.lux')
-rw-r--r-- | stdlib/source/test/lux/time/duration.lux | 87 |
1 files changed, 38 insertions, 49 deletions
diff --git a/stdlib/source/test/lux/time/duration.lux b/stdlib/source/test/lux/time/duration.lux index 3aba23203..ba0e35cf1 100644 --- a/stdlib/source/test/lux/time/duration.lux +++ b/stdlib/source/test/lux/time/duration.lux @@ -1,60 +1,49 @@ (.module: [lux #* - [io] + data/text/format + ["_" test (#+ Test)] [control - [monad (#+ do Monad)]] + [monad (#+ do)] + {[0 #test] + [/ + ["$." equivalence] + ["$." order] + ["$." monoid] + ["$." codec]]}] [data ["E" error]] [math - ["r" random]] - [time - ["@" duration]]] - lux/test) + ["r" random (#+ Random)]]] + {1 + ["." / (#+ Duration)]}) (def: #export duration - (r.Random @.Duration) - (|> r.int (:: r.monad map @.from-millis))) + (Random Duration) + (|> r.int (:: r.monad map /.from-millis))) -(context: "Conversion." - (<| (times 100) - (do @ - [millis r.int] - (test "Can convert from/to milliseconds." - (|> millis @.from-millis @.to-millis (i/= millis)))))) - -(context: "Equivalence." - (<| (times 100) - (do @ - [sample duration - #let [(^open "@/.") @.equivalence]] - (test "Every duration equals itself." - (@/= sample sample))))) +(def: #export test + Test + ($_ _.and + ($equivalence.spec /.equivalence ..duration) + ($order.spec /.order ..duration) + ($monoid.spec /.equivalence /.monoid ..duration) + ## TODO; Uncomment ASAP + ## ($codec.spec /.equivalence /.codec ..duration) -(context: "Order." - (<| (times 100) - (do @ - [reference duration - sample duration - #let [(^open "@/.") @.order]] - (test "Can compare times." - (and (or (@/< reference sample) - (@/>= reference sample)) - (or (@/> reference sample) - (@/<= reference sample))))))) - -(context: "Arithmetic." - (<| (times 100) - (do @ - [sample (|> duration (:: @ map (@.frame @.day))) + (do r.monad + [millis r.int] + (_.test "Can convert from/to milliseconds." + (|> millis /.from-millis /.to-millis (i/= millis)))) + (do r.monad + [sample (|> duration (:: @ map (/.frame /.day))) frame duration - factor (|> r.int (:: @ map (|>> (i/% +10) (i/max +1)))) - #let [(^open "@/.") @.order]] - ($_ seq - (test "Can scale a duration." - (|> sample (@.scale-up factor) (@.query sample) (i/= factor))) - (test "Scaling a duration by one does not change it." - (|> sample (@.scale-up +1) (@/= sample))) - (test "Merging with the empty duration changes nothing." - (|> sample (@.merge @.empty) (@/= sample))) - (test "Merging a duration with it's opposite yields an empty duration." - (|> sample (@.merge (@.scale-up -1 sample)) (@/= @.empty))))))) + factor (|> r.nat (:: @ map (|>> (n/% 10) (n/max 1)))) + #let [(^open "/@.") /.order]] + ($_ _.and + (_.test "Can scale a duration." + (|> sample (/.scale-up factor) (/.query sample) (i/= (.int factor)))) + (_.test "Scaling a duration by one does not change it." + (|> sample (/.scale-up 1) (/@= sample))) + (_.test "Merging a duration with it's opposite yields an empty duration." + (|> sample (/.merge (/.inverse sample)) (/@= /.empty))))) + )) |