aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/test
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--stdlib/source/test/aedifex/artifact.lux7
-rw-r--r--stdlib/source/test/aedifex/dependency.lux7
-rw-r--r--stdlib/source/test/aedifex/hash.lux7
-rw-r--r--stdlib/source/test/aedifex/profile.lux7
-rw-r--r--stdlib/source/test/aedifex/project.lux7
-rw-r--r--stdlib/source/test/lux/abstract/codec.lux13
-rw-r--r--stdlib/source/test/lux/abstract/equivalence.lux8
-rw-r--r--stdlib/source/test/lux/abstract/functor/contravariant.lux25
-rw-r--r--stdlib/source/test/lux/abstract/hash.lux8
-rw-r--r--stdlib/source/test/lux/abstract/monoid.lux28
-rw-r--r--stdlib/source/test/lux/abstract/order.lux65
-rw-r--r--stdlib/source/test/lux/control/function.lux6
-rw-r--r--stdlib/source/test/lux/control/function/mixin.lux6
-rw-r--r--stdlib/source/test/lux/control/function/predicate.lux15
-rw-r--r--stdlib/source/test/lux/control/maybe.lux7
-rw-r--r--stdlib/source/test/lux/data/binary.lux9
-rw-r--r--stdlib/source/test/lux/data/bit.lux14
-rw-r--r--stdlib/source/test/lux/data/collection/array.lux12
-rw-r--r--stdlib/source/test/lux/data/collection/list.lux5
-rw-r--r--stdlib/source/test/lux/data/collection/list/property.lux7
-rw-r--r--stdlib/source/test/lux/data/collection/sequence.lux5
-rw-r--r--stdlib/source/test/lux/data/collection/set.lux7
-rw-r--r--stdlib/source/test/lux/data/color/rgb.lux9
-rw-r--r--stdlib/source/test/lux/data/color/scheme.lux3
-rw-r--r--stdlib/source/test/lux/data/format/json.lux9
-rw-r--r--stdlib/source/test/lux/data/format/xml.lux7
-rw-r--r--stdlib/source/test/lux/data/text.lux19
-rw-r--r--stdlib/source/test/lux/data/text/encoding.lux4
-rw-r--r--stdlib/source/test/lux/data/text/encoding/utf8.lux6
-rw-r--r--stdlib/source/test/lux/data/text/unicode/block.lux7
-rw-r--r--stdlib/source/test/lux/math/arithmetic/fixed_point.lux7
-rw-r--r--stdlib/source/test/lux/math/arithmetic/modular.lux17
-rw-r--r--stdlib/source/test/lux/math/arithmetic/saturation.lux6
-rw-r--r--stdlib/source/test/lux/math/logic/continuous.lux6
-rw-r--r--stdlib/source/test/lux/math/logic/fuzzy.lux8
-rw-r--r--stdlib/source/test/lux/math/number/frac.lux17
-rw-r--r--stdlib/source/test/lux/math/number/i64.lux9
-rw-r--r--stdlib/source/test/lux/math/number/int.lux17
-rw-r--r--stdlib/source/test/lux/math/number/nat.lux17
-rw-r--r--stdlib/source/test/lux/math/number/ratio.lux17
-rw-r--r--stdlib/source/test/lux/math/number/rev.lux17
-rw-r--r--stdlib/source/test/lux/meta.lux334
-rw-r--r--stdlib/source/test/lux/meta/compiler.lux9
-rw-r--r--stdlib/source/test/lux/meta/compiler/language/lux.lux128
-rw-r--r--stdlib/source/test/lux/meta/configuration.lux7
-rw-r--r--stdlib/source/test/lux/meta/symbol.lux12
-rw-r--r--stdlib/source/test/lux/meta/type/unit.lux7
-rw-r--r--stdlib/source/test/lux/world.lux2
-rw-r--r--stdlib/source/test/lux/world/finance/market/price.lux106
-rw-r--r--stdlib/source/test/lux/world/finance/money.lux7
-rw-r--r--stdlib/source/test/lux/world/finance/trade/session.lux2
-rw-r--r--stdlib/source/test/lux/world/net/uri/query.lux7
-rw-r--r--stdlib/source/test/lux/world/time.lux12
-rw-r--r--stdlib/source/test/lux/world/time/date.lux12
-rw-r--r--stdlib/source/test/lux/world/time/day.lux12
-rw-r--r--stdlib/source/test/lux/world/time/duration.lux17
-rw-r--r--stdlib/source/test/lux/world/time/instant.lux12
-rw-r--r--stdlib/source/test/lux/world/time/month.lux12
-rw-r--r--stdlib/source/test/lux/world/time/solar.lux4
-rw-r--r--stdlib/source/test/lux/world/time/year.lux12
60 files changed, 805 insertions, 386 deletions
diff --git a/stdlib/source/test/aedifex/artifact.lux b/stdlib/source/test/aedifex/artifact.lux
index f9bf55c4c..cada52d52 100644
--- a/stdlib/source/test/aedifex/artifact.lux
+++ b/stdlib/source/test/aedifex/artifact.lux
@@ -6,8 +6,9 @@
[hash (.only Hash)]
[\\specification
["$[0]" equivalence]
- ["$[0]" order]
- ["$[0]" hash]]]
+ ["$[0]" hash]]
+ ["[0]" order
+ ["[1]T" \\test]]]
[data
["[0]" text (.use "[1]#[0]" equivalence)]]
[math
@@ -46,7 +47,7 @@
(_.for [/.equivalence]
($equivalence.spec /.equivalence ..random))
(_.for [/.order]
- ($order.spec /.order ..random))
+ (orderT.spec /.order ..random))
(_.for [/.hash]
($hash.spec /.hash ..random))
diff --git a/stdlib/source/test/aedifex/dependency.lux b/stdlib/source/test/aedifex/dependency.lux
index fbed2aaaa..3a71c655a 100644
--- a/stdlib/source/test/aedifex/dependency.lux
+++ b/stdlib/source/test/aedifex/dependency.lux
@@ -5,8 +5,9 @@
[monad (.only do)]
[\\specification
["$[0]" equivalence]
- ["$[0]" order]
- ["$[0]" hash]]]
+ ["$[0]" hash]]
+ ["[0]" order
+ ["[1]T" \\test]]]
[math
["[0]" random (.only Random)]]
[test
@@ -30,7 +31,7 @@
(_.for [/.equivalence]
($equivalence.spec /.equivalence ..random))
(_.for [/.order]
- ($order.spec /.order ..random))
+ (orderT.spec /.order ..random))
(_.for [/.hash]
($hash.spec /.hash ..random))
))))
diff --git a/stdlib/source/test/aedifex/hash.lux b/stdlib/source/test/aedifex/hash.lux
index 36326a58f..55cd89bba 100644
--- a/stdlib/source/test/aedifex/hash.lux
+++ b/stdlib/source/test/aedifex/hash.lux
@@ -4,8 +4,9 @@
[abstract
[monad (.only do)]
[\\specification
- ["$[0]" equivalence]
- ["$[0]" codec]]]
+ ["$[0]" equivalence]]
+ ["[0]" codec
+ ["[1]T" \\test]]]
[control
["[0]" try]
["[0]" exception]]
@@ -70,7 +71,7 @@
))))
(,, (with_template [<codec> <hash>]
[(_.for [<codec>]
- ($codec.spec /.equivalence <codec> (..random <hash>)))]
+ (codecT.spec /.equivalence <codec> (..random <hash>)))]
[/.sha1_codec /.sha1]
[/.md5_codec /.md5]
diff --git a/stdlib/source/test/aedifex/profile.lux b/stdlib/source/test/aedifex/profile.lux
index 591ad4d5d..387a9c2aa 100644
--- a/stdlib/source/test/aedifex/profile.lux
+++ b/stdlib/source/test/aedifex/profile.lux
@@ -5,8 +5,9 @@
[monad (.only do)]
[hash (.only Hash)]
[\\specification
- ["$[0]" equivalence]
- ["$[0]" monoid]]]
+ ["$[0]" equivalence]]
+ ["[0]" monoid
+ ["[1]T" \\test]]]
[control
["[0]" try]]
[data
@@ -162,7 +163,7 @@
(_.for [/.equivalence]
($equivalence.spec /.equivalence ..random))
(_.for [/.monoid]
- ($monoid.spec /.equivalence /.monoid ..random))
+ (monoidT.spec /.equivalence /.monoid ..random))
(_.coverage [/.default]
(text#= "" /.default))
diff --git a/stdlib/source/test/aedifex/project.lux b/stdlib/source/test/aedifex/project.lux
index decc5007d..f7040ca66 100644
--- a/stdlib/source/test/aedifex/project.lux
+++ b/stdlib/source/test/aedifex/project.lux
@@ -4,8 +4,9 @@
[abstract
[monad (.only do)]
[\\specification
- ["$[0]" equivalence]
- ["$[0]" monoid]]]
+ ["$[0]" equivalence]]
+ ["[0]" monoid
+ ["[1]T" \\test]]]
[control
["[0]" try (.use "[1]#[0]" functor)]
["[0]" exception]]
@@ -45,7 +46,7 @@
(_.for [/.equivalence]
($equivalence.spec /.equivalence ..random))
(_.for [/.monoid]
- ($monoid.spec /.equivalence /.monoid ..random))
+ (monoidT.spec /.equivalence /.monoid ..random))
(_.coverage [/.file]
(|> /.file
diff --git a/stdlib/source/test/lux/abstract/codec.lux b/stdlib/source/test/lux/abstract/codec.lux
index acd95096a..6f0278957 100644
--- a/stdlib/source/test/lux/abstract/codec.lux
+++ b/stdlib/source/test/lux/abstract/codec.lux
@@ -46,3 +46,16 @@
{try.#Failure error}
false)))))
+
+(def .public (spec (open "/#[0]") (open "/#[0]") generator)
+ (All (_ m a) (-> (Equivalence a) (/.Codec m a) (Random a) Test))
+ (do random.monad
+ [expected generator]
+ (_.for [/.Codec]
+ (_.coverage [/.encoded /.decoded]
+ (when (|> expected /#encoded /#decoded)
+ {try.#Success actual}
+ (/#= expected actual)
+
+ {try.#Failure _}
+ false)))))
diff --git a/stdlib/source/test/lux/abstract/equivalence.lux b/stdlib/source/test/lux/abstract/equivalence.lux
index c14a1cb26..cfdb96682 100644
--- a/stdlib/source/test/lux/abstract/equivalence.lux
+++ b/stdlib/source/test/lux/abstract/equivalence.lux
@@ -3,9 +3,9 @@
[lux (.except Variant Record)
[abstract
[monad (.only do)]
- [\\specification
- [functor
- ["$[0]" contravariant]]]]
+ [functor
+ ["[0]" contravariant
+ ["[1]T" \\test]]]]
[control
["[0]" maybe]]
[data
@@ -113,7 +113,7 @@
(<| (_.covering /._)
(all _.and
(_.for [/.functor]
- ($contravariant.spec equivalence n.equivalence /.functor))
+ (contravariantT.spec equivalence n.equivalence /.functor))
(_.coverage [/.rec]
(let [equivalence (is (Equivalence (List Nat))
(/.rec (function (_ equivalence)
diff --git a/stdlib/source/test/lux/abstract/functor/contravariant.lux b/stdlib/source/test/lux/abstract/functor/contravariant.lux
index 0bbcfd4aa..7d09e7a44 100644
--- a/stdlib/source/test/lux/abstract/functor/contravariant.lux
+++ b/stdlib/source/test/lux/abstract/functor/contravariant.lux
@@ -1,6 +1,15 @@
(.require
[library
[lux (.except)
+ [abstract
+ [equivalence (.only Equivalence)]
+ [monad (.only do)]]
+ [control
+ ["[0]" function]]
+ [math
+ ["[0]" random]
+ [number
+ ["n" nat]]]
[test
["_" property (.only Test)]]]]
[\\library
@@ -10,3 +19,19 @@
Test
(<| (_.covering /._)
(_.in_parallel (list))))
+
+(def .public (spec equivalence value it)
+ (All (_ ! of)
+ (-> (Equivalence (! of)) (! of) (/.Functor !)
+ Test))
+ (do random.monad
+ [sample random.nat]
+ (<| (_.for [/.Functor])
+ (all _.and
+ (_.coverage [/.each]
+ (let [law_of_identity!
+ (of equivalence =
+ (of it each function.identity value)
+ value)]
+ (and law_of_identity!)))
+ ))))
diff --git a/stdlib/source/test/lux/abstract/hash.lux b/stdlib/source/test/lux/abstract/hash.lux
index 9f29b0ec6..fb6bf8925 100644
--- a/stdlib/source/test/lux/abstract/hash.lux
+++ b/stdlib/source/test/lux/abstract/hash.lux
@@ -3,9 +3,9 @@
[lux (.except)
[abstract
[monad (.only do)]
- [\\specification
- [functor
- ["$[0]" contravariant]]]]
+ [functor
+ ["[0]" contravariant
+ ["[1]T" \\test]]]]
[data
["[0]" bit (.use "[1]#[0]" equivalence)]]
[math
@@ -36,5 +36,5 @@
(<| (_.covering /._)
(all _.and
(_.for [/.functor]
- ($contravariant.spec hash nat.hash /.functor))
+ (contravariantT.spec hash nat.hash /.functor))
))))
diff --git a/stdlib/source/test/lux/abstract/monoid.lux b/stdlib/source/test/lux/abstract/monoid.lux
index 7708be235..ca63f83c2 100644
--- a/stdlib/source/test/lux/abstract/monoid.lux
+++ b/stdlib/source/test/lux/abstract/monoid.lux
@@ -32,3 +32,31 @@
(int.= (of int.multiplication composite intL intR)
intLR))))
))))
+
+(def .public (spec (open "/#[0]") (open "/#[0]") gen_sample)
+ (All (_ of)
+ (-> (Equivalence of) (/.Monoid of) (Random of)
+ Test))
+ (do random.monad
+ [sample gen_sample
+ left gen_sample
+ mid gen_sample
+ right gen_sample]
+ (<| (_.for [/.Monoid])
+ (all _.and
+ (_.coverage [/.identity]
+ (let [left_identity!
+ (/#= sample
+ (/#composite /#identity sample))
+
+ right_identity!
+ (/#= sample
+ (/#composite sample /#identity))]
+ (and left_identity!
+ right_identity!)))
+ (_.coverage [/.composite]
+ (let [associativity!
+ (/#= (/#composite left (/#composite mid right))
+ (/#composite (/#composite left mid) right))]
+ (and associativity!)))
+ ))))
diff --git a/stdlib/source/test/lux/abstract/order.lux b/stdlib/source/test/lux/abstract/order.lux
index d1ccd5b7d..54e8f3d8d 100644
--- a/stdlib/source/test/lux/abstract/order.lux
+++ b/stdlib/source/test/lux/abstract/order.lux
@@ -3,9 +3,11 @@
[lux (.except)
[abstract
[monad (.only do)]
- [\\specification
- [functor
- ["$[0]" contravariant]]]]
+ [functor
+ ["[0]" contravariant
+ ["[1]T" \\test]]]
+ ["[0]" equivalence
+ ["[1]T" \\specification]]]
[data
["[0]" bit (.use "[1]#[0]" equivalence)]]
[math
@@ -36,7 +38,7 @@
(of rightO < left right))))))]])
(all _.and
(_.for [/.functor]
- ($contravariant.spec equivalence n.order /.functor))
+ (contravariantT.spec equivalence n.order /.functor))
(_.coverage [/.Choice /.min /.max]
(n.< (/.max n.order left right)
(/.min n.order left right)))
@@ -54,3 +56,58 @@
(bit#= (/.> n.order left right)
(/.>= n.order left right))))
)))
+
+(def .public (spec (open "/#[0]") random)
+ (All (_ of)
+ (-> (/.Order of) (Random of)
+ Test))
+ (<| (_.for [/.Order])
+ (all _.and
+ (_.for [/.equivalence]
+ (equivalenceT.spec /#equivalence random))
+
+ (do random.monad
+ [parameter random
+ subject random
+ .let [equal_or_ordered!
+ (let [equal!
+ (/#= parameter subject)
+
+ ordered!
+ (or (and (/#< parameter subject)
+ (not (/#< subject parameter)))
+ (and (/#< subject parameter)
+ (not (/#< parameter subject))))]
+ (bit#= equal! (not ordered!)))]
+
+ subject (random.only (|>> (/#= parameter) not)
+ random)
+ extra (random.only (function (_ value)
+ (not (or (/#= parameter value)
+ (/#= subject value))))
+ random)
+ .let [transitive_property!
+ (if (/#< parameter subject)
+ (let [greater? (and (/#< subject extra)
+ (/#< parameter extra))
+ lesser? (and (/#< extra parameter)
+ (/#< extra subject))
+ in_between? (and (/#< parameter extra)
+ (/#< extra subject))]
+ (or greater?
+ lesser?
+ in_between?))
+ ... (/#< subject parameter)
+ (let [greater? (and (/#< extra subject)
+ (/#< extra parameter))
+ lesser? (and (/#< parameter extra)
+ (/#< subject extra))
+ in_between? (and (/#< subject extra)
+ (/#< extra parameter))]
+ (or greater?
+ lesser?
+ in_between?)))]]
+ (_.coverage [/.<]
+ (and equal_or_ordered!
+ transitive_property!)))
+ )))
diff --git a/stdlib/source/test/lux/control/function.lux b/stdlib/source/test/lux/control/function.lux
index c237e701a..b7794ed63 100644
--- a/stdlib/source/test/lux/control/function.lux
+++ b/stdlib/source/test/lux/control/function.lux
@@ -4,8 +4,8 @@
[abstract
[equivalence (.only Equivalence)]
[monad (.only do)]
- [\\specification
- ["$[0]" monoid]]]
+ ["[0]" monoid
+ ["[1]T" \\test]]]
[math
["[0]" random (.only Random)]
[number
@@ -47,7 +47,7 @@
generator (is (Random (-> Nat Nat))
(of ! each n.- random.nat))]
(_.for [/.monoid]
- ($monoid.spec equivalence /.monoid generator)))
+ (monoidT.spec equivalence /.monoid generator)))
(_.coverage [/.identity]
(n.= expected
diff --git a/stdlib/source/test/lux/control/function/mixin.lux b/stdlib/source/test/lux/control/function/mixin.lux
index 04772297f..92ce0a712 100644
--- a/stdlib/source/test/lux/control/function/mixin.lux
+++ b/stdlib/source/test/lux/control/function/mixin.lux
@@ -4,8 +4,8 @@
[abstract
[equivalence (.only Equivalence)]
[monad (.only do)]
- [\\specification
- ["$[0]" monoid]]]
+ ["[0]" monoid
+ ["[1]T" \\test]]]
[control
["[0]" state (.only State)]
[function
@@ -50,7 +50,7 @@
(_.for [/.Mixin]
(all _.and
(_.for [/.monoid]
- ($monoid.spec equivalence /.monoid generator))
+ (monoidT.spec equivalence /.monoid generator))
(_.coverage [/.fixed]
(let [factorial (/.fixed
diff --git a/stdlib/source/test/lux/control/function/predicate.lux b/stdlib/source/test/lux/control/function/predicate.lux
index 74e547932..4abebe702 100644
--- a/stdlib/source/test/lux/control/function/predicate.lux
+++ b/stdlib/source/test/lux/control/function/predicate.lux
@@ -4,10 +4,11 @@
[abstract
[equivalence (.only Equivalence)]
[monad (.only do)]
- [\\specification
- ["$[0]" monoid]
- [functor
- ["$[0]" contravariant]]]]
+ ["[0]" monoid
+ ["[1]T" \\test]]
+ [functor
+ ["[0]" contravariant
+ ["[1]T" \\test]]]]
[control
["[0]" function]]
[data
@@ -43,16 +44,16 @@
(_.for [/.Predicate])
(all _.and
(_.for [/.functor]
- ($contravariant.spec equivalence (multiple? 2) /.functor))
+ (contravariantT.spec equivalence (multiple? 2) /.functor))
(let [generator (is (Random (/.Predicate Nat))
(|> random.nat
(random.only (|>> (n.= 0) not))
(of ! each multiple?)))]
(all _.and
(_.for [/.union]
- ($monoid.spec equivalence /.union generator))
+ (monoidT.spec equivalence /.union generator))
(_.for [/.intersection]
- ($monoid.spec equivalence /.intersection generator))))
+ (monoidT.spec equivalence /.intersection generator))))
(_.coverage [/.none]
(bit#= false (/.none sample)))
diff --git a/stdlib/source/test/lux/control/maybe.lux b/stdlib/source/test/lux/control/maybe.lux
index 9e22f6be7..0782a7ad2 100644
--- a/stdlib/source/test/lux/control/maybe.lux
+++ b/stdlib/source/test/lux/control/maybe.lux
@@ -10,8 +10,9 @@
[\\specification
["$[0]" equivalence]
["$[0]" hash]
- ["$[0]" monoid]
- ["$[0]" monad]]]
+ ["$[0]" monad]]
+ ["[0]" monoid
+ ["[1]T" \\test]]]
[control
["[0]" io (.use "[1]#[0]" monad)]
["[0]" pipe]]
@@ -41,7 +42,7 @@
(of random.monad each (|>> {.#Some}))
($hash.spec (/.hash n.hash))))
(_.for [/.monoid]
- ($monoid.spec (/.equivalence n.equivalence) /.monoid (random.maybe random.nat)))
+ (monoidT.spec (/.equivalence n.equivalence) /.monoid (random.maybe random.nat)))
(_.for [/.functor]
(functorT.spec /#in /.equivalence /.functor))
(_.for [/.apply]
diff --git a/stdlib/source/test/lux/data/binary.lux b/stdlib/source/test/lux/data/binary.lux
index 44af3a44e..95d26678f 100644
--- a/stdlib/source/test/lux/data/binary.lux
+++ b/stdlib/source/test/lux/data/binary.lux
@@ -7,8 +7,9 @@
["[0]" monad (.only do)]
["[0]" enum]
[\\specification
- ["$[0]" equivalence]
- ["$[0]" monoid]]]
+ ["$[0]" equivalence]]
+ ["[0]" monoid
+ ["[1]T" \\test]]]
[control
["<>" parser]
["[0]" pipe]
@@ -418,7 +419,7 @@
(_.for [\\format.Mutation \\format.Specification \\format.Format])
(all _.and
(_.for [\\format.monoid]
- ($monoid.spec ..equivalence \\format.monoid ..random_specification))
+ (monoidT.spec ..equivalence \\format.monoid ..random_specification))
)))
(def (succeed result)
@@ -554,7 +555,7 @@
(_.for [/.equivalence]
($equivalence.spec /.equivalence (..random size)))
(_.for [/.monoid]
- ($monoid.spec /.equivalence /.monoid (..random size)))
+ (monoidT.spec /.equivalence /.monoid (..random size)))
(_.coverage [/.mix]
(n.= (of list.mix mix n.+ 0 (..as_list sample))
(/.mix n.+ 0 sample)))
diff --git a/stdlib/source/test/lux/data/bit.lux b/stdlib/source/test/lux/data/bit.lux
index ebdf744af..176b3114a 100644
--- a/stdlib/source/test/lux/data/bit.lux
+++ b/stdlib/source/test/lux/data/bit.lux
@@ -5,9 +5,11 @@
[monad (.only do)]
[\\specification
["$[0]" equivalence]
- ["$[0]" hash]
- ["$[0]" monoid]
- ["$[0]" codec]]]
+ ["$[0]" hash]]
+ ["[0]" codec
+ ["[1]T" \\test]]
+ ["[0]" monoid
+ ["[1]T" \\test]]]
[control
["[0]" function]]
[math
@@ -28,11 +30,11 @@
(_.for [/.hash]
($hash.spec /.hash random.bit))
(_.for [/.disjunction]
- ($monoid.spec /.equivalence /.disjunction random.bit))
+ (monoidT.spec /.equivalence /.disjunction random.bit))
(_.for [/.conjunction]
- ($monoid.spec /.equivalence /.conjunction random.bit))
+ (monoidT.spec /.equivalence /.conjunction random.bit))
(_.for [/.codec]
- ($codec.spec /.equivalence /.codec random.bit))
+ (codecT.spec /.equivalence /.codec random.bit))
(_.coverage [/.no /.yes]
(and (of /.equivalence = false /.no)
diff --git a/stdlib/source/test/lux/data/collection/array.lux b/stdlib/source/test/lux/data/collection/array.lux
index cec353635..e2e17aa03 100644
--- a/stdlib/source/test/lux/data/collection/array.lux
+++ b/stdlib/source/test/lux/data/collection/array.lux
@@ -4,12 +4,12 @@
[abstract
[functor (.only)]
[monad (.only do)]
- ["[0]" monoid
- ["$[1]" \\specification]]
- ["[0]" mix (.only Mix)
- ["$[1]" \\specification]]
["[0]" functor
["[1]T" \\test (.only Injection)]]
+ ["[0]" mix (.only Mix)
+ ["$[1]" \\specification]]
+ ["[0]" monoid
+ ["[1]T" \\test]]
[\\specification
["$[0]" equivalence]]]
[control
@@ -47,7 +47,7 @@
(_.for [/.equivalence]
($equivalence.spec (/.equivalence n.equivalence) (random.array size random.nat)))
(_.for [/.monoid]
- ($monoid.spec (/.equivalence n.equivalence) /.monoid (random.array size random.nat)))
+ (monoidT.spec (/.equivalence n.equivalence) /.monoid (random.array size random.nat)))
(_.for [/.functor]
(functorT.spec ..injection /.equivalence /.functor))
(_.for [/.mix]
@@ -134,7 +134,7 @@
(!.= n.equivalence left right))
(random.array size random.nat)))
(_.for [!.composite]
- ($monoid.spec (/.equivalence n.equivalence)
+ (monoidT.spec (/.equivalence n.equivalence)
(implementation
(def identity (!.empty 0))
(def (composite left right)
diff --git a/stdlib/source/test/lux/data/collection/list.lux b/stdlib/source/test/lux/data/collection/list.lux
index 52e2a3183..cbcc11c3d 100644
--- a/stdlib/source/test/lux/data/collection/list.lux
+++ b/stdlib/source/test/lux/data/collection/list.lux
@@ -8,10 +8,11 @@
["[1]T" \\test]]
["[0]" apply
["[1]T" \\test]]
+ ["[0]" monoid
+ ["[1]T" \\test]]
[\\specification
["$[0]" equivalence]
["$[0]" hash]
- ["$[0]" monoid]
["$[0]" mix]
["$[0]" monad]]]
[control
@@ -58,7 +59,7 @@
(of random.monad each (|>> list))
($hash.spec (/.hash n.hash))))
(_.for [/.monoid]
- ($monoid.spec (/.equivalence n.equivalence) /.monoid ..random))
+ (monoidT.spec (/.equivalence n.equivalence) /.monoid ..random))
(_.for [/.mix]
($mix.spec /#in /.equivalence /.mix))
(_.for [/.functor]
diff --git a/stdlib/source/test/lux/data/collection/list/property.lux b/stdlib/source/test/lux/data/collection/list/property.lux
index 719a17179..06d0141a2 100644
--- a/stdlib/source/test/lux/data/collection/list/property.lux
+++ b/stdlib/source/test/lux/data/collection/list/property.lux
@@ -4,8 +4,9 @@
[abstract
[monad (.only do)]
[\\specification
- ["$[0]" equivalence]
- ["$[0]" monoid]]]
+ ["$[0]" equivalence]]
+ ["[0]" monoid
+ ["[1]T" \\test]]]
[control
["[0]" maybe (.use "[1]#[0]" monad)]]
[data
@@ -50,7 +51,7 @@
($equivalence.spec (/.equivalence n.equivalence)
(..random size gen_key random.nat)))
(_.for [/.monoid]
- ($monoid.spec (/.equivalence n.equivalence)
+ (monoidT.spec (/.equivalence n.equivalence)
/.monoid
(..random 10 (random.lower_cased 1) random.nat)))
diff --git a/stdlib/source/test/lux/data/collection/sequence.lux b/stdlib/source/test/lux/data/collection/sequence.lux
index 2d9703523..b2033b46f 100644
--- a/stdlib/source/test/lux/data/collection/sequence.lux
+++ b/stdlib/source/test/lux/data/collection/sequence.lux
@@ -7,9 +7,10 @@
["[1]T" \\test (.only Injection)]]
["[0]" apply
["[1]T" \\test]]
+ ["[0]" monoid
+ ["[1]T" \\test]]
[\\specification
["$[0]" equivalence]
- ["$[0]" monoid]
["$[0]" mix]
["$[0]" monad]]]
[control
@@ -38,7 +39,7 @@
(_.for [/.equivalence]
($equivalence.spec (/.equivalence n.equivalence) (random.sequence size random.nat)))
(_.for [/.monoid]
- ($monoid.spec (/.equivalence n.equivalence) /.monoid (random.sequence size random.nat)))
+ (monoidT.spec (/.equivalence n.equivalence) /.monoid (random.sequence size random.nat)))
(_.for [/.mix]
($mix.spec /#in /.equivalence /.mix))
(_.for [/.functor]
diff --git a/stdlib/source/test/lux/data/collection/set.lux b/stdlib/source/test/lux/data/collection/set.lux
index d4cff2607..efa67edac 100644
--- a/stdlib/source/test/lux/data/collection/set.lux
+++ b/stdlib/source/test/lux/data/collection/set.lux
@@ -6,8 +6,9 @@
[monad (.only do)]
[\\specification
["$[0]" equivalence]
- ["$[0]" hash]
- ["$[0]" monoid]]]
+ ["$[0]" hash]]
+ ["[0]" monoid
+ ["[1]T" \\test]]]
[data
["[0]" bit (.use "[1]#[0]" equivalence)]
[collection
@@ -40,7 +41,7 @@
(of random.monad each (|>> list (/.of_list n.hash)))
($hash.spec /.hash)))
(_.for [/.monoid]
- ($monoid.spec /.equivalence (/.monoid n.hash) (random.set n.hash size random.nat)))
+ (monoidT.spec /.equivalence (/.monoid n.hash) (random.set n.hash size random.nat)))
(do !
[sizeL ..gen_nat
diff --git a/stdlib/source/test/lux/data/color/rgb.lux b/stdlib/source/test/lux/data/color/rgb.lux
index 4325eb72b..2723d5529 100644
--- a/stdlib/source/test/lux/data/color/rgb.lux
+++ b/stdlib/source/test/lux/data/color/rgb.lux
@@ -5,8 +5,9 @@
[monad (.only do)]
[\\specification
["[0]S" equivalence]
- ["[0]S" hash]
- ["[0]S" monoid]]]
+ ["[0]S" hash]]
+ ["[0]" monoid
+ ["[1]T" \\test]]]
[control
["[0]" try (.use "[1]#[0]" functor)]
["[0]" exception]]
@@ -107,9 +108,9 @@
(_.for [/.hash]
(hashS.spec /.hash ..random))
(_.for [/.addition]
- (monoidS.spec /.equivalence /.addition ..random))
+ (monoidT.spec /.equivalence /.addition ..random))
(_.for [/.subtraction]
- (monoidS.spec /.equivalence /.subtraction ..random))
+ (monoidT.spec /.equivalence /.subtraction ..random))
(_.coverage [/.rgb]
(let [it (/.rgb expected_red expected_green expected_blue)]
diff --git a/stdlib/source/test/lux/data/color/scheme.lux b/stdlib/source/test/lux/data/color/scheme.lux
index 0a66b7fc8..2d9ccaf3f 100644
--- a/stdlib/source/test/lux/data/color/scheme.lux
+++ b/stdlib/source/test/lux/data/color/scheme.lux
@@ -5,8 +5,7 @@
[monad (.only do)]
[\\specification
["$[0]" equivalence]
- ["$[0]" hash]
- ["$[0]" monoid]]]
+ ["$[0]" hash]]]
[data
[collection
["[0]" list]]]
diff --git a/stdlib/source/test/lux/data/format/json.lux b/stdlib/source/test/lux/data/format/json.lux
index 60140bae6..0442d17bc 100644
--- a/stdlib/source/test/lux/data/format/json.lux
+++ b/stdlib/source/test/lux/data/format/json.lux
@@ -7,8 +7,9 @@
["[0]" equivalence (.only Equivalence)
["[0]/[1]" \\polytypic]]
[\\specification
- ["$[0]" equivalence]
- ["$[0]" codec]]]
+ ["$[0]" equivalence]]
+ ["[0]" codec
+ ["[1]T" \\test]]]
[control
["<>" parser]
["[0]" pipe]
@@ -263,7 +264,7 @@
(<| (_.covering \\polytypic._)
(_.for [\\polytypic.codec]
(for @.old (_.test "PLACEHOLDER" true)
- ($codec.spec ..equivalence ..codec ..gen_record)))))
+ (codecT.spec ..equivalence ..codec ..gen_record)))))
(def .public random
(Random /.JSON)
@@ -343,7 +344,7 @@
($equivalence.spec /.equivalence ..random))
(_.for [/.codec]
(all _.and
- ($codec.spec /.equivalence /.codec ..random)
+ (codecT.spec /.equivalence /.codec ..random)
(do random.monad
[key (random.alphabetic 1)
[expected escaped] any_string]
diff --git a/stdlib/source/test/lux/data/format/xml.lux b/stdlib/source/test/lux/data/format/xml.lux
index 644064c47..337ab10b7 100644
--- a/stdlib/source/test/lux/data/format/xml.lux
+++ b/stdlib/source/test/lux/data/format/xml.lux
@@ -4,8 +4,9 @@
[abstract
[monad (.only do)]
[\\specification
- ["$[0]" equivalence]
- ["$[0]" codec]]]
+ ["$[0]" equivalence]]
+ ["[0]" codec
+ ["[1]T" \\test]]]
[control
["<>" parser (.use "[1]#[0]" monad)]
["[0]" maybe]
@@ -233,7 +234,7 @@
(_.for [/.equivalence]
($equivalence.spec /.equivalence ..random))
(_.for [/.codec]
- ($codec.spec /.equivalence /.codec ..random))
+ (codecT.spec /.equivalence /.codec ..random))
(do [! random.monad]
[(^.let symbol [namespace name]) ..symbol]
diff --git a/stdlib/source/test/lux/data/text.lux b/stdlib/source/test/lux/data/text.lux
index 6dadb8aa6..e7bd6ac8b 100644
--- a/stdlib/source/test/lux/data/text.lux
+++ b/stdlib/source/test/lux/data/text.lux
@@ -6,11 +6,14 @@
[equivalence (.only Equivalence)]
[\\specification
["$[0]" equivalence]
- ["$[0]" hash]
- ["$[0]" order]
- ["$[0]" monoid]
- [functor
- ["$[0]" contravariant]]]]
+ ["$[0]" hash]]
+ [functor
+ ["[0]" contravariant
+ ["[1]T" \\test]]]
+ ["[0]" order
+ ["[1]T" \\test]]
+ ["[0]" monoid
+ ["[1]T" \\test]]]
[control
["<>" parser]
["[0]" pipe]
@@ -157,7 +160,7 @@
(do random.monad
[[format random] ..random_contravariant
example random]
- ($contravariant.spec (..equivalence example)
+ (contravariantT.spec (..equivalence example)
format
\\format.functor)))
@@ -864,9 +867,9 @@
(_.for [/.hash]
($hash.spec /.hash (random.ascii 1)))
(_.for [/.order]
- ($order.spec /.order (random.ascii 2)))
+ (orderT.spec /.order (random.ascii 2)))
(_.for [/.monoid]
- ($monoid.spec /.equivalence /.monoid (random.ascii 2)))
+ (monoidT.spec /.equivalence /.monoid (random.ascii 2)))
..size
..affix
diff --git a/stdlib/source/test/lux/data/text/encoding.lux b/stdlib/source/test/lux/data/text/encoding.lux
index e573de1d3..d6c30f981 100644
--- a/stdlib/source/test/lux/data/text/encoding.lux
+++ b/stdlib/source/test/lux/data/text/encoding.lux
@@ -2,9 +2,7 @@
[library
[lux (.except)
[abstract
- [monad (.only do)]
- [\\specification
- ["$[0]" codec]]]
+ [monad (.only do)]]
[control
["[0]" maybe]
["[0]" try]]
diff --git a/stdlib/source/test/lux/data/text/encoding/utf8.lux b/stdlib/source/test/lux/data/text/encoding/utf8.lux
index 38e57a1b0..9b187eca6 100644
--- a/stdlib/source/test/lux/data/text/encoding/utf8.lux
+++ b/stdlib/source/test/lux/data/text/encoding/utf8.lux
@@ -2,8 +2,8 @@
[library
[lux (.except)
[abstract
- [\\specification
- ["$[0]" codec]]]
+ ["[0]" codec
+ ["[1]T" \\test]]]
[data
["[0]" text]]
[math
@@ -17,4 +17,4 @@
Test
(<| (_.covering /._)
(_.for [/.codec]
- ($codec.spec text.equivalence /.codec (random.unicode 5)))))
+ (codecT.spec text.equivalence /.codec (random.unicode 5)))))
diff --git a/stdlib/source/test/lux/data/text/unicode/block.lux b/stdlib/source/test/lux/data/text/unicode/block.lux
index 6ea3e3493..370740c9a 100644
--- a/stdlib/source/test/lux/data/text/unicode/block.lux
+++ b/stdlib/source/test/lux/data/text/unicode/block.lux
@@ -5,8 +5,9 @@
[monad (.only do)]
[\\specification
["$[0]" equivalence]
- ["$[0]" hash]
- ["$[0]" monoid]]]
+ ["$[0]" hash]]
+ ["[0]" monoid
+ ["[1]T" \\test]]]
[data
["[0]" text]
[collection
@@ -190,7 +191,7 @@
(_.for [/.hash]
($hash.spec /.hash ..random))
(_.for [/.monoid]
- ($monoid.spec /.equivalence /.monoid ..random))
+ (monoidT.spec /.equivalence /.monoid ..random))
(_.for [/.block]
(all _.and
diff --git a/stdlib/source/test/lux/math/arithmetic/fixed_point.lux b/stdlib/source/test/lux/math/arithmetic/fixed_point.lux
index bff8264f2..f02901c87 100644
--- a/stdlib/source/test/lux/math/arithmetic/fixed_point.lux
+++ b/stdlib/source/test/lux/math/arithmetic/fixed_point.lux
@@ -4,8 +4,9 @@
[abstract
[monad (.only do)]
[\\specification
- ["[0]S" equivalence]
- ["[0]S" order]]]
+ ["[0]S" equivalence]]
+ ["[0]" order
+ ["[1]T" \\test]]]
[control
["[0]" try (.use "[1]#[0]" functor)]
["[0]" exception]]
@@ -65,7 +66,7 @@
(_.for [/.equivalence /.=]
(equivalenceS.spec (/.equivalence @) (..random @)))
(_.for [/.order /.<]
- (orderS.spec (/.order @) (..random @)))
+ (orderT.spec (/.order @) (..random @)))
(_.for [/.arithmetic]
(arithmeticS.spec (/.equivalence @) (/.arithmetic @) (..random @)))
diff --git a/stdlib/source/test/lux/math/arithmetic/modular.lux b/stdlib/source/test/lux/math/arithmetic/modular.lux
index 4d05bacbe..0d0a85f46 100644
--- a/stdlib/source/test/lux/math/arithmetic/modular.lux
+++ b/stdlib/source/test/lux/math/arithmetic/modular.lux
@@ -4,10 +4,13 @@
[abstract
[monad (.only do)]
[\\specification
- ["$[0]" equivalence]
- ["$[0]" order]
- ["$[0]" monoid]
- ["$[0]" codec]]]
+ ["$[0]" equivalence]]
+ ["[0]" codec
+ ["[1]T" \\test]]
+ ["[0]" order
+ ["[1]T" \\test]]
+ ["[0]" monoid
+ ["[1]T" \\test]]]
[control
["[0]" try]
["[0]" exception]
@@ -56,16 +59,16 @@
(_.for [/.equivalence /.=]
($equivalence.spec /.equivalence (..random subject::%)))
(_.for [/.order /.<]
- ($order.spec /.order (..random subject::%)))
+ (orderT.spec /.order (..random subject::%)))
(,, (with_template [<composite> <monoid>]
[(_.for [<monoid> <composite>]
- ($monoid.spec /.equivalence (<monoid> subject::%) (..random subject::%)))]
+ (monoidT.spec /.equivalence (<monoid> subject::%) (..random subject::%)))]
[/.+ /.addition]
[/.* /.multiplication]
))
(_.for [/.codec]
- ($codec.spec /.equivalence (/.codec subject::%) (..random subject::%)))
+ (codecT.spec /.equivalence (/.codec subject::%) (..random subject::%)))
(_.coverage [/.incorrect_modulus]
(when (|> param
diff --git a/stdlib/source/test/lux/math/arithmetic/saturation.lux b/stdlib/source/test/lux/math/arithmetic/saturation.lux
index 3ef3adb94..6b1e52a9b 100644
--- a/stdlib/source/test/lux/math/arithmetic/saturation.lux
+++ b/stdlib/source/test/lux/math/arithmetic/saturation.lux
@@ -36,16 +36,14 @@
(and (within_boundaries? [min max] (/#+ parameter subject))
(within_boundaries? [min max] (/#- parameter subject))
(within_boundaries? [min max] (/#* parameter subject))
- (within_boundaries? [min max] (/#/ parameter subject))
- (within_boundaries? [min max] (/#% parameter subject))))
+ (within_boundaries? [min max] (/#/ parameter subject))))
the_order_of_the_boundaries_does_not_matter!
(let [(open "/#[0]") (/.arithmetic n.order [max min] n.arithmetic)]
(and (within_boundaries? [min max] (/#+ parameter subject))
(within_boundaries? [min max] (/#- parameter subject))
(within_boundaries? [min max] (/#* parameter subject))
- (within_boundaries? [min max] (/#/ parameter subject))
- (within_boundaries? [min max] (/#% parameter subject))))]
+ (within_boundaries? [min max] (/#/ parameter subject))))]
(and boundaries_are_respected!
the_order_of_the_boundaries_does_not_matter!)))
)))
diff --git a/stdlib/source/test/lux/math/logic/continuous.lux b/stdlib/source/test/lux/math/logic/continuous.lux
index 184b5163d..83d816452 100644
--- a/stdlib/source/test/lux/math/logic/continuous.lux
+++ b/stdlib/source/test/lux/math/logic/continuous.lux
@@ -3,8 +3,8 @@
[lux (.except)
[abstract
[monad (.only do)]
- [\\specification
- ["$[0]" monoid]]]
+ ["[0]" monoid
+ ["[1]T" \\test]]]
[math
["[0]" random]
[number
@@ -24,7 +24,7 @@
(`` (all _.and
(,, (with_template [<monoid>]
[(_.for [<monoid>]
- ($monoid.spec r.= <monoid> random.rev))]
+ (monoidT.spec r.= <monoid> random.rev))]
[/.disjunction]
[/.conjunction]
diff --git a/stdlib/source/test/lux/math/logic/fuzzy.lux b/stdlib/source/test/lux/math/logic/fuzzy.lux
index 39d67239b..f132cc68e 100644
--- a/stdlib/source/test/lux/math/logic/fuzzy.lux
+++ b/stdlib/source/test/lux/math/logic/fuzzy.lux
@@ -4,9 +4,9 @@
[abstract
[equivalence (.only Equivalence)]
[monad (.only do)]
- [\\specification
- [functor
- ["$[0]" contravariant]]]]
+ [functor
+ ["[0]" contravariant
+ ["[1]T" \\test]]]]
[data
["[0]" bit (.use "[1]#[0]" equivalence)]
[collection
@@ -347,7 +347,7 @@
(right sample)))))]]
(all _.and
(_.for [/.functor]
- ($contravariant.spec equivalence fuzzy /.functor))
+ (contravariantT.spec equivalence fuzzy /.functor))
..trivial
..simple
diff --git a/stdlib/source/test/lux/math/number/frac.lux b/stdlib/source/test/lux/math/number/frac.lux
index 0e4f99ed6..fbfeb7021 100644
--- a/stdlib/source/test/lux/math/number/frac.lux
+++ b/stdlib/source/test/lux/math/number/frac.lux
@@ -6,10 +6,13 @@
[monad (.only do)]
[\\specification
["$[0]" equivalence]
- ["$[0]" hash]
- ["$[0]" order]
- ["$[0]" monoid]
- ["$[0]" codec]]]
+ ["$[0]" hash]]
+ ["[0]" codec
+ ["[1]T" \\test]]
+ ["[0]" order
+ ["[1]T" \\test]]
+ ["[0]" monoid
+ ["[1]T" \\test]]]
[data
["[0]" bit (.use "[1]#[0]" equivalence)]]
[math
@@ -105,10 +108,10 @@
(_.for [/.hash]
($hash.spec /.hash random.frac))
(_.for [/.order /.<]
- ($order.spec /.order random.safe_frac))
+ (orderT.spec /.order random.safe_frac))
(,, (with_template [<composite> <monoid>]
[(_.for [<monoid> <composite>]
- ($monoid.spec /.equivalence <monoid> ..random))]
+ (monoidT.spec /.equivalence <monoid> ..random))]
[/.+ /.addition]
[/.* /.multiplication]
@@ -118,7 +121,7 @@
))
(,, (with_template [<codec>]
[(_.for [<codec>]
- ($codec.spec /.equivalence <codec> random.safe_frac))]
+ (codecT.spec /.equivalence <codec> random.safe_frac))]
[/.binary] [/.octal] [/.decimal] [/.hex]
))
diff --git a/stdlib/source/test/lux/math/number/i64.lux b/stdlib/source/test/lux/math/number/i64.lux
index 95a19b447..8a5028a6f 100644
--- a/stdlib/source/test/lux/math/number/i64.lux
+++ b/stdlib/source/test/lux/math/number/i64.lux
@@ -7,8 +7,9 @@
[monad (.only do)]
[\\specification
["$[0]" equivalence]
- ["$[0]" hash]
- ["$[0]" monoid]]]
+ ["$[0]" hash]]
+ ["[0]" monoid
+ ["[1]T" \\test]]]
[math
["[0]" random (.only Random)]]
[test
@@ -155,9 +156,9 @@
(_.for [/.hash]
($hash.spec /.hash random.i64))
(_.for [/.disjunction]
- ($monoid.spec n.equivalence /.disjunction random.nat))
+ (monoidT.spec n.equivalence /.disjunction random.nat))
(_.for [/.conjunction]
- ($monoid.spec n.equivalence /.conjunction random.nat))
+ (monoidT.spec n.equivalence /.conjunction random.nat))
))
(def .public test
diff --git a/stdlib/source/test/lux/math/number/int.lux b/stdlib/source/test/lux/math/number/int.lux
index 6223d9316..cd444a6e7 100644
--- a/stdlib/source/test/lux/math/number/int.lux
+++ b/stdlib/source/test/lux/math/number/int.lux
@@ -6,11 +6,14 @@
[\\specification
["$[0]" equivalence]
["$[0]" hash]
- ["$[0]" order]
["$[0]" enum]
- ["$[0]" interval]
- ["$[0]" monoid]
- ["$[0]" codec]]]
+ ["$[0]" interval]]
+ ["[0]" codec
+ ["[1]T" \\test]]
+ ["[0]" order
+ ["[1]T" \\test]]
+ ["[0]" monoid
+ ["[1]T" \\test]]]
[data
["[0]" bit (.use "[1]#[0]" equivalence)]]
[math
@@ -34,14 +37,14 @@
(_.for [/.hash]
($hash.spec /.hash random.int))
(_.for [/.order /.<]
- ($order.spec /.order random.int))
+ (orderT.spec /.order random.int))
(_.for [/.enum]
($enum.spec /.enum random.int))
(_.for [/.interval]
($interval.spec /.interval random.int))
(,, (with_template [<monoid>]
[(_.for [<monoid>]
- ($monoid.spec /.equivalence <monoid> random.int))]
+ (monoidT.spec /.equivalence <monoid> random.int))]
[/.addition]
[/.multiplication]
@@ -51,7 +54,7 @@
))
(,, (with_template [<codec>]
[(_.for [<codec>]
- ($codec.spec /.equivalence <codec> random.int))]
+ (codecT.spec /.equivalence <codec> random.int))]
[/.binary] [/.octal] [/.decimal] [/.hex]
))
diff --git a/stdlib/source/test/lux/math/number/nat.lux b/stdlib/source/test/lux/math/number/nat.lux
index 6cd7bafd5..c56fb392b 100644
--- a/stdlib/source/test/lux/math/number/nat.lux
+++ b/stdlib/source/test/lux/math/number/nat.lux
@@ -6,11 +6,14 @@
[\\specification
["$[0]" equivalence]
["$[0]" hash]
- ["$[0]" order]
["$[0]" enum]
- ["$[0]" interval]
- ["$[0]" monoid]
- ["$[0]" codec]]]
+ ["$[0]" interval]]
+ ["[0]" codec
+ ["[1]T" \\test]]
+ ["[0]" order
+ ["[1]T" \\test]]
+ ["[0]" monoid
+ ["[1]T" \\test]]]
[data
["[0]" bit (.use "[1]#[0]" equivalence)]]
[math
@@ -32,14 +35,14 @@
(_.for [/.hash]
($hash.spec /.hash random.nat))
(_.for [/.order /.<]
- ($order.spec /.order random.nat))
+ (orderT.spec /.order random.nat))
(_.for [/.enum]
($enum.spec /.enum random.nat))
(_.for [/.interval]
($interval.spec /.interval random.nat))
(,, (with_template [<composite> <monoid>]
[(_.for [<monoid> <composite>]
- ($monoid.spec /.equivalence <monoid> random.nat))]
+ (monoidT.spec /.equivalence <monoid> random.nat))]
[/.+ /.addition]
[/.* /.multiplication]
@@ -49,7 +52,7 @@
))
(,, (with_template [<codec>]
[(_.for [<codec>]
- ($codec.spec /.equivalence <codec> random.nat))]
+ (codecT.spec /.equivalence <codec> random.nat))]
[/.binary] [/.octal] [/.decimal] [/.hex]
))
diff --git a/stdlib/source/test/lux/math/number/ratio.lux b/stdlib/source/test/lux/math/number/ratio.lux
index 1392162c3..c4bfcac60 100644
--- a/stdlib/source/test/lux/math/number/ratio.lux
+++ b/stdlib/source/test/lux/math/number/ratio.lux
@@ -4,10 +4,13 @@
[abstract
[monad (.only do)]
[\\specification
- ["$[0]" equivalence]
- ["$[0]" order]
- ["$[0]" monoid]
- ["$[0]" codec]]]
+ ["$[0]" equivalence]]
+ ["[0]" codec
+ ["[1]T" \\test]]
+ ["[0]" order
+ ["[1]T" \\test]]
+ ["[0]" monoid
+ ["[1]T" \\test]]]
[control
["[0]" maybe (.use "[1]#[0]" functor)]]
[data
@@ -45,16 +48,16 @@
(_.for [/.equivalence /.=]
($equivalence.spec /.equivalence ..random))
(_.for [/.order /.<]
- ($order.spec /.order ..random))
+ (orderT.spec /.order ..random))
(,, (with_template [<composite> <monoid>]
[(_.for [<monoid> <composite>]
- ($monoid.spec /.equivalence <monoid> ..random))]
+ (monoidT.spec /.equivalence <monoid> ..random))]
[/.+ /.addition]
[/.* /.multiplication]
))
(_.for [/.codec]
- ($codec.spec /.equivalence /.codec ..random))
+ (codecT.spec /.equivalence /.codec ..random))
(_.for [/.arithmetic]
(arithmeticS.spec /.equivalence /.arithmetic ..random))
diff --git a/stdlib/source/test/lux/math/number/rev.lux b/stdlib/source/test/lux/math/number/rev.lux
index 80b5b4a5a..c570191c2 100644
--- a/stdlib/source/test/lux/math/number/rev.lux
+++ b/stdlib/source/test/lux/math/number/rev.lux
@@ -6,11 +6,14 @@
[\\specification
["$[0]" equivalence]
["$[0]" hash]
- ["$[0]" order]
["$[0]" enum]
- ["$[0]" interval]
- ["$[0]" monoid]
- ["$[0]" codec]]]
+ ["$[0]" interval]]
+ ["[0]" codec
+ ["[1]T" \\test]]
+ ["[0]" order
+ ["[1]T" \\test]]
+ ["[0]" monoid
+ ["[1]T" \\test]]]
[data
["[0]" bit (.use "[1]#[0]" equivalence)]]
[math
@@ -34,14 +37,14 @@
(_.for [/.hash]
($hash.spec /.hash random.rev))
(_.for [/.order /.<]
- ($order.spec /.order random.rev))
+ (orderT.spec /.order random.rev))
(_.for [/.enum]
($enum.spec /.enum random.rev))
(_.for [/.interval]
($interval.spec /.interval random.rev))
(,, (with_template [<composite> <monoid>]
[(_.for [<monoid> <composite>]
- ($monoid.spec /.equivalence <monoid> random.rev))]
+ (monoidT.spec /.equivalence <monoid> random.rev))]
[/.+ /.addition]
@@ -50,7 +53,7 @@
))
(,, (with_template [<codec>]
[(_.for [<codec>]
- ($codec.spec /.equivalence <codec> random.rev))]
+ (codecT.spec /.equivalence <codec> random.rev))]
[/.binary] [/.octal] [/.decimal] [/.hex]
))
diff --git a/stdlib/source/test/lux/meta.lux b/stdlib/source/test/lux/meta.lux
index 75cb0d09b..80f9231cf 100644
--- a/stdlib/source/test/lux/meta.lux
+++ b/stdlib/source/test/lux/meta.lux
@@ -42,7 +42,7 @@
... ["[1][0]" symbol]
... ["[1][0]" configuration]
... ["[1][0]" version]
- ... ["[1][0]" type]
+ ["[1][0]" type]
... ["[1][0]" macro]
... ["[1][0]" static]
["[1][0]" extension]
@@ -56,7 +56,6 @@
... "Ruby" (.,, (.these ["[1]/[0]" ruby]))
... (.,, (.these))))]
["[1][0]" compiler
- ... ["[1]/[0]" arity]
... ["[1]/[0]" version]
... ["[1]/[0]" reference]
... ["[1]/[0]" phase]
@@ -530,179 +529,179 @@
))))
)))
-... (def search_related
-... Test
-... (do [! random.monad]
-... [expected_exported? random.bit
-... expected_current_module (random.upper_cased 1)
-... expected_macro_module (random.only (|>> (text#= expected_current_module) not)
-... (random.upper_cased 1))
-... expected_short (random.upper_cased 1)
-... expected_type (of ! each (function (_ name)
-... {.#Nominal name (list)})
-... (random.upper_cased 1))
-... expected_value (random.either (in .def)
-... (in .macro))
-... .let [expected_lux
-... (is (-> Bit (Maybe Type)
-... [(List [Text .Global])
-... (List [Text .Global])
-... Lux])
-... (function (_ exported? def_type)
-... (let [current_globals (is (List [Text .Global])
-... (list [expected_short
-... {.#Alias [expected_macro_module expected_short]}]))
-... macro_globals (is (List [Text .Global])
-... (when def_type
-... {.#Some def_type}
-... (list [expected_short
-... {.#Definition [exported? def_type expected_value]}])
+(def search_related
+ Test
+ (do [! random.monad]
+ [expected_exported? random.bit
+ expected_current_module (random.upper_cased 1)
+ expected_macro_module (random.only (|>> (text#= expected_current_module) not)
+ (random.upper_cased 1))
+ expected_short (random.upper_cased 1)
+ expected_type (of ! each (function (_ name)
+ {.#Nominal name (list)})
+ (random.upper_cased 1))
+ expected_value (random.either (in .def)
+ (in .macro))
+ .let [expected_lux
+ (is (-> Bit (Maybe Type)
+ [(List [Text [Bit .Global]])
+ (List [Text [Bit .Global]])
+ Lux])
+ (function (_ exported? def_type)
+ (let [current_globals (is (List [Text [Bit .Global]])
+ (list [expected_short
+ [false {.#Alias [expected_macro_module expected_short]}]]))
+ macro_globals (is (List [Text [Bit .Global]])
+ (when def_type
+ {.#Some def_type}
+ (list [expected_short
+ [exported? {.#Definition [def_type expected_value]}]])
-... {.#None}
-... (list)))]
-... [current_globals
-... macro_globals
-... [.#info [.#target ""
-... .#version ""
-... .#mode {.#Build}
-... .#configuration (list)]
-... .#source [location.dummy 0 ""]
-... .#location location.dummy
-... .#current_module {.#Some expected_current_module}
-... .#modules (list [expected_current_module
-... [.#module_hash 0
-... .#module_aliases (list)
-... .#definitions current_globals
-... .#imports (list)
-... .#module_state {.#Active}]]
-... [expected_macro_module
-... [.#module_hash 0
-... .#module_aliases (list)
-... .#definitions macro_globals
-... .#imports (list)
-... .#module_state {.#Active}]])
-... .#scopes (list)
-... .#type_context [.#ex_counter 0
-... .#var_counter 0
-... .#var_bindings (list)]
-... .#expected {.#None}
-... .#seed 0
-... .#scope_type_vars (list)
-... .#extensions []
-... .#eval (as (-> Type Code (Meta Any)) [])
-... .#host []]])))]]
-... (all _.and
-... (_.coverage [/.export]
-... (and (let [[current_globals macro_globals expected_lux]
-... (expected_lux true {.#Some expected_type})]
-... (|> (/.export [expected_macro_module expected_short])
-... (/.result expected_lux)
-... (!expect {try.#Success _})))
-... (let [[current_globals macro_globals expected_lux]
-... (expected_lux false {.#Some expected_type})]
-... (|> (/.export [expected_macro_module expected_short])
-... (/.result expected_lux)
-... (!expect {try.#Failure _})))))
-... (_.coverage [/.macro]
-... (let [same_module!
-... (let [[current_globals macro_globals expected_lux]
-... (expected_lux true {.#Some .Macro})]
-... (|> (/.macro [expected_macro_module expected_short])
-... (/.result expected_lux)
-... (!expect (^.multi {try.#Success {.#Some actual_value}}
-... (same? expected_value actual_value)))))
+ {.#None}
+ (list)))]
+ [current_globals
+ macro_globals
+ [.#info [.#target ""
+ .#version ""
+ .#mode {.#Build}
+ .#configuration (list)]
+ .#source [location.dummy 0 ""]
+ .#location location.dummy
+ .#current_module {.#Some expected_current_module}
+ .#modules (list [expected_current_module
+ [.#module_hash 0
+ .#module_aliases (list)
+ .#definitions current_globals
+ .#imports (list)
+ .#module_state {.#Active}]]
+ [expected_macro_module
+ [.#module_hash 0
+ .#module_aliases (list)
+ .#definitions macro_globals
+ .#imports (list)
+ .#module_state {.#Active}]])
+ .#scopes (list)
+ .#type_context [.#ex_counter 0
+ .#var_counter 0
+ .#var_bindings (list)]
+ .#expected {.#None}
+ .#seed 0
+ .#scope_type_vars (list)
+ .#extensions []
+ .#eval (as (-> Type Code (Meta Any)) [])
+ .#host []]])))]]
+ (all _.and
+ (_.coverage [/.export]
+ (and (let [[current_globals macro_globals expected_lux]
+ (expected_lux true {.#Some expected_type})]
+ (|> (/.export [expected_macro_module expected_short])
+ (/.result expected_lux)
+ (!expect {try.#Success _})))
+ (let [[current_globals macro_globals expected_lux]
+ (expected_lux false {.#Some expected_type})]
+ (|> (/.export [expected_macro_module expected_short])
+ (/.result expected_lux)
+ (!expect {try.#Failure _})))))
+ (_.coverage [/.macro]
+ (let [same_module!
+ (let [[current_globals macro_globals expected_lux]
+ (expected_lux true {.#Some .Macro})]
+ (|> (/.macro [expected_macro_module expected_short])
+ (/.result expected_lux)
+ (!expect (^.multi {try.#Success {.#Some actual_value}}
+ (same? expected_value actual_value)))))
-... not_macro!
-... (let [[current_globals macro_globals expected_lux]
-... (expected_lux true {.#Some expected_type})]
-... (|> (/.macro [expected_macro_module expected_short])
-... (/.result expected_lux)
-... (!expect {try.#Success {.#None}})))
+ not_macro!
+ (let [[current_globals macro_globals expected_lux]
+ (expected_lux true {.#Some expected_type})]
+ (|> (/.macro [expected_macro_module expected_short])
+ (/.result expected_lux)
+ (!expect {try.#Success {.#None}})))
-... not_found!
-... (let [[current_globals macro_globals expected_lux]
-... (expected_lux true {.#None})]
-... (|> (/.macro [expected_macro_module expected_short])
-... (/.result expected_lux)
-... (!expect {try.#Success {.#None}})))
+ not_found!
+ (let [[current_globals macro_globals expected_lux]
+ (expected_lux true {.#None})]
+ (|> (/.macro [expected_macro_module expected_short])
+ (/.result expected_lux)
+ (!expect {try.#Success {.#None}})))
-... aliasing!
-... (let [[current_globals macro_globals expected_lux]
-... (expected_lux true {.#Some .Macro})]
-... (|> (/.macro [expected_current_module expected_short])
-... (/.result expected_lux)
-... (!expect (^.multi {try.#Success {.#Some actual_value}}
-... (same? expected_value actual_value)))))]
-... (and same_module!
-... not_macro!
-... not_found!
-... aliasing!)))
-... (_.coverage [/.de_aliased]
-... (let [[current_globals macro_globals expected_lux]
-... (expected_lux true {.#Some .Macro})]
-... (and (|> (/.de_aliased [expected_macro_module expected_short])
-... (/.result expected_lux)
-... (try#each (symbol#= [expected_macro_module expected_short]))
-... (try.else false))
-... (|> (/.de_aliased [expected_current_module expected_short])
-... (/.result expected_lux)
-... (try#each (symbol#= [expected_macro_module expected_short]))
-... (try.else false)))))
-... (_.coverage [/.definition]
-... (let [[current_globals macro_globals expected_lux]
-... (expected_lux expected_exported? {.#Some expected_type})
+ aliasing!
+ (let [[current_globals macro_globals expected_lux]
+ (expected_lux true {.#Some .Macro})]
+ (|> (/.macro [expected_current_module expected_short])
+ (/.result expected_lux)
+ (!expect (^.multi {try.#Success {.#Some actual_value}}
+ (same? expected_value actual_value)))))]
+ (and same_module!
+ not_macro!
+ not_found!
+ aliasing!)))
+ (_.coverage [/.de_aliased]
+ (let [[current_globals macro_globals expected_lux]
+ (expected_lux true {.#Some .Macro})]
+ (and (|> (/.de_aliased [expected_macro_module expected_short])
+ (/.result expected_lux)
+ (try#each (symbol#= [expected_macro_module expected_short]))
+ (try.else false))
+ (|> (/.de_aliased [expected_current_module expected_short])
+ (/.result expected_lux)
+ (try#each (symbol#= [expected_macro_module expected_short]))
+ (try.else false)))))
+ (_.coverage [/.definition]
+ (let [[current_globals macro_globals expected_lux]
+ (expected_lux expected_exported? {.#Some expected_type})
-... definition!
-... (|> (/.definition [expected_macro_module expected_short])
-... (/.result expected_lux)
-... (!expect (^.multi {try.#Success {.#Definition [actual_exported? actual_type actual_value]}}
-... (and (bit#= expected_exported? actual_exported?)
-... (same? expected_type actual_type)
-... (same? (as Any expected_value) actual_value)))))
+ definition!
+ (|> (/.definition [expected_macro_module expected_short])
+ (/.result expected_lux)
+ (!expect (^.multi {try.#Success [actual_exported? {.#Definition [actual_type actual_value]}]}
+ (and (bit#= expected_exported? actual_exported?)
+ (same? expected_type actual_type)
+ (same? (as Any expected_value) actual_value)))))
-... alias!
-... (|> (/.definition [expected_current_module expected_short])
-... (/.result expected_lux)
-... (!expect (^.multi {try.#Success {.#Alias [actual_module actual_short]}}
-... (and (same? expected_macro_module actual_module)
-... (same? expected_short actual_short)))))]
-... (and definition!
-... alias!)))
-... (_.coverage [/.definition_type]
-... (let [[current_globals macro_globals expected_lux]
-... (expected_lux expected_exported? {.#Some expected_type})
+ alias!
+ (|> (/.definition [expected_current_module expected_short])
+ (/.result expected_lux)
+ (!expect (^.multi {try.#Success [.false {.#Alias [actual_module actual_short]}]}
+ (and (same? expected_macro_module actual_module)
+ (same? expected_short actual_short)))))]
+ (and definition!
+ alias!)))
+ (_.coverage [/.definition_type]
+ (let [[current_globals macro_globals expected_lux]
+ (expected_lux expected_exported? {.#Some expected_type})
-... definition!
-... (|> (/.definition_type [expected_macro_module expected_short])
-... (/.result expected_lux)
-... (!expect (^.multi {try.#Success actual_type}
-... (same? expected_type actual_type))))
+ definition!
+ (|> (/.definition_type [expected_macro_module expected_short])
+ (/.result expected_lux)
+ (!expect (^.multi {try.#Success actual_type}
+ (same? expected_type actual_type))))
-... alias!
-... (|> (/.definition_type [expected_current_module expected_short])
-... (/.result expected_lux)
-... (!expect (^.multi {try.#Success actual_type}
-... (same? expected_type actual_type))))]
-... (and definition!
-... alias!)))
-... (_.coverage [/.type_definition]
-... (let [[current_globals macro_globals expected_lux]
-... (expected_lux expected_exported? {.#Some .Type})
+ alias!
+ (|> (/.definition_type [expected_current_module expected_short])
+ (/.result expected_lux)
+ (!expect (^.multi {try.#Success actual_type}
+ (same? expected_type actual_type))))]
+ (and definition!
+ alias!)))
+ (_.coverage [/.type_definition]
+ (let [[current_globals macro_globals expected_lux]
+ (expected_lux expected_exported? {.#Some .Type})
-... definition!
-... (|> (/.type_definition [expected_macro_module expected_short])
-... (/.result expected_lux)
-... (!expect (^.multi {try.#Success actual_value}
-... (same? (as .Type expected_value) actual_value))))
+ definition!
+ (|> (/.type_definition [expected_macro_module expected_short])
+ (/.result expected_lux)
+ (!expect (^.multi {try.#Success actual_value}
+ (same? (as .Type expected_value) actual_value))))
-... alias!
-... (|> (/.type_definition [expected_current_module expected_short])
-... (/.result expected_lux)
-... (!expect (^.multi {try.#Success actual_value}
-... (same? (as .Type expected_value) actual_value))))]
-... (and definition!
-... alias!)))
-... )))
+ alias!
+ (|> (/.type_definition [expected_current_module expected_short])
+ (/.result expected_lux)
+ (!expect (^.multi {try.#Success actual_value}
+ (same? (as .Type expected_value) actual_value))))]
+ (and definition!
+ alias!)))
+ )))
... (def label_related
... Test
@@ -1056,7 +1055,7 @@
..module_related
..context_related
..definition_related
- ... ..search_related
+ ..search_related
... ..locals_related
... (_.for [.Label]
... ..label_related)
@@ -1067,7 +1066,7 @@
... /symbol.test
... /configuration.test
... /version.test
- ... /type.test
+ /type.test
... /macro.test
... /static.test
... /target.test
@@ -1082,7 +1081,6 @@
/global.test
/compiler.test
- ... /compiler/arity.test
... /compiler/version.test
... /compiler/reference.test
... /compiler/phase.test
diff --git a/stdlib/source/test/lux/meta/compiler.lux b/stdlib/source/test/lux/meta/compiler.lux
index 6e56ccfac..a6589b9d5 100644
--- a/stdlib/source/test/lux/meta/compiler.lux
+++ b/stdlib/source/test/lux/meta/compiler.lux
@@ -8,7 +8,11 @@
[test
["_" property (.only Test)]]]]
[\\library
- ["[0]" /]])
+ ["[0]" /]]
+ ["[0]" /
+ ["[1][0]" arity]
+ ["[1][0]" language
+ ["[1]/[0]" lux]]])
(def .public test
Test
@@ -18,4 +22,7 @@
(all _.and
(_.coverage [/.Code /.Parameter /.Input]
true)
+
+ /arity.test
+ /language/lux.test
)))
diff --git a/stdlib/source/test/lux/meta/compiler/language/lux.lux b/stdlib/source/test/lux/meta/compiler/language/lux.lux
new file mode 100644
index 000000000..ed26027df
--- /dev/null
+++ b/stdlib/source/test/lux/meta/compiler/language/lux.lux
@@ -0,0 +1,128 @@
+(.require
+ [library
+ [lux (.except global)
+ [abstract
+ [equivalence (.only Equivalence)]
+ [monad (.only do)]]
+ [control
+ ["[0]" try (.use "[1]#[0]" functor)]]
+ [data
+ ["[0]" sum]
+ ["[0]" product]
+ ["[0]" bit]
+ ["[0]" text (.use "[1]#[0]" equivalence)]
+ ["[0]" binary
+ ["![1]" \\format]
+ ["?[1]" \\parser]]
+ [collection
+ ["[0]" list]]]
+ [math
+ ["[0]" random (.only Random) (.use "[1]#[0]" monad)]
+ [number
+ ["[0]" nat]]]
+ [meta
+ ["[0]" version]
+ ["[0]" type (.only)
+ ["[1]T" \\test]]
+ ["[0]" symbol (.only)
+ ["[1]T" \\test]]
+ [compiler
+ [meta
+ [archive
+ ["[0]" key]
+ ["[0]" signature]]]]]
+ [test
+ ["_" property (.only Test)]]]]
+ [\\library
+ ["[0]" /]])
+
+(def any_equivalence
+ (Equivalence Any)
+ (implementation
+ (def (= _ _)
+ true)))
+
+(def definition_equivalence
+ (Equivalence Definition)
+ (all product.equivalence
+ type.equivalence
+ ..any_equivalence
+ ))
+
+(def definition
+ (Random Definition)
+ (do random.monad
+ [type (typeT.random 1)]
+ (in [type []])))
+
+(def global_equivalence
+ (Equivalence Global)
+ (all sum.equivalence
+ ..definition_equivalence
+ symbol.equivalence
+ ..definition_equivalence
+ ))
+
+(def global
+ (Random Global)
+ (all random.or
+ ..definition
+ (symbolT.random 1 1)
+ ..definition
+ ))
+
+(def module_state_equivalence
+ (Equivalence Module_State)
+ (all sum.equivalence
+ ..any_equivalence
+ ..any_equivalence
+ ..any_equivalence
+ ))
+
+(def module_state
+ (Random Module_State)
+ (all random.or
+ (random#in [])
+ (random#in [])
+ (random#in [])
+ ))
+
+(def module_equivalence
+ (Equivalence Module)
+ (all product.equivalence
+ nat.equivalence
+ (list.equivalence (product.equivalence text.equivalence text.equivalence))
+ (list.equivalence (all product.equivalence text.equivalence bit.equivalence global_equivalence))
+ (list.equivalence text.equivalence)
+ ..module_state_equivalence
+ ))
+
+(def module
+ (Random Module)
+ (all random.and
+ random.nat
+ (random.list 1 (random.and (random.upper_cased 2) (random.upper_cased 3)))
+ (random.list 4 (all random.and (random.upper_cased 5) random.bit ..global))
+ (random.list 6 (random.upper_cased 7))
+ ..module_state
+ ))
+
+(def .public test
+ Test
+ (<| (_.covering /._)
+ (do [! random.monad]
+ [expected ..module])
+ (all _.and
+ (_.coverage [/.format /.parser]
+ (|> expected
+ (!binary.result /.format)
+ (?binary.result /.parser)
+ (try#each (of module_equivalence = (has .#module_state {.#Cached} expected)))
+ (try.else false)))
+ (_.coverage [/.key]
+ (let [it (key.signature /.key)]
+ (and (let [[expected_module _] (symbol /._)
+ [actual_module actual_short] (the signature.#name it)]
+ (and (text#= expected_module actual_module)))
+ (same? version.latest (the signature.#version it)))))
+ )))
diff --git a/stdlib/source/test/lux/meta/configuration.lux b/stdlib/source/test/lux/meta/configuration.lux
index 24a6ecf76..b505f54d4 100644
--- a/stdlib/source/test/lux/meta/configuration.lux
+++ b/stdlib/source/test/lux/meta/configuration.lux
@@ -4,8 +4,9 @@
[abstract
[monad (.only do)]
[\\specification
- ["$[0]" equivalence]
- ["$[0]" monoid]]]
+ ["$[0]" equivalence]]
+ ["[0]" monoid
+ ["[1]T" \\test]]]
[control
["<>" parser]
["[0]" try (.use "[1]#[0]" functor)]
@@ -58,7 +59,7 @@
(_.for [/.equivalence]
($equivalence.spec /.equivalence (..random 5)))
(_.for [/.monoid]
- ($monoid.spec /.equivalence /.monoid (..random 5)))
+ (monoidT.spec /.equivalence /.monoid (..random 5)))
(_.coverage [/.empty]
(list.empty? /.empty))
diff --git a/stdlib/source/test/lux/meta/symbol.lux b/stdlib/source/test/lux/meta/symbol.lux
index d16275357..9751bc770 100644
--- a/stdlib/source/test/lux/meta/symbol.lux
+++ b/stdlib/source/test/lux/meta/symbol.lux
@@ -5,9 +5,11 @@
[monad (.only do)]
[\\specification
["$[0]" equivalence]
- ["$[0]" hash]
- ["$[0]" order]
- ["$[0]" codec]]]
+ ["$[0]" hash]]
+ ["[0]" codec
+ ["[1]T" \\test]]
+ ["[0]" order
+ ["[1]T" \\test]]]
[data
["[0]" text]]
[math
@@ -48,9 +50,9 @@
(of ! each (|>> [""]))
($hash.spec /.hash)))
(_.for [/.order]
- ($order.spec /.order (..random sizeM1 sizeS1)))
+ (orderT.spec /.order (..random sizeM1 sizeS1)))
(_.for [/.codec]
- (_.and ($codec.spec /.equivalence /.codec (..random sizeM1 sizeS1))
+ (_.and (codecT.spec /.equivalence /.codec (..random sizeM1 sizeS1))
(_.test "Encoding a symbol without a module component results in text equal to the short of the symbol."
(if (text.empty? module1)
(same? short1 (of /.codec encoded symbol1))
diff --git a/stdlib/source/test/lux/meta/type/unit.lux b/stdlib/source/test/lux/meta/type/unit.lux
index 6c27c1900..d13ba3680 100644
--- a/stdlib/source/test/lux/meta/type/unit.lux
+++ b/stdlib/source/test/lux/meta/type/unit.lux
@@ -6,8 +6,9 @@
[equivalence (.only Equivalence)]
[\\specification
["$[0]" equivalence]
- ["$[0]" order]
- ["$[0]" enum]]]
+ ["$[0]" enum]]
+ ["[0]" order
+ ["[1]T" \\test]]]
[data
["[0]" text (.use "[1]#[0]" equivalence)
["%" \\format]]]
@@ -43,7 +44,7 @@
(_.for [/.equivalence]
($equivalence.spec /.equivalence (..meter 1,000)))
(_.for [/.order]
- ($order.spec /.order (..meter 1,000)))
+ (orderT.spec /.order (..meter 1,000)))
(_.for [/.enum]
($enum.spec /.enum (..meter 1,000)))
))
diff --git a/stdlib/source/test/lux/world.lux b/stdlib/source/test/lux/world.lux
index 3793d49ee..e4f9f5cec 100644
--- a/stdlib/source/test/lux/world.lux
+++ b/stdlib/source/test/lux/world.lux
@@ -18,6 +18,7 @@
["[1]/[0]" trade
["[1]/[0]" session]]
["[1]/[0]" market
+ ["[1]/[0]" price]
["[1]/[0]" analysis
["[1]/[0]" accumulation_distribution]]]]
["[1][0]" net]
@@ -38,6 +39,7 @@
/finance/money.test
/finance/trade/session.test
+ /finance/market/price.test
/finance/market/analysis/accumulation_distribution.test
/net.test
diff --git a/stdlib/source/test/lux/world/finance/market/price.lux b/stdlib/source/test/lux/world/finance/market/price.lux
new file mode 100644
index 000000000..d5b8232b5
--- /dev/null
+++ b/stdlib/source/test/lux/world/finance/market/price.lux
@@ -0,0 +1,106 @@
+(.require
+ [library
+ [lux (.except)
+ [abstract
+ [monad (.only do)]
+ [\\specification
+ ["[0]S" equivalence]]
+ ["[0]" order
+ ["[1]T" \\test]]]
+ [control
+ ["[0]" maybe (.use "[1]#[0]" functor)]]
+ [data
+ ["[0]" bit (.use "[1]#[0]" equivalence)]
+ ["[0]" text (.only)
+ ["%" \\format]]]
+ [math
+ ["[0]" random (.only Random) (.use "[1]#[0]" functor)]
+ [number
+ ["i" int]]]
+ [test
+ ["_" property (.only Test)]]]]
+ [\\library
+ ["[0]" / (.only)
+ [///
+ [money
+ ["[0]" currency (.only Currency)]]]]])
+
+(def .public (random $)
+ (All (_ $)
+ (-> (Currency $)
+ (Random (/.Action $))))
+ (random#each (/.action $)
+ random.int))
+
+(def .public test
+ Test
+ (<| (_.covering /._)
+ (do [! random.monad]
+ [expected_movement random.int
+
+ expected_parameter random.int
+ expected_subject random.int])
+ (_.for [/.Price /.Action])
+ (all _.and
+ (_.for [/.equivalence /.=]
+ (equivalenceS.spec /.equivalence (..random currency.usd)))
+ (_.for [/.order /.<]
+ (orderT.spec /.order (..random currency.usd)))
+
+ (_.coverage [/.action /.currency /.movement]
+ (let [it (/.action currency.usd expected_movement)]
+ (and (same? currency.usd (/.currency it))
+ (same? expected_movement (/.movement it)))))
+ (_.coverage [/.+ /.-]
+ (let [parameter (/.action currency.usd expected_parameter)
+ subject (/.action currency.usd expected_subject)]
+ (and (|> subject
+ (/.+ parameter)
+ (of /.equivalence = subject)
+ not)
+ (|> subject
+ (/.+ parameter)
+ (/.- parameter)
+ (of /.equivalence = subject)))))
+ (_.coverage [/.min]
+ (let [expected_parameter (/.action currency.usd expected_parameter)
+ expected_subject (/.action currency.usd expected_subject)]
+ (and (/.<= expected_parameter
+ (/.min expected_parameter expected_subject))
+ (/.<= expected_subject
+ (/.min expected_parameter expected_subject)))))
+ (_.coverage [/.max]
+ (let [expected_parameter (/.action currency.usd expected_parameter)
+ expected_subject (/.action currency.usd expected_subject)]
+ (and (/.>= expected_parameter
+ (/.max expected_parameter expected_subject))
+ (/.>= expected_subject
+ (/.max expected_parameter expected_subject)))))
+ (let [expected_parameter (/.action currency.usd expected_parameter)
+ expected_subject (/.action currency.usd expected_subject)]
+ (all _.and
+ (_.coverage [/.>]
+ (bit#= (/.> expected_parameter expected_subject)
+ (/.< expected_subject expected_parameter)))
+ (_.coverage [/.<= /.>=]
+ (bit#= (/.<= expected_parameter expected_subject)
+ (/.>= expected_subject expected_parameter)))
+ ))
+ (_.coverage [/.units /.sub_units]
+ (let [expected (/.action currency.usd expected_movement)
+ actual (/.action currency.usd (i.+ (/.units expected)
+ (/.sub_units expected)))]
+ (/.= expected actual)))
+ (_.coverage [/.of_units /.of_sub_units]
+ (let [expected (/.action currency.usd expected_movement)
+ actual (/.+ (/.of_units currency.usd (/.units expected))
+ (/.of_sub_units currency.usd (/.sub_units expected)))]
+ (/.= expected actual)))
+ (do !
+ [it (..random currency.usd)]
+ (_.coverage [/.format]
+ (and (text.starts_with? (%.int (/.movement it))
+ (text.replaced_once "." "" (/.format it)))
+ (text.ends_with? (currency.alphabetic_code (/.currency it))
+ (/.format it)))))
+ )))
diff --git a/stdlib/source/test/lux/world/finance/money.lux b/stdlib/source/test/lux/world/finance/money.lux
index 773589a15..073f19f34 100644
--- a/stdlib/source/test/lux/world/finance/money.lux
+++ b/stdlib/source/test/lux/world/finance/money.lux
@@ -4,8 +4,9 @@
[abstract
[monad (.only do)]
[\\specification
- ["[0]S" equivalence]
- ["[0]S" order]]]
+ ["[0]S" equivalence]]
+ ["[0]" order
+ ["[1]T" \\test]]]
[control
["[0]" maybe (.use "[1]#[0]" functor)]]
[data
@@ -44,7 +45,7 @@
(_.for [/.equivalence /.=]
(equivalenceS.spec /.equivalence (..random currency.usd)))
(_.for [/.order /.<]
- (orderS.spec /.order (..random currency.usd)))
+ (orderT.spec /.order (..random currency.usd)))
(_.coverage [/.money /.currency /.amount]
(let [it (/.money currency.usd expected_amount)]
diff --git a/stdlib/source/test/lux/world/finance/trade/session.lux b/stdlib/source/test/lux/world/finance/trade/session.lux
index 6ce1979d2..7519d63e3 100644
--- a/stdlib/source/test/lux/world/finance/trade/session.lux
+++ b/stdlib/source/test/lux/world/finance/trade/session.lux
@@ -56,7 +56,7 @@
(do [! random.monad]
[before (..random currency.usd)
after (..random currency.usd)])
- (_.for [/.Session /.Price /.Volume
+ (_.for [/.Session /.Volume
/.#open /.#high /.#low /.#close /.#volume])
(all _.and
(_.for [/.equivalence]
diff --git a/stdlib/source/test/lux/world/net/uri/query.lux b/stdlib/source/test/lux/world/net/uri/query.lux
index ecdd3c2c4..4ac981426 100644
--- a/stdlib/source/test/lux/world/net/uri/query.lux
+++ b/stdlib/source/test/lux/world/net/uri/query.lux
@@ -4,8 +4,9 @@
[abstract
[monad (.only do)]
[\\specification
- ["[0]S" equivalence]
- ["[0]S" codec]]]
+ ["[0]S" equivalence]]
+ ["[0]" codec
+ ["[1]T" \\test]]]
[data
[collection
["[0]" dictionary]]]
@@ -36,7 +37,7 @@
(_.for [/.equivalence]
(equivalenceS.spec /.equivalence (..random 2)))
(_.for [/.codec]
- (codecS.spec /.equivalence /.codec (..random 3)))
+ (codecT.spec /.equivalence /.codec (..random 3)))
(_.coverage [/.empty]
(dictionary.empty? /.empty))
diff --git a/stdlib/source/test/lux/world/time.lux b/stdlib/source/test/lux/world/time.lux
index 95ddb6370..4997cb844 100644
--- a/stdlib/source/test/lux/world/time.lux
+++ b/stdlib/source/test/lux/world/time.lux
@@ -5,9 +5,11 @@
[monad (.only do)]
[\\specification
["$[0]" equivalence]
- ["$[0]" order]
- ["$[0]" enum]
- ["$[0]" codec]]]
+ ["$[0]" enum]]
+ ["[0]" codec
+ ["[1]T" \\test]]
+ ["[0]" order
+ ["[1]T" \\test]]]
[control
["[0]" pipe]
["[0]" try (.use "[1]#[0]" functor)]
@@ -41,11 +43,11 @@
(_.for [/.equivalence]
($equivalence.spec /.equivalence random.time))
(_.for [/.order]
- ($order.spec /.order random.time))
+ (orderT.spec /.order random.time))
(_.for [/.enum]
($enum.spec /.enum random.time))
(_.for [/.codec]
- ($codec.spec /.equivalence /.codec random.time))))
+ (codecT.spec /.equivalence /.codec random.time))))
(def for_clock
Test
diff --git a/stdlib/source/test/lux/world/time/date.lux b/stdlib/source/test/lux/world/time/date.lux
index d2a3bdc0d..aff778c3c 100644
--- a/stdlib/source/test/lux/world/time/date.lux
+++ b/stdlib/source/test/lux/world/time/date.lux
@@ -5,9 +5,11 @@
[monad (.only do)]
[\\specification
["$[0]" equivalence]
- ["$[0]" order]
- ["$[0]" enum]
- ["$[0]" codec]]]
+ ["$[0]" enum]]
+ ["[0]" codec
+ ["[1]T" \\test]]
+ ["[0]" order
+ ["[1]T" \\test]]]
[control
["[0]" try (.use "[1]#[0]" functor)]
["[0]" exception]]
@@ -33,11 +35,11 @@
(_.for [/.equivalence]
($equivalence.spec /.equivalence random.date))
(_.for [/.order]
- ($order.spec /.order random.date))
+ (orderT.spec /.order random.date))
(_.for [/.enum]
($enum.spec /.enum random.date))
(_.for [/.codec]
- ($codec.spec /.equivalence /.codec random.date))
+ (codecT.spec /.equivalence /.codec random.date))
(do random.monad
[expected random.date]
diff --git a/stdlib/source/test/lux/world/time/day.lux b/stdlib/source/test/lux/world/time/day.lux
index 5e1c3a2fe..46b3c7785 100644
--- a/stdlib/source/test/lux/world/time/day.lux
+++ b/stdlib/source/test/lux/world/time/day.lux
@@ -6,9 +6,11 @@
[\\specification
["$[0]" equivalence]
["$[0]" hash]
- ["$[0]" order]
- ["$[0]" enum]
- ["$[0]" codec]]]
+ ["$[0]" enum]]
+ ["[0]" codec
+ ["[1]T" \\test]]
+ ["[0]" order
+ ["[1]T" \\test]]]
[control
["[0]" try (.use "[1]#[0]" functor)]
["[0]" exception]
@@ -52,11 +54,11 @@
(_.for [/.hash]
($hash.spec /.hash ..random))
(_.for [/.order]
- ($order.spec /.order ..random))
+ (orderT.spec /.order ..random))
(_.for [/.enum]
($enum.spec /.enum ..random))
(_.for [/.codec]
- ($codec.spec /.equivalence /.codec ..random))
+ (codecT.spec /.equivalence /.codec ..random))
(,, (with_template [<before> <current> <after>]
[(_.coverage [<current>]
diff --git a/stdlib/source/test/lux/world/time/duration.lux b/stdlib/source/test/lux/world/time/duration.lux
index c3546fe7a..f0e17332f 100644
--- a/stdlib/source/test/lux/world/time/duration.lux
+++ b/stdlib/source/test/lux/world/time/duration.lux
@@ -5,10 +5,13 @@
[monad (.only do)]
[\\specification
["$[0]" equivalence]
- ["$[0]" order]
- ["$[0]" enum]
- ["$[0]" monoid]
- ["$[0]" codec]]]
+ ["$[0]" enum]]
+ ["[0]" codec
+ ["[1]T" \\test]]
+ ["[0]" order
+ ["[1]T" \\test]]
+ ["[0]" monoid
+ ["[1]T" \\test]]]
[data
["[0]" bit (.use "[1]#[0]" equivalence)]]
[math
@@ -29,13 +32,13 @@
(_.for [/.equivalence]
($equivalence.spec /.equivalence random.duration))
(_.for [/.order]
- ($order.spec /.order random.duration))
+ (orderT.spec /.order random.duration))
(_.for [/.enum]
($enum.spec /.enum random.duration))
(_.for [/.monoid]
- ($monoid.spec /.equivalence /.monoid random.duration))
+ (monoidT.spec /.equivalence /.monoid random.duration))
(_.for [/.codec]
- ($codec.spec /.equivalence /.codec random.duration))
+ (codecT.spec /.equivalence /.codec random.duration))
(do random.monad
[duration random.duration]
diff --git a/stdlib/source/test/lux/world/time/instant.lux b/stdlib/source/test/lux/world/time/instant.lux
index ef6773eac..eebdd4fa0 100644
--- a/stdlib/source/test/lux/world/time/instant.lux
+++ b/stdlib/source/test/lux/world/time/instant.lux
@@ -6,9 +6,11 @@
[\\specification
["$[0]" equivalence]
["$[0]" hash]
- ["$[0]" order]
- ["$[0]" enum]
- ["$[0]" codec]]]
+ ["$[0]" enum]]
+ ["[0]" codec
+ ["[1]T" \\test]]
+ ["[0]" order
+ ["[1]T" \\test]]]
[control
["[0]" function]
["[0]" try (.use "[1]#[0]" functor)]
@@ -38,11 +40,11 @@
(_.for [/.hash]
($hash.spec /.hash random.instant))
(_.for [/.order]
- ($order.spec /.order random.instant))
+ (orderT.spec /.order random.instant))
(_.for [/.enum]
($enum.spec /.enum random.instant))
(_.for [/.codec]
- ($codec.spec /.equivalence /.codec random.instant))
+ (codecT.spec /.equivalence /.codec random.instant))
(do random.monad
[.let [(open "/#[0]") /.equivalence]
diff --git a/stdlib/source/test/lux/world/time/month.lux b/stdlib/source/test/lux/world/time/month.lux
index bc095c947..20d2d070e 100644
--- a/stdlib/source/test/lux/world/time/month.lux
+++ b/stdlib/source/test/lux/world/time/month.lux
@@ -6,9 +6,11 @@
[\\specification
["$[0]" equivalence]
["$[0]" hash]
- ["$[0]" order]
- ["$[0]" enum]
- ["$[0]" codec]]]
+ ["$[0]" enum]]
+ ["[0]" codec
+ ["[1]T" \\test]]
+ ["[0]" order
+ ["[1]T" \\test]]]
[control
["[0]" try (.use "[1]#[0]" functor)]
["[0]" exception]
@@ -46,11 +48,11 @@
(_.for [/.hash]
($hash.spec /.hash ..random))
(_.for [/.order]
- ($order.spec /.order ..random))
+ (orderT.spec /.order ..random))
(_.for [/.enum]
($enum.spec /.enum ..random))
(_.for [/.codec]
- ($codec.spec /.equivalence /.codec ..random))
+ (codecT.spec /.equivalence /.codec ..random))
(,, (with_template [<before> <current> <after>]
[(_.coverage [<current>]
diff --git a/stdlib/source/test/lux/world/time/solar.lux b/stdlib/source/test/lux/world/time/solar.lux
index f1da38370..5ffe2f1bd 100644
--- a/stdlib/source/test/lux/world/time/solar.lux
+++ b/stdlib/source/test/lux/world/time/solar.lux
@@ -4,9 +4,7 @@
[abstract
[monad (.only do)]
[\\specification
- ["$[0]" equivalence]
- ["$[0]" order]
- ["$[0]" codec]]]
+ ["$[0]" equivalence]]]
[control
["[0]" try]
["[0]" exception]
diff --git a/stdlib/source/test/lux/world/time/year.lux b/stdlib/source/test/lux/world/time/year.lux
index a635804ea..fc8504e80 100644
--- a/stdlib/source/test/lux/world/time/year.lux
+++ b/stdlib/source/test/lux/world/time/year.lux
@@ -4,9 +4,11 @@
[abstract
[monad (.only do)]
[\\specification
- ["$[0]" equivalence]
- ["$[0]" order]
- ["$[0]" codec]]]
+ ["$[0]" equivalence]]
+ ["[0]" codec
+ ["[1]T" \\test]]
+ ["[0]" order
+ ["[1]T" \\test]]]
[control
["[0]" try]
["[0]" exception]]
@@ -40,9 +42,9 @@
(_.for [/.equivalence]
($equivalence.spec /.equivalence ..random))
(_.for [/.order]
- ($order.spec /.order ..random))
+ (orderT.spec /.order ..random))
(_.for [/.codec /.parser]
- ($codec.spec /.equivalence /.codec ..random))
+ (codecT.spec /.equivalence /.codec ..random))
(do random.monad
[expected random.int]