aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/test/lux/time/duration.lux
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/source/test/lux/time/duration.lux')
-rw-r--r--stdlib/source/test/lux/time/duration.lux87
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)))))
+ ))