(.module: [lux #* ["_" test (#+ Test)] [abstract [monad (#+ do)]] [control ["." try] ["." exception] ["<>" parser ["<.>" xml]]] [data [format ["." xml]]] [math ["." random]]] [// ["@." profile]] {#program ["." / ["/#" // #_ ["#" profile]]]}) (def: #export test Test (<| (_.covering /._) (do random.monad [expected @profile.random] (_.cover [/.write /.parser] (case [(/.write expected) (get@ #//.identity expected)] [(#try.Success pom) (#.Some _)] (case (.run /.parser pom) (#try.Success actual) (\ //.equivalence = (|> (\ //.monoid identity) (set@ #//.dependencies (get@ #//.dependencies expected))) actual) (#try.Failure error) false) [(#try.Failure error) #.None] (exception.match? //.no-identity error) _ false)))))