(.module: [library [lux "*" ["_" test {"+" [Test]}] ["[0]" time] [abstract [monad {"+" [do]}]] [control ["[0]" try ("[1]#[0]" functor)] [parser ["<[0]>" text]]] [math ["[0]" random {"+" [Random]}] [number ["n" nat] ["i" int]]]]] [\\program ["[0]" /]]) (def: .public random (Random /.Time) (random.one (|>> time.clock (with@ time.#milli_second 0) time.time) random.time)) (def: .public test Test (<| (_.covering /._) (_.for [/.Time]) ($_ _.and (do random.monad [expected ..random] (_.cover [/.format /.parser] (|> expected /.format (.result /.parser) (try#each (# time.equivalence = expected)) (try.else false)))) )))