(.require [library [lux (.except) ["_" test (.only Test)] [abstract [monad (.only do)] [\\specification ["$[0]" equivalence]]] [control ["[0]" try (.use "[1]#[0]" functor)]] [data [format ["[0]" xml ["<[1]>" \\parser]]]] [math ["[0]" random (.only Random) (.use "[1]#[0]" monad)]]]] ["$[0]" / ["[1][0]" build] ["[1][0]" stamp] ["[1][0]" time] ["[1][0]" version]] [\\program ["[0]" /]]) (def .public random (Random /.Snapshot) (random.or (random#in []) $/stamp.random)) (def .public test Test (<| (_.covering /._) (_.for [/.Snapshot] (all _.and (_.for [/.equivalence] ($equivalence.spec /.equivalence ..random)) (do random.monad [expected ..random] (_.coverage [/.format /.parser] (|> expected /.format list (.result /.parser) (try#each (at /.equivalence = expected)) (try.else false)))) $/build.test $/stamp.test $/time.test $/version.test ))))