(.require [library [lux (.except) ["_" test (.only Test)] [abstract [monad (.only do)]] [data ["[0]" bit (.use "[1]#[0]" equivalence)]] [macro ["[0]" template]] [math ["[0]" random (.only Random)] [number ["n" nat] ["i" int] ["r" rev] ["f" frac] ["[0]" ratio (.only Ratio)] ["[0]" complex (.only Complex)]]]]] [\\library ["[0]" /]] ["[0]" / ["[1][0]" infix] ["[1][0]" modulus] ["[1][0]" modular] ["[1][0]" number] ["[1][0]" logic ["[1]/[0]" continuous] ["[1]/[0]" fuzzy]]]) (def ratio/0 Ratio [ratio.#numerator 0 ratio.#denominator 1]) (def complex/0 Complex [complex.#real +0.0 complex.#imaginary +0.0]) (def .public test Test (<| (_.covering /._) (do random.monad [parameterN (random.only (|>> (n.= 0) not) random.nat) subjectN random.nat parameterI (random.only (|>> (i.= +0) not) random.int) subjectI random.int parameterR (random.only (|>> (r.= .0) not) random.rev) subjectR random.rev parameterF (random.only (|>> (f.= +0.0) not) random.safe_frac) subjectF random.safe_frac parameter/ (random.only (|>> (ratio.= ratio/0) not) random.ratio) subject/ random.ratio parameterC (random.only (|>> (complex.= complex/0) not) random.complex) subjectC random.complex]) (`` (all _.and (~~ (with_template [ '] [(_.coverage [] (with_expansions [ (template.spliced ')] (`` (and (~~ (with_template [<=> ] [(<=> ( ) ( ))] ))))))] [/.+ [[n.= n.+ parameterN subjectN] [i.= i.+ parameterI subjectI] [r.= r.+ parameterR subjectR] [f.= f.+ parameterF subjectF] [ratio.= ratio.+ parameter/ subject/] [complex.= complex.+ parameterC subjectC]]] [/.- [[n.= n.- parameterN subjectN] [i.= i.- parameterI subjectI] [r.= r.- parameterR subjectR] [f.= f.- parameterF subjectF] [ratio.= ratio.- parameter/ subject/] [complex.= complex.- parameterC subjectC]]] [/.* [[n.= n.* parameterN subjectN] [i.= i.* parameterI subjectI] [r.= r.* parameterR subjectR] [f.= f.* parameterF subjectF] [ratio.= ratio.* parameter/ subject/] [complex.= complex.* parameterC subjectC]]] [/./ [[n.= n./ parameterN subjectN] [i.= i./ parameterI subjectI] [r.= r./ parameterR subjectR] [f.= f./ parameterF subjectF] [ratio.= ratio./ parameter/ subject/] [complex.= complex./ parameterC subjectC]]] [/.% [[n.= n.% parameterN subjectN] [i.= i.% parameterI subjectI] [r.= r.% parameterR subjectR] [f.= f.% parameterF subjectF] [ratio.= ratio.% parameter/ subject/] [complex.= complex.% parameterC subjectC]]] )) (~~ (with_template [ '] [(_.coverage [] (with_expansions [ (template.spliced ')] (`` (and (~~ (with_template [ ] [(bit#= ( ) ( ))] ))))))] [/.= [[n.= parameterN subjectN] [i.= parameterI subjectI] [r.= parameterR subjectR] [f.= parameterF subjectF] [ratio.= parameter/ subject/] [complex.= parameterC subjectC]]] [/.< [[n.< parameterN subjectN] [i.< parameterI subjectI] [r.< parameterR subjectR] [f.< parameterF subjectF] [ratio.< parameter/ subject/]]] [/.<= [[n.<= parameterN subjectN] [i.<= parameterI subjectI] [r.<= parameterR subjectR] [f.<= parameterF subjectF] [ratio.<= parameter/ subject/]]] [/.> [[n.> parameterN subjectN] [i.> parameterI subjectI] [r.> parameterR subjectR] [f.> parameterF subjectF] [ratio.> parameter/ subject/]]] [/.>= [[n.>= parameterN subjectN] [i.>= parameterI subjectI] [r.>= parameterR subjectR] [f.>= parameterF subjectF] [ratio.>= parameter/ subject/]]] )) /infix.test /modulus.test /modular.test /number.test /logic/continuous.test /logic/fuzzy.test ))))