(.require [library [lux (.except) [abstract [monad (.only do)] [hash (.only Hash)] ["[0]" hash ["[1]T" \\test]] ["[0]" equivalence ["[1]T" \\test]] ["[0]" order ["[1]T" \\test]]] [data ["[0]" text (.use "[1]#[0]" equivalence)]] [math ["[0]" random (.only Random)]] [world ["[0]" file] [net ["[0]" uri]]] [test ["_" property (.only Test)]]]] ["[0]" / ["[1][0]" extension] ["[1][0]" snapshot] ["[1][0]" time] ["[1][0]" type] ["[1][0]" versioning]] [\\program ["[0]" /]]) (def .public random (Random /.Artifact) (let [size 4] (all random.and (random.lower_cased size) (random.lower_cased size) (random.lower_cased size) ))) (def .public test Test (<| (_.covering /._) (do random.monad [sample ..random]) (_.for [/.Group /.Name /.Version /.Artifact /.#group /.#name /.#version] (all _.and (_.for [/.equivalence] (equivalenceT.spec /.equivalence ..random)) (_.for [/.order] (orderT.spec /.order ..random)) (_.for [/.hash] (hashT.spec /.hash ..random)) (_.coverage [/.format /.identity] (and (text.ends_with? (/.identity sample) (/.format sample)) (not (text#= (/.identity sample) (/.format sample))))) /extension.test /snapshot.test /time.test /type.test /versioning.test ))))