(.module: [library [lux "*" ["_" test {"+" [Test]}] [abstract [monad {"+" [do]}] [\\specification ["$[0]" equivalence]]] [control ["[0]" try ("[1]#[0]" functor)] [parser ["<[0]>" xml]]] [math ["[0]" random {"+" [Random]}]]]] [\\program ["[0]" /]] ["[0]" / "_" ["[1][0]" value]] ["$[0]" /// "_" ["[1][0]" type] ["[1][0]" time]]) (def: .public random (Random /.Version) ($_ random.and $///type.random (random.ascii/alpha 1) $///time.random )) (def: .public test Test (<| (_.covering /._) (_.for [/.Version]) ($_ _.and (_.for [/.equivalence] ($equivalence.spec /.equivalence ..random)) (do random.monad [expected ..random] (_.cover [/.format /.parser] (|> expected /.format list (.result /.parser) (try#each (# /.equivalence = expected)) (try.else false)))) /value.test )))