(.module: [library [lux "*" ["_" test {"+" [Test]}] [abstract [monad {"+" [do]}] [\\specification ["$[0]" equivalence]]] [control ["[0]" maybe ("[1]#[0]" functor)]] [data ["[0]" text ("[1]#[0]" equivalence)] [collection ["[0]" list ("[1]#[0]" functor)] ["[0]" set]]] [math ["[0]" random {"+" [Random]} ("[1]#[0]" monad)] [number ["n" nat]]]]] [\\program ["[0]" /]]) (def: .public random (Random /.Runtime) ($_ random.either (random#in /.default_java) (random#in /.default_js) (random#in /.default_python) (random#in /.default_lua) (random#in /.default_ruby) )) (def: .public test Test (<| (_.covering /._) (_.for [/.Runtime]) (do random.monad [path (random.ascii/alpha 5) runtime ..random] (`` ($_ _.and (_.for [/.equivalence] ($equivalence.spec /.equivalence ..random)) (~~ (template [] [(_.cover [/.default_java /.default_js /.default_python /.default_lua /.default_ruby] (let [listing (|> (list /.default_java /.default_js /.default_python /.default_lua /.default_ruby) (list#each (value@ /.#program))) unique (set.of_list text.hash listing)] (n.= (list.size listing) (set.size unique))))] [/.default_java] [/.default_js] [/.default_python] [/.default_lua] [/.default_ruby] )) (_.cover [/.for] (let [runtime' (/.for runtime path)] (and (text#= (value@ /.#program runtime) (value@ /.#program runtime')) (|> runtime' (value@ /.#parameters) list.last (maybe#each (text#= path)) (maybe.else false))))) )))))