(.using [library [lux (.except) ["_" test (.only Test)] [abstract [monad (.only do)]] [data ["[0]" text] [collection ["[0]" set] ["[0]" list (.open: "[1]#[0]" functor)]]] [math ["[0]" random (.only Random)] [number ["n" nat]]]]] [\\library ["[0]" /]]) (def: .public random (Random /.Context) (do [! random.monad] [context (all random.either (in /.js) (in /.jvm) (in /.lua) (in /.python) (in /.ruby))] (# ! each context (random.lower_case 1)))) (def: .public test Test (<| (_.covering /._) (_.for [/.Context /.Extension]) (do [! random.monad] [target (random.lower_case 1)] (all _.and (_.coverage [/.js /.jvm /.lua /.python /.ruby] (let [contexts (list (/.js target) (/.jvm target) (/.lua target) (/.python target) (/.ruby target)) maximum (list.size contexts)] (`` (and (~~ (template [ ] [(|> contexts (list#each (the )) (set.of_list text.hash) set.size (n.= ))] [maximum /.#host] [maximum /.#host_module_extension] [maximum /.#artifact_extension] [1 /.#target] )))))) ))))