(.module: [library [lux "*" ["_" test {"+" [Test]}] [abstract [monad {"+" [do]}]] [control ["[0]" try] ["[0]" exception] ["<>" parser ["<[0]>" xml]]] [data ["[0]" text ("[1]\[0]" equivalence)] [format ["[0]" xml]]] [math ["[0]" random]]]] [// ["@[0]" profile]] [\\program ["[0]" / ["/[1]" // "_" ["[1]" profile]]]]) (def: .public test Test (<| (_.covering /._) ($_ _.and (_.cover [/.file] (|> /.file (text\= "") not)) (do random.monad [expected @profile.random] (_.cover [/.write /.parser] (case [(/.write expected) (value@ #//.identity expected)] [(#try.Success pom) (#.Some _)] (case (.result /.parser (list pom)) (#try.Success actual) (\ //.equivalence = (|> (\ //.monoid identity) (with@ #//.dependencies (value@ #//.dependencies expected)) (with@ #//.repositories (value@ #//.repositories expected))) actual) (#try.Failure error) false) [(#try.Failure error) #.None] (exception.match? //.no_identity error) _ false))) )))