aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/test
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/source/test')
-rw-r--r--stdlib/source/test/lux/tool.lux8
-rw-r--r--stdlib/source/test/lux/tool/compiler/language/lux/analysis/pattern.lux4
-rw-r--r--stdlib/source/test/lux/tool/compiler/language/lux/analysis/simple.lux (renamed from stdlib/source/test/lux/tool/compiler/language/lux/analysis/primitive.lux)4
-rw-r--r--stdlib/source/test/lux/tool/compiler/meta/archive/document.lux93
4 files changed, 102 insertions, 7 deletions
diff --git a/stdlib/source/test/lux/tool.lux b/stdlib/source/test/lux/tool.lux
index 79d25b75e..736c8757c 100644
--- a/stdlib/source/test/lux/tool.lux
+++ b/stdlib/source/test/lux/tool.lux
@@ -12,7 +12,7 @@
[lux
... ["[1][0]" syntax]
["[1][0]" analysis "_"
- ["[1]/[0]" primitive]
+ ["[1]/[0]" simple]
["[1]/[0]" composite]
["[1]/[0]" pattern]]
... [phase
@@ -22,7 +22,8 @@
["[1][0]" meta "_"
["[1]/[0]" archive "_"
["[1]/[0]" signature]
- ["[1]/[0]" key]]]
+ ["[1]/[0]" key]
+ ["[1]/[0]" document]]]
]])
(def: .public test
@@ -32,11 +33,12 @@
/version.test
/reference.test
/phase.test
- /analysis/primitive.test
+ /analysis/simple.test
/analysis/composite.test
/analysis/pattern.test
/meta/archive/signature.test
/meta/archive/key.test
+ /meta/archive/document.test
... /syntax.test
... /analysis.test
... /synthesis.test
diff --git a/stdlib/source/test/lux/tool/compiler/language/lux/analysis/pattern.lux b/stdlib/source/test/lux/tool/compiler/language/lux/analysis/pattern.lux
index b4ee9e9c8..7a1d4c66d 100644
--- a/stdlib/source/test/lux/tool/compiler/language/lux/analysis/pattern.lux
+++ b/stdlib/source/test/lux/tool/compiler/language/lux/analysis/pattern.lux
@@ -16,7 +16,7 @@
[\\library
["[0]" /]]
["[0]" // "_"
- ["[1][0]" primitive]
+ ["[1][0]" simple]
["[1][0]" composite]])
(def: .public random
@@ -24,7 +24,7 @@
(random.rec
(function (_ random)
($_ random.or
- //primitive.random
+ //simple.random
(//composite.random 4 random)
random.nat
))))
diff --git a/stdlib/source/test/lux/tool/compiler/language/lux/analysis/primitive.lux b/stdlib/source/test/lux/tool/compiler/language/lux/analysis/simple.lux
index 3c88cd1e5..e7c22559f 100644
--- a/stdlib/source/test/lux/tool/compiler/language/lux/analysis/primitive.lux
+++ b/stdlib/source/test/lux/tool/compiler/language/lux/analysis/simple.lux
@@ -17,7 +17,7 @@
["[0]" /]])
(def: .public random
- (Random /.Primitive)
+ (Random /.Simple)
($_ random.or
(random#in [])
random.bit
@@ -31,7 +31,7 @@
(def: .public test
Test
(<| (_.covering /._)
- (_.for [/.Primitive])
+ (_.for [/.Simple])
($_ _.and
(_.for [/.equivalence]
($equivalence.spec /.equivalence ..random))
diff --git a/stdlib/source/test/lux/tool/compiler/meta/archive/document.lux b/stdlib/source/test/lux/tool/compiler/meta/archive/document.lux
new file mode 100644
index 000000000..749dcdd09
--- /dev/null
+++ b/stdlib/source/test/lux/tool/compiler/meta/archive/document.lux
@@ -0,0 +1,93 @@
+(.using
+ [library
+ [lux "*"
+ ["_" test {"+" Test}]
+ [abstract
+ [monad {"+" do}]]
+ [control
+ [pipe {"+" case>}]
+ ["[0]" try ("[1]#[0]" functor)]
+ ["[0]" exception]
+ [parser
+ ["<[0]>" binary]]]
+ [data
+ [format
+ ["[0]F" binary]]]
+ [math
+ ["[0]" random]
+ [number
+ ["[0]" nat]]]]]
+ [\\library
+ ["[0]" /
+ [//
+ ["[1][0]" signature ("[1]#[0]" equivalence)]
+ ["[1][0]" key]]]]
+ ["[0]" // "_"
+ ["[1][0]" signature]])
+
+(def: .public test
+ Test
+ (<| (_.covering /._)
+ (_.for [/.Document])
+ (do random.monad
+ [signature/0 //signature.random
+ signature/1 (random.only (|>> (/signature#= signature/0) not)
+ //signature.random)
+ .let [key/0 (/key.key signature/0 0)
+ key/1 (/key.key signature/1 0)]
+ expected random.nat]
+ ($_ _.and
+ (_.cover [/.document /.content]
+ (|> expected
+ (/.document key/0)
+ (/.content key/0)
+ (try#each (same? expected))
+ (try.else false)))
+ (_.cover [/.signature]
+ (|> expected
+ (/.document key/0)
+ /.signature
+ (same? signature/0)))
+ (_.cover [/.marked?]
+ (and (|> expected
+ (/.document key/0)
+ (/.marked? key/0)
+ (case> {try.#Success it} true
+ {try.#Failure error} false))
+ (|> expected
+ (/.document key/0)
+ (/.marked? key/1)
+ (case> {try.#Success it} false
+ {try.#Failure error} true))))
+ (_.cover [/.invalid_signature]
+ (and (|> expected
+ (/.document key/0)
+ (/.content key/1)
+ (case> {try.#Success it}
+ false
+
+ {try.#Failure error}
+ (exception.match? /.invalid_signature error)))
+ (|> expected
+ (/.document key/0)
+ (/.marked? key/1)
+ (case> {try.#Success it}
+ false
+
+ {try.#Failure error}
+ (exception.match? /.invalid_signature error)))))
+ (_.cover [/.writer /.parser]
+ (|> expected
+ (/.document key/0)
+ (binaryF.result (/.writer binaryF.nat))
+ (<binary>.result (/.parser <binary>.nat))
+ (case> {try.#Success it}
+ (and (/signature#= signature/0 (/.signature it))
+ (|> it
+ (/.content key/0)
+ (try#each (nat.= expected))
+ (try.else false)))
+
+ {try.#Failure error}
+ false)))
+ ))))