(.require [library [lux (.except) [abstract [monad (.only do)]] [control ["[0]" try (.use "[1]#[0]" functor)] [concurrency ["[0]" async]]] [data ["[0]" binary (.use "[1]#[0]" equivalence)] ["[0]" text (.use "[1]#[0]" equivalence) [encoding ["[0]" utf8]]] [format ["[0]" xml]]] [math ["[0]" random]] [world ["[0]" file]] [test ["[0]" unit] ["_" property (.only Test)]]]] [// ["@[0]" version] [// ["@[0]" profile]]] [\\program ["[0]" / (.only) ["//[1]" /// ["[1]" profile] ["[1][0]" action] ["[1][0]" pom]]]]) (def .public test Test (<| (_.covering /._) (do random.monad [sample @profile.random .let [fs (file.mock (at file.default separator))]] (in (do [! async.monad] [.let [console (@version.echo "")] outcome (/.do! console fs sample)] (case outcome {try.#Success _} (do ! [verdict (do ///action.monad [expected (|> (///pom.write sample) (try#each (|>> (at xml.codec encoded) (at utf8.codec encoded))) (at ! in)) actual (at fs read ///pom.file) logging! (at ///action.monad each (text#= /.success) (at console read_line [])) .let [expected_content! (binary#= expected actual)]] (in (and logging! expected_content!)))] (unit.coverage [/.do! /.success] (try.else false verdict))) {try.#Failure error} (unit.coverage [/.do!] (case (the ///.#identity sample) {.#Some _} false {.#None} true))))))))