(.require [library [lux (.except) ["_" test (.only Test)] ["[0]" time] [abstract [monad (.only do)]] [control ["[0]" try (.use "[1]#[0]" functor)]] [data ["[0]" text ["<[1]>" \\parser]]] [math ["[0]" random (.only Random)] [number ["n" nat] ["i" int]]]]] [\\program ["[0]" /]]) (def .public random (Random /.Time) (random.one (|>> time.clock (has time.#milli_second 0) time.time) random.time)) (def .public test Test (<| (_.covering /._) (_.for [/.Time]) (all _.and (do random.monad [expected ..random] (_.coverage [/.format /.parser] (|> expected /.format (.result /.parser) (try#each (at time.equivalence = expected)) (try.else false)))) )))