aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/test
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/source/test')
-rw-r--r--stdlib/source/test/lux/control/parser/code.lux79
-rw-r--r--stdlib/source/test/lux/tool/compiler/language/lux/analysis/scope.lux20
-rw-r--r--stdlib/source/test/lux/tool/compiler/meta/cli.lux23
-rw-r--r--stdlib/source/test/lux/tool/compiler/meta/cli/compiler.lux48
4 files changed, 115 insertions, 55 deletions
diff --git a/stdlib/source/test/lux/control/parser/code.lux b/stdlib/source/test/lux/control/parser/code.lux
index d4fac4fa6..d851a79d1 100644
--- a/stdlib/source/test/lux/control/parser/code.lux
+++ b/stdlib/source/test/lux/control/parser/code.lux
@@ -1,31 +1,31 @@
(.using
- [library
- [lux "*"
- ["_" test {"+" Test}]
- [abstract
- [monad {"+" do}]]
- [control
- ["[0]" function]
- ["[0]" try]
- ["<>" parser]]
- [data
- ["[0]" bit]
- ["[0]" text]
- [collection
- ["[0]" list]]]
- [macro
- ["[0]" code]]
- [math
- ["[0]" random {"+" Random}]
- [number
- ["[0]" nat]
- ["[0]" int]
- ["[0]" rev]
- ["[0]" frac]]]
- [meta
- ["[0]" symbol]]]]
- [\\library
- ["[0]" /]])
+ [library
+ [lux "*"
+ ["_" test {"+" Test}]
+ [abstract
+ [monad {"+" do}]]
+ [control
+ ["[0]" function]
+ ["[0]" try]
+ ["<>" parser]]
+ [data
+ ["[0]" bit]
+ ["[0]" text]
+ [collection
+ ["[0]" list]]]
+ [macro
+ ["[0]" code]]
+ [math
+ ["[0]" random {"+" Random} ("[1]#[0]" functor)]
+ [number
+ ["[0]" nat]
+ ["[0]" int]
+ ["[0]" rev]
+ ["[0]" frac]]]
+ [meta
+ ["[0]" symbol]]]]
+ [\\library
+ ["[0]" /]])
(template: (!expect <pattern> <value>)
[(case <value>
@@ -35,10 +35,24 @@
_
false)])
-(def: random_symbol
+(def: local_symbol
+ (Random Text)
+ (random.ascii/lower 1))
+
+(def: global_symbol
+ (Random Symbol)
+ ($_ random.and
+ (random.ascii/lower 1)
+ (random.ascii/lower 1)
+ ))
+
+(def: any_symbol
(Random Symbol)
- (random.and (random.unicode 1)
- (random.unicode 1)))
+ ($_ random.either
+ (random#each (|>> [""])
+ ..local_symbol)
+ ..global_symbol
+ ))
(def: .public test
Test
@@ -75,8 +89,9 @@
[/.rev /.rev! random.rev code.rev rev.equivalence]
[/.frac /.frac! random.safe_frac code.frac frac.equivalence]
[/.text /.text! (random.unicode 1) code.text text.equivalence]
- [/.symbol /.symbol! ..random_symbol code.symbol symbol.equivalence]
- [/.local_symbol /.local_symbol! (random.unicode 1) code.local_symbol text.equivalence]
+ [/.local_symbol /.local_symbol! ..local_symbol code.local_symbol text.equivalence]
+ [/.global_symbol /.global_symbol! ..global_symbol code.symbol symbol.equivalence]
+ [/.symbol /.symbol! ..any_symbol code.symbol symbol.equivalence]
))
(~~ (template [<query> <code>]
[(do [! random.monad]
diff --git a/stdlib/source/test/lux/tool/compiler/language/lux/analysis/scope.lux b/stdlib/source/test/lux/tool/compiler/language/lux/analysis/scope.lux
index dbd1f83de..3338cc9a2 100644
--- a/stdlib/source/test/lux/tool/compiler/language/lux/analysis/scope.lux
+++ b/stdlib/source/test/lux/tool/compiler/language/lux/analysis/scope.lux
@@ -59,8 +59,8 @@
type/0 ($type.random 0)
type/1 ($type.random 0)]
($_ _.and
- (_.cover [/.find]
- (|> (/.find name/0)
+ (_.cover [/.variable]
+ (|> (/.variable name/0)
/.with
(//phase.result state)
(try#each (|>> product.right
@@ -69,7 +69,7 @@
(try.else false)))
(_.cover [/.with_local]
(|> (/.with_local [name/0 type/0]
- (/.find name/0))
+ (/.variable name/0))
/.with
(//phase.result state)
(try#each (|>> product.right
@@ -81,12 +81,12 @@
[register/0 /.next])
(/.with_local [name/0 type/0])
(do !
- [var/0 (/.find name/0)])
+ [var/0 (/.variable name/0)])
(do !
[register/1 /.next])
(/.with_local [name/1 type/1])
(do !
- [var/1 (/.find name/1)])
+ [var/1 (/.variable name/1)])
(in (do maybe.monad
[var/0 var/0
var/1 var/1]
@@ -138,8 +138,8 @@
(|> (<| /.with
(/.with_local [name/0 type/0])
(do //phase.monad
- [var/0' (/.find name/0)
- [scope/1 var/0''] (/.with (/.find name/0))]
+ [var/0' (/.variable name/0)
+ [scope/1 var/0''] (/.with (/.variable name/0))]
(<| //phase.lifted
try.of_maybe
(do maybe.monad
@@ -174,7 +174,7 @@
(/.with_local [name/0 type/0])
(/.with_local [name/1 type/1])
(do !
- [[scope/1 _] (/.with (/.find name/0))]
+ [[scope/1 _] (/.with (/.variable name/0))]
(in [register/0 (/.environment scope/1)])))
(//phase.result state)
(try#each (function (_ [_ [register/0 environment]])
@@ -190,8 +190,8 @@
(/.with_local [name/1 type/1])
(do [! //phase.monad]
[[scope/1 _] (/.with (do !
- [_ (/.find name/1)
- _ (/.find name/0)]
+ [_ (/.variable name/1)
+ _ (/.variable name/0)]
(in [])))]
(in [register/0 register/1 (/.environment scope/1)])))
(//phase.result state)
diff --git a/stdlib/source/test/lux/tool/compiler/meta/cli.lux b/stdlib/source/test/lux/tool/compiler/meta/cli.lux
index 5a128b0ff..15441533e 100644
--- a/stdlib/source/test/lux/tool/compiler/meta/cli.lux
+++ b/stdlib/source/test/lux/tool/compiler/meta/cli.lux
@@ -22,15 +22,10 @@
["[0]" symbol "_"
["$[1]" \\test]]]]]
[\\library
- ["[0]" /]])
-
-(def: random_compiler
- (Random /.Compiler)
- (do [! random.monad]
- [definition ($symbol.random 1 1)
- amount (# ! each (n.% 5) random.nat)
- parameters (random.list amount (random.ascii/lower 2))]
- (in [definition parameters])))
+ ["[0]" /
+ ["[1][0]" compiler {"+" Compiler}]]]
+ ["$[0]" / "_"
+ ["[1][0]" compiler]])
(def: .public test
Test
@@ -44,11 +39,11 @@
libraries (random.list amount (random.ascii/lower 3))
target (random.ascii/lower 4)
module (random.ascii/lower 5)
- compilers (random.list amount ..random_compiler)
+ compilers (random.list amount $/compiler.random)
.let [compilation' ($_ list#composite
(list#conjoint (list#each (|>> (list "--host_dependency")) host_dependencies))
(list#conjoint (list#each (|>> (list "--library")) libraries))
- (list#conjoint (list#each (|>> /.compiler_format (list "--compiler")) compilers))
+ (list#conjoint (list#each (|>> /compiler.format (list "--compiler")) compilers))
(list#conjoint (list#each (|>> (list "--source")) sources))
(list "--target" target)
(list "--module" module))
@@ -73,7 +68,7 @@
[/.Host_Dependency /.#host_dependencies (list#= host_dependencies)]
[/.Library /.#libraries (list#= libraries)]
- [/.Compiler /.#compilers (# (list.equivalence /.compiler_equivalence) = compilers)]
+ [/compiler.Compiler /.#compilers (# (list.equivalence /compiler.equivalence) = compilers)]
[/.Source /.#sources (list#= sources)]
[/.Target /.#target (same? target)]
[/.Module /.#module (same? module)]
@@ -94,7 +89,7 @@
[/.#host_dependencies (list#= host_dependencies)]
[/.#libraries (list#= libraries)]
- [/.#compilers (# (list.equivalence /.compiler_equivalence) = compilers)]
+ [/.#compilers (# (list.equivalence /compiler.equivalence) = compilers)]
[/.#sources (list#= sources)]
[/.#target (same? target)]
[/.#module (same? module)]
@@ -133,4 +128,6 @@
/.#module module]}]
[{/.#Export [sources target]}]
)))))
+
+ $/compiler.test
))))
diff --git a/stdlib/source/test/lux/tool/compiler/meta/cli/compiler.lux b/stdlib/source/test/lux/tool/compiler/meta/cli/compiler.lux
new file mode 100644
index 000000000..69a9db048
--- /dev/null
+++ b/stdlib/source/test/lux/tool/compiler/meta/cli/compiler.lux
@@ -0,0 +1,48 @@
+(.using
+ [library
+ [lux "*"
+ ["_" test {"+" Test}]
+ [abstract
+ [monad {"+" do}]
+ [\\specification
+ ["$[0]" equivalence]]]
+ [control
+ ["[0]" try ("[1]#[0]" functor)]
+ ["<>" parser
+ ["<[0]>" text]]]
+ [math
+ ["[0]" random {"+" Random}]
+ [number
+ ["n" nat]]]
+ [meta
+ ["[0]" symbol "_"
+ ["$[1]" \\test]]]]]
+ [\\library
+ ["[0]" /]])
+
+(def: .public random
+ (Random /.Compiler)
+ (do [! random.monad]
+ [definition ($symbol.random 1 1)
+ amount (# ! each (n.% 5) random.nat)
+ parameters (random.list amount (random.ascii/lower 2))]
+ (in [/.#definition definition
+ /.#parameters parameters])))
+
+(def: .public test
+ Test
+ (<| (_.covering /._)
+ (_.for [/.Compiler])
+ (do [! random.monad]
+ [expected ..random]
+ ($_ _.and
+ (_.for [/.equivalence]
+ ($equivalence.spec /.equivalence ..random))
+
+ (_.cover [/.format /.parser]
+ (|> expected
+ /.format
+ (<text>.result /.parser)
+ (try#each (# /.equivalence = expected))
+ (try.else false)))
+ ))))