aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/test/lux/time/instant.lux
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--stdlib/source/test/lux/time/instant.lux122
1 files changed, 41 insertions, 81 deletions
diff --git a/stdlib/source/test/lux/time/instant.lux b/stdlib/source/test/lux/time/instant.lux
index a95eaf612..ec4a9456c 100644
--- a/stdlib/source/test/lux/time/instant.lux
+++ b/stdlib/source/test/lux/time/instant.lux
@@ -1,99 +1,59 @@
(.module:
[lux #*
- [io]
+ data/text/format
+ ["_" test (#+ Test)]
[control
+ pipe
[monad (#+ do Monad)]
- pipe]
+ {[0 #test]
+ [/
+ ["$." equivalence]
+ ["$." order]
+ ["$." enum]
+ ["$." codec]]}]
[data
- ["." text
- format]
- [error]]
+ ["." text]]
[math
- ["r" random]]
+ ["r" random (#+ Random)]]
[time
- ["@" instant]
["@d" duration]
["@date" date]]]
- lux/test
[//
- ["_." duration]])
+ ["_." duration]]
+ {1
+ ["." / (#+ Instant)]})
(def: boundary Int +99,999,999,999,999)
(def: #export instant
- (r.Random @.Instant)
- (|> r.int (:: r.monad map (|>> (i/% boundary) @.from-millis))))
-
-(context: "Conversion."
- (<| (times 100)
- (do @
+ (Random Instant)
+ (:: r.monad map (|>> (i/% boundary) /.from-millis) r.int))
+
+(def: #export test
+ Test
+ ($_ _.and
+ ($equivalence.spec /.equivalence ..instant)
+ ($order.spec /.order ..instant)
+ ($enum.spec /.enum ..instant)
+ ## TODO; Uncomment ASAP
+ ## ($codec.spec /.equivalence /.codec ..instant)
+
+ (do r.monad
[millis r.int]
- (test "Can convert from/to milliseconds."
- (|> millis @.from-millis @.to-millis (i/= millis))))))
-
-(context: "Equivalence."
- (<| (times 100)
- (do @
- [sample instant
- #let [(^open "@/.") @.equivalence]]
- (test "Every instant equals itself."
- (@/= sample sample)))))
-
-(context: "Order"
- (<| (times 100)
- (do @
- [reference instant
- sample instant
- #let [(^open "@/.") @.order]]
- (test "Can compare instants."
- (and (or (@/< reference sample)
- (@/>= reference sample))
- (or (@/> reference sample)
- (@/<= reference sample)))))))
-
-(context: "Enum"
- (<| (times 100)
- (do @
- [sample instant
- #let [(^open "@/.") @.enum]]
- (test "Valid Enum."
- (and (not (@/= (@/succ sample)
- sample))
- (not (@/= (@/pred sample)
- sample))
- (|> sample @/succ @/pred (@/= sample))
- (|> sample @/pred @/succ (@/= sample)))))))
-
-(context: "Arithmetic"
- (<| (times 100)
- (do @
+ (_.test "Can convert from/to milliseconds."
+ (|> millis /.from-millis /.to-millis (i/= millis))))
+ (do r.monad
[sample instant
span _duration.duration
- #let [(^open "@/.") @.equivalence
+ #let [(^open "@/.") /.equivalence
(^open "@d/.") @d.equivalence]]
- ($_ seq
- (test "The span of a instant and itself has an empty duration."
- (|> sample (@.span sample) (@d/= @d.empty)))
- (test "Can shift a instant by a duration."
- (|> sample (@.shift span) (@.span sample) (@d/= span)))
- (test "Can obtain the time-span between the epoch and an instant."
- (|> sample @.relative @.absolute (@/= sample)))
- (test "All instants are relative to the epoch."
- (|> @.epoch (@.shift (@.relative sample)) (@/= sample)))))))
-
-## (context: "Codec"
-## (<| (seed 9863552679229274604)
-## ## (times 100)
-## (do @
-## [sample instant
-## #let [(^open "@/.") @.equivalence
-## (^open "@/.") @.codec]]
-## (test "Can encode/decode instants."
-## (|> sample
-## @/encode
-## @/decode
-## (case> (#error.Success decoded)
-## (@/= sample decoded)
-
-## (#error.Failure error)
-## #0))))))
+ ($_ _.and
+ (_.test "The span of a instant and itself has an empty duration."
+ (|> sample (/.span sample) (@d/= @d.empty)))
+ (_.test "Can shift a instant by a duration."
+ (|> sample (/.shift span) (/.span sample) (@d/= span)))
+ (_.test "Can obtain the time-span between the epoch and an instant."
+ (|> sample /.relative /.absolute (@/= sample)))
+ (_.test "All instants are relative to the epoch."
+ (|> /.epoch (/.shift (/.relative sample)) (@/= sample)))))
+ ))