(.module: [library [lux "*" ["_" test {"+" [Test]}] [abstract [monad {"+" [do]}] [\\specification ["$." equivalence]]] [control ["." try ("#\." functor)] [parser ["<.>" xml]]] [math ["." random {"+" [Random]} ("#\." monad)]]]] ["$." / "_" ["#." build] ["#." stamp] ["#." time] ["#." version]] [\\program ["." /]]) (def: .public random (Random /.Snapshot) (random.or (random\in []) $/stamp.random)) (def: .public test Test (<| (_.covering /._) (_.for [/.Snapshot] ($_ _.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)))) $/build.test $/stamp.test $/time.test $/version.test ))))