diff options
Diffstat (limited to 'stdlib/source/test/lux/meta.lux')
-rw-r--r-- | stdlib/source/test/lux/meta.lux | 2015 |
1 files changed, 1009 insertions, 1006 deletions
diff --git a/stdlib/source/test/lux/meta.lux b/stdlib/source/test/lux/meta.lux index fa3fd7f7a..97eb1e7f4 100644 --- a/stdlib/source/test/lux/meta.lux +++ b/stdlib/source/test/lux/meta.lux @@ -35,1056 +35,1059 @@ ["[0]" / (.only) ["[0]" type (.use "[1]#[0]" equivalence)]]] ["[0]" / - ["[1][0]" code] - ["[1][0]" location] - ["[1][0]" symbol] - ["[1][0]" configuration] - ["[1][0]" version] - ["[1][0]" type] - ["[1][0]" macro] - ["[1][0]" static] + ... ["[1][0]" code] + ... ["[1][0]" location] + ... ["[1][0]" symbol] + ... ["[1][0]" configuration] + ... ["[1][0]" version] + ... ["[1][0]" type] + ... ["[1][0]" macro] + ... ["[1][0]" static] ["[1][0]" extension] - ["[1][0]" target (.only) - (.,, (.for "{old}" (.,, (.these ["[1]/[0]" jvm])) - "JVM" (.,, (.these ["[1]/[0]" jvm])) - "JavaScript" (.,, (.these ["[1]/[0]" js])) - "Lua" (.,, (.these ["[1]/[0]" lua])) - "Python" (.,, (.these ["[1]/[0]" python])) - "Ruby" (.,, (.these ["[1]/[0]" ruby])) - (.,, (.these))))] - ["[1][0]/" compiler - ["[1][0]" arity] - ["[1][0]" version] - ["[1][0]" reference] - ["[1][0]" phase] - [language - [lux - ... ["[1][0]" syntax] - ["[1][0]" analysis] - ["[1][0]" synthesis] - ["[1][0]" phase - ["[1]/[0]" extension] - ["[1]/[0]" analysis] - ... ["[1]/[0]" synthesis] - ]]] - ["[1][0]" meta - ["[1]/[0]" archive] - ["[1]/[0]" cli] - ["[1]/[0]" export] - ["[1]/[0]" import] - ["[1]/[0]" context] - ["[1]/[0]" cache]]]]))) + ["[1][0]" global] + ... ["[1][0]" target (.only) + ... (.,, (.for "{old}" (.,, (.these ["[1]/[0]" jvm])) + ... "JVM" (.,, (.these ["[1]/[0]" jvm])) + ... "JavaScript" (.,, (.these ["[1]/[0]" js])) + ... "Lua" (.,, (.these ["[1]/[0]" lua])) + ... "Python" (.,, (.these ["[1]/[0]" python])) + ... "Ruby" (.,, (.these ["[1]/[0]" ruby])) + ... (.,, (.these))))] + ... ["[1][0]/" compiler + ... ["[1][0]" arity] + ... ["[1][0]" version] + ... ["[1][0]" reference] + ... ["[1][0]" phase] + ... [language + ... [lux + ... ... ["[1][0]" syntax] + ... ["[1][0]" analysis] + ... ["[1][0]" synthesis] + ... ["[1][0]" phase + ... ["[1]/[0]" extension] + ... ["[1]/[0]" analysis] + ... ... ["[1]/[0]" synthesis] + ... ]]] + ... ["[1][0]" meta + ... ["[1]/[0]" archive] + ... ["[1]/[0]" cli] + ... ["[1]/[0]" export] + ... ["[1]/[0]" import] + ... ["[1]/[0]" context] + ... ["[1]/[0]" cache]]] + ]))) -(def !expect - (template (_ <pattern> <value>) - [(when <value> - <pattern> true - _ false)])) +... (def !expect +... (template (_ <pattern> <value>) +... [(when <value> +... <pattern> true +... _ false)])) -(def compiler_related - Test - (do random.monad - [target (random.upper_case 1) - version (random.upper_case 1) - source_code (random.upper_case 1) - expected_current_module (random.upper_case 1) - primitive_type (random.upper_case 1) - expected_seed random.nat - expected random.nat - dummy (random.only (|>> (n.= expected) not) random.nat) - configuration_feature (random.upper_case 1) - configuration_value (random.upper_case 1) - .let [configuration (list [configuration_feature configuration_value]) - expected_lux [.#info [.#target target - .#version version - .#mode {.#Build} - .#configuration configuration] - .#source [location.dummy 0 source_code] - .#location location.dummy - .#current_module {.#Some expected_current_module} - .#modules (list) - .#scopes (list) - .#type_context [.#ex_counter 0 - .#var_counter 0 - .#var_bindings (list)] - .#expected {.#Some {.#Primitive primitive_type (list)}} - .#seed expected_seed - .#scope_type_vars (list) - .#extensions [] - .#eval (as (-> Type Code (Meta Any)) []) - .#host []]]] - (all _.and - (_.coverage [/.result] - (|> (at /.monad in expected) - (/.result expected_lux) - (!expect (^.multi {try.#Success actual} - (n.= expected actual))))) - (_.coverage [/.result'] - (|> (at /.monad in expected) - (/.result' expected_lux) - (!expect (^.multi {try.#Success [actual_lux actual]} - (and (same? expected_lux actual_lux) - (n.= expected actual)))))) - (_.coverage [/.compiler_state] - (|> /.compiler_state - (/.result expected_lux) - (!expect (^.multi {try.#Success actual_lux} - (same? expected_lux actual_lux))))) - (_.coverage [/.version] - (|> /.version - (/.result expected_lux) - (!expect (^.multi {try.#Success it} - (same? version it))))) - (_.coverage [/.configuration] - (|> /.configuration - (/.result expected_lux) - (!expect (^.multi {try.#Success it} - (same? configuration it))))) - ))) +... (def compiler_related +... Test +... (do random.monad +... [target (random.upper_cased 1) +... version (random.upper_cased 1) +... source_code (random.upper_cased 1) +... expected_current_module (random.upper_cased 1) +... nominal_type (random.upper_cased 1) +... expected_seed random.nat +... expected random.nat +... dummy (random.only (|>> (n.= expected) not) random.nat) +... configuration_feature (random.upper_cased 1) +... configuration_value (random.upper_cased 1) +... .let [configuration (list [configuration_feature configuration_value]) +... expected_lux [.#info [.#target target +... .#version version +... .#mode {.#Build} +... .#configuration configuration] +... .#source [location.dummy 0 source_code] +... .#location location.dummy +... .#current_module {.#Some expected_current_module} +... .#modules (list) +... .#scopes (list) +... .#type_context [.#ex_counter 0 +... .#var_counter 0 +... .#var_bindings (list)] +... .#expected {.#Some {.#Nominal nominal_type (list)}} +... .#seed expected_seed +... .#scope_type_vars (list) +... .#extensions [] +... .#eval (as (-> Type Code (Meta Any)) []) +... .#host []]]] +... (all _.and +... (_.coverage [/.result] +... (|> (of /.monad in expected) +... (/.result expected_lux) +... (!expect (^.multi {try.#Success actual} +... (n.= expected actual))))) +... (_.coverage [/.result'] +... (|> (of /.monad in expected) +... (/.result' expected_lux) +... (!expect (^.multi {try.#Success [actual_lux actual]} +... (and (same? expected_lux actual_lux) +... (n.= expected actual)))))) +... (_.coverage [/.compiler_state] +... (|> /.compiler_state +... (/.result expected_lux) +... (!expect (^.multi {try.#Success actual_lux} +... (same? expected_lux actual_lux))))) +... (_.coverage [/.version] +... (|> /.version +... (/.result expected_lux) +... (!expect (^.multi {try.#Success it} +... (same? version it))))) +... (_.coverage [/.configuration] +... (|> /.configuration +... (/.result expected_lux) +... (!expect (^.multi {try.#Success it} +... (same? configuration it))))) +... ))) -(def error_handling - Test - (do random.monad - [target (random.upper_case 1) - version (random.upper_case 1) - source_code (random.upper_case 1) - expected_current_module (random.upper_case 1) - primitive_type (random.upper_case 1) - expected_seed random.nat - expected random.nat - dummy (random.only (|>> (n.= expected) not) random.nat) - expected_error (random.upper_case 1) - .let [expected_lux [.#info [.#target target - .#version version - .#mode {.#Build} - .#configuration (list)] - .#source [location.dummy 0 source_code] - .#location location.dummy - .#current_module {.#Some expected_current_module} - .#modules (list) - .#scopes (list) - .#type_context [.#ex_counter 0 - .#var_counter 0 - .#var_bindings (list)] - .#expected {.#Some {.#Primitive primitive_type (list)}} - .#seed expected_seed - .#scope_type_vars (list) - .#extensions [] - .#eval (as (-> Type Code (Meta Any)) []) - .#host []]]] - (all _.and - (_.coverage [/.failure] - (|> (/.failure expected_error) - (is (Meta Any)) - (/.result expected_lux) - (!expect (^.multi {try.#Failure actual_error} - (text#= (location.with location.dummy expected_error) - actual_error))))) - (_.coverage [/.assertion] - (and (|> (/.assertion expected_error true) - (is (Meta Any)) - (/.result expected_lux) - (!expect {try.#Success []})) - (|> (/.assertion expected_error false) - (/.result expected_lux) - (!expect (^.multi {try.#Failure actual_error} - (text#= expected_error actual_error)))))) - (_.coverage [/.either] - (and (|> (/.either (at /.monad in expected) - (is (Meta Nat) - (/.failure expected_error))) - (/.result expected_lux) - (!expect (^.multi {try.#Success actual} - (n.= expected actual)))) - (|> (/.either (is (Meta Nat) - (/.failure expected_error)) - (at /.monad in expected)) - (/.result expected_lux) - (!expect (^.multi {try.#Success actual} - (n.= expected actual)))) - (|> (/.either (is (Meta Nat) - (/.failure expected_error)) - (is (Meta Nat) - (/.failure expected_error))) - (/.result expected_lux) - (!expect (^.multi {try.#Failure actual_error} - (text#= (location.with location.dummy expected_error) - actual_error)))) - (|> (/.either (at /.monad in expected) - (at /.monad in dummy)) - (/.result expected_lux) - (!expect (^.multi {try.#Success actual} - (n.= expected actual)))) - )) - (_.coverage [/.try] - (and (|> (/.try (/.failure expected_error)) - (/.result expected_lux) - (!expect (^.multi {try.#Success {try.#Failure actual_error}} - (text#= (location.with location.dummy expected_error) - actual_error)))) - (|> (/.try (at /.monad in expected)) - (/.result expected_lux) - (!expect (^.multi {try.#Success {try.#Success actual}} - (same? expected actual)))))) - ))) +... (def error_handling +... Test +... (do random.monad +... [target (random.upper_cased 1) +... version (random.upper_cased 1) +... source_code (random.upper_cased 1) +... expected_current_module (random.upper_cased 1) +... nominal_type (random.upper_cased 1) +... expected_seed random.nat +... expected random.nat +... dummy (random.only (|>> (n.= expected) not) random.nat) +... expected_error (random.upper_cased 1) +... .let [expected_lux [.#info [.#target target +... .#version version +... .#mode {.#Build} +... .#configuration (list)] +... .#source [location.dummy 0 source_code] +... .#location location.dummy +... .#current_module {.#Some expected_current_module} +... .#modules (list) +... .#scopes (list) +... .#type_context [.#ex_counter 0 +... .#var_counter 0 +... .#var_bindings (list)] +... .#expected {.#Some {.#Nominal nominal_type (list)}} +... .#seed expected_seed +... .#scope_type_vars (list) +... .#extensions [] +... .#eval (as (-> Type Code (Meta Any)) []) +... .#host []]]] +... (all _.and +... (_.coverage [/.failure] +... (|> (/.failure expected_error) +... (is (Meta Any)) +... (/.result expected_lux) +... (!expect (^.multi {try.#Failure actual_error} +... (text#= (location.with location.dummy expected_error) +... actual_error))))) +... (_.coverage [/.assertion] +... (and (|> (/.assertion expected_error true) +... (is (Meta Any)) +... (/.result expected_lux) +... (!expect {try.#Success []})) +... (|> (/.assertion expected_error false) +... (/.result expected_lux) +... (!expect (^.multi {try.#Failure actual_error} +... (text#= expected_error actual_error)))))) +... (_.coverage [/.either] +... (and (|> (/.either (of /.monad in expected) +... (is (Meta Nat) +... (/.failure expected_error))) +... (/.result expected_lux) +... (!expect (^.multi {try.#Success actual} +... (n.= expected actual)))) +... (|> (/.either (is (Meta Nat) +... (/.failure expected_error)) +... (of /.monad in expected)) +... (/.result expected_lux) +... (!expect (^.multi {try.#Success actual} +... (n.= expected actual)))) +... (|> (/.either (is (Meta Nat) +... (/.failure expected_error)) +... (is (Meta Nat) +... (/.failure expected_error))) +... (/.result expected_lux) +... (!expect (^.multi {try.#Failure actual_error} +... (text#= (location.with location.dummy expected_error) +... actual_error)))) +... (|> (/.either (of /.monad in expected) +... (of /.monad in dummy)) +... (/.result expected_lux) +... (!expect (^.multi {try.#Success actual} +... (n.= expected actual)))) +... )) +... (_.coverage [/.try] +... (and (|> (/.try (/.failure expected_error)) +... (/.result expected_lux) +... (!expect (^.multi {try.#Success {try.#Failure actual_error}} +... (text#= (location.with location.dummy expected_error) +... actual_error)))) +... (|> (/.try (of /.monad in expected)) +... (/.result expected_lux) +... (!expect (^.multi {try.#Success {try.#Success actual}} +... (same? expected actual)))))) +... ))) -(def module_related - Test - (do random.monad - [target (random.upper_case 1) - version (random.upper_case 1) - source_code (random.upper_case 1) - expected_current_module (random.upper_case 1) - imported_module_name (random.only (|>> (text#= expected_current_module) not) - (random.upper_case 1)) - primitive_type (random.upper_case 1) - expected_seed random.nat - expected random.nat - dummy (random.only (|>> (n.= expected) not) random.nat) - expected_short (random.upper_case 1) - dummy_module (random.only (function (_ module) - (not (or (text#= expected_current_module module) - (text#= imported_module_name module)))) - (random.upper_case 1)) - .let [imported_module [.#module_hash 0 - .#module_aliases (list) - .#definitions (list) - .#imports (list) - .#module_state {.#Active}] - expected_module [.#module_hash 0 - .#module_aliases (list) - .#definitions (list) - .#imports (list imported_module_name) - .#module_state {.#Active}] - expected_modules (list [expected_current_module - expected_module] - [imported_module_name - imported_module]) - expected_lux [.#info [.#target target - .#version version - .#mode {.#Build} - .#configuration (list)] - .#source [location.dummy 0 source_code] - .#location location.dummy - .#current_module {.#Some expected_current_module} - .#modules expected_modules - .#scopes (list) - .#type_context [.#ex_counter 0 - .#var_counter 0 - .#var_bindings (list)] - .#expected {.#Some {.#Primitive primitive_type (list)}} - .#seed expected_seed - .#scope_type_vars (list) - .#extensions [] - .#eval (as (-> Type Code (Meta Any)) []) - .#host []]]] - (<| (_.for [.Module]) - (all _.and - (_.coverage [/.current_module_name] - (|> /.current_module_name - (/.result expected_lux) - (!expect (^.multi {try.#Success actual_current_module} - (text#= expected_current_module actual_current_module))))) - (_.coverage [/.current_module] - (|> /.current_module - (/.result expected_lux) - (!expect (^.multi {try.#Success actual_module} - (same? expected_module actual_module))))) - (_.coverage [/.module] - (|> (/.module expected_current_module) - (/.result expected_lux) - (!expect (^.multi {try.#Success actual_module} - (same? expected_module actual_module))))) - (_.coverage [/.module_exists?] - (and (|> (/.module_exists? expected_current_module) - (/.result expected_lux) - (!expect {try.#Success .true})) - (|> (/.module_exists? dummy_module) - (/.result expected_lux) - (!expect {try.#Success .false})))) - (_.coverage [/.modules] - (|> /.modules - (/.result expected_lux) - (!expect (^.multi {try.#Success actual_modules} - (same? expected_modules actual_modules))))) - (_.coverage [/.imported_modules] - (and (|> (/.imported_modules expected_current_module) - (/.result expected_lux) - (try#each (at (list.equivalence text.equivalence) = - (list imported_module_name))) - (try.else false)) - (|> (/.imported_modules imported_module_name) - (/.result expected_lux) - (try#each (at (list.equivalence text.equivalence) = - (list))) - (try.else false)))) - (_.coverage [/.imported_by?] - (|> (/.imported_by? imported_module_name expected_current_module) - (/.result expected_lux) - (try.else false))) - (_.coverage [/.imported?] - (|> (/.imported? imported_module_name) - (/.result expected_lux) - (try.else false))) - (_.coverage [/.normal] - (and (|> (/.normal ["" expected_short]) - (/.result expected_lux) - (!expect (^.multi {try.#Success [actual_module actual_short]} - (and (text#= expected_current_module actual_module) - (same? expected_short actual_short))))) - (|> (/.normal [dummy_module expected_short]) - (/.result expected_lux) - (!expect (^.multi {try.#Success [actual_module actual_short]} - (and (text#= dummy_module actual_module) - (same? expected_short actual_short))))))) - )))) +... (def module_related +... Test +... (do random.monad +... [target (random.upper_cased 1) +... version (random.upper_cased 1) +... source_code (random.upper_cased 1) +... expected_current_module (random.upper_cased 1) +... imported_module_name (random.only (|>> (text#= expected_current_module) not) +... (random.upper_cased 1)) +... nominal_type (random.upper_cased 1) +... expected_seed random.nat +... expected random.nat +... dummy (random.only (|>> (n.= expected) not) random.nat) +... expected_short (random.upper_cased 1) +... dummy_module (random.only (function (_ module) +... (not (or (text#= expected_current_module module) +... (text#= imported_module_name module)))) +... (random.upper_cased 1)) +... .let [imported_module [.#module_hash 0 +... .#module_aliases (list) +... .#definitions (list) +... .#imports (list) +... .#module_state {.#Active}] +... expected_module [.#module_hash 0 +... .#module_aliases (list) +... .#definitions (list) +... .#imports (list imported_module_name) +... .#module_state {.#Active}] +... expected_modules (list [expected_current_module +... expected_module] +... [imported_module_name +... imported_module]) +... expected_lux [.#info [.#target target +... .#version version +... .#mode {.#Build} +... .#configuration (list)] +... .#source [location.dummy 0 source_code] +... .#location location.dummy +... .#current_module {.#Some expected_current_module} +... .#modules expected_modules +... .#scopes (list) +... .#type_context [.#ex_counter 0 +... .#var_counter 0 +... .#var_bindings (list)] +... .#expected {.#Some {.#Nominal nominal_type (list)}} +... .#seed expected_seed +... .#scope_type_vars (list) +... .#extensions [] +... .#eval (as (-> Type Code (Meta Any)) []) +... .#host []]]] +... (<| (_.for [.Module]) +... (all _.and +... (_.coverage [/.current_module_name] +... (|> /.current_module_name +... (/.result expected_lux) +... (!expect (^.multi {try.#Success actual_current_module} +... (text#= expected_current_module actual_current_module))))) +... (_.coverage [/.current_module] +... (|> /.current_module +... (/.result expected_lux) +... (!expect (^.multi {try.#Success actual_module} +... (same? expected_module actual_module))))) +... (_.coverage [/.module] +... (|> (/.module expected_current_module) +... (/.result expected_lux) +... (!expect (^.multi {try.#Success actual_module} +... (same? expected_module actual_module))))) +... (_.coverage [/.module_exists?] +... (and (|> (/.module_exists? expected_current_module) +... (/.result expected_lux) +... (!expect {try.#Success .true})) +... (|> (/.module_exists? dummy_module) +... (/.result expected_lux) +... (!expect {try.#Success .false})))) +... (_.coverage [/.modules] +... (|> /.modules +... (/.result expected_lux) +... (!expect (^.multi {try.#Success actual_modules} +... (same? expected_modules actual_modules))))) +... (_.coverage [/.imported_modules] +... (and (|> (/.imported_modules expected_current_module) +... (/.result expected_lux) +... (try#each (of (list.equivalence text.equivalence) = +... (list imported_module_name))) +... (try.else false)) +... (|> (/.imported_modules imported_module_name) +... (/.result expected_lux) +... (try#each (of (list.equivalence text.equivalence) = +... (list))) +... (try.else false)))) +... (_.coverage [/.imported_by?] +... (|> (/.imported_by? imported_module_name expected_current_module) +... (/.result expected_lux) +... (try.else false))) +... (_.coverage [/.imported?] +... (|> (/.imported? imported_module_name) +... (/.result expected_lux) +... (try.else false))) +... (_.coverage [/.normal] +... (and (|> (/.normal ["" expected_short]) +... (/.result expected_lux) +... (!expect (^.multi {try.#Success [actual_module actual_short]} +... (and (text#= expected_current_module actual_module) +... (same? expected_short actual_short))))) +... (|> (/.normal [dummy_module expected_short]) +... (/.result expected_lux) +... (!expect (^.multi {try.#Success [actual_module actual_short]} +... (and (text#= dummy_module actual_module) +... (same? expected_short actual_short))))))) +... )))) -(def random_location - (Random Location) - (all random.and - (random.upper_case 1) - random.nat - random.nat)) +... (def random_location +... (Random Location) +... (all random.and +... (random.upper_cased 1) +... random.nat +... random.nat)) -(def context_related - (do [! random.monad] - [target (random.upper_case 1) - version (random.upper_case 1) - source_code (random.upper_case 1) - expected_current_module (random.upper_case 1) - expected_type (at ! each (function (_ name) - {.#Primitive name (list)}) - (random.upper_case 1)) - expected_seed random.nat - expected random.nat - dummy (random.only (|>> (n.= expected) not) random.nat) - expected_location ..random_location - .let [type_context [.#ex_counter 0 - .#var_counter 0 - .#var_bindings (list)] - expected_lux [.#info [.#target target - .#version version - .#mode {.#Build} - .#configuration (list)] - .#source [location.dummy 0 source_code] - .#location expected_location - .#current_module {.#Some expected_current_module} - .#modules (list) - .#scopes (list) - .#type_context type_context - .#expected {.#Some expected_type} - .#seed expected_seed - .#scope_type_vars (list) - .#extensions [] - .#eval (as (-> Type Code (Meta Any)) []) - .#host []]]] - (all _.and - (_.coverage [/.target] - (|> /.target - (/.result expected_lux) - (try#each (same? target)) - (try.else false))) - (_.coverage [/.seed] - (|> (do /.monad - [pre /.seed - post /.seed] - (in [pre post])) - (/.result expected_lux) - (!expect (^.multi {try.#Success [actual_pre actual_post]} - (and (n.= expected_seed actual_pre) - (n.= (++ expected_seed) actual_post)))))) - (_.coverage [/.location] - (|> /.location - (/.result expected_lux) - (!expect (^.multi {try.#Success actual_location} - (same? expected_location actual_location))))) - (_.coverage [/.expected_type] - (|> /.expected_type - (/.result expected_lux) - (!expect (^.multi {try.#Success actual_type} - (same? expected_type actual_type))))) - (_.coverage [.Type_Context /.type_context] - (|> /.type_context - (/.result expected_lux) - (try#each (same? type_context)) - (try.else false))) - ))) +... (def context_related +... (do [! random.monad] +... [target (random.upper_cased 1) +... version (random.upper_cased 1) +... source_code (random.upper_cased 1) +... expected_current_module (random.upper_cased 1) +... expected_type (of ! each (function (_ name) +... {.#Nominal name (list)}) +... (random.upper_cased 1)) +... expected_seed random.nat +... expected random.nat +... dummy (random.only (|>> (n.= expected) not) random.nat) +... expected_location ..random_location +... .let [type_context [.#ex_counter 0 +... .#var_counter 0 +... .#var_bindings (list)] +... expected_lux [.#info [.#target target +... .#version version +... .#mode {.#Build} +... .#configuration (list)] +... .#source [location.dummy 0 source_code] +... .#location expected_location +... .#current_module {.#Some expected_current_module} +... .#modules (list) +... .#scopes (list) +... .#type_context type_context +... .#expected {.#Some expected_type} +... .#seed expected_seed +... .#scope_type_vars (list) +... .#extensions [] +... .#eval (as (-> Type Code (Meta Any)) []) +... .#host []]]] +... (all _.and +... (_.coverage [/.target] +... (|> /.target +... (/.result expected_lux) +... (try#each (same? target)) +... (try.else false))) +... (_.coverage [/.seed] +... (|> (do /.monad +... [pre /.seed +... post /.seed] +... (in [pre post])) +... (/.result expected_lux) +... (!expect (^.multi {try.#Success [actual_pre actual_post]} +... (and (n.= expected_seed actual_pre) +... (n.= (++ expected_seed) actual_post)))))) +... (_.coverage [/.location] +... (|> /.location +... (/.result expected_lux) +... (!expect (^.multi {try.#Success actual_location} +... (same? expected_location actual_location))))) +... (_.coverage [/.expected_type] +... (|> /.expected_type +... (/.result expected_lux) +... (!expect (^.multi {try.#Success actual_type} +... (same? expected_type actual_type))))) +... (_.coverage [.Type_Context /.type_context] +... (|> /.type_context +... (/.result expected_lux) +... (try#each (same? type_context)) +... (try.else false))) +... ))) -(def definition_related - Test - (do [! random.monad] - [expected_current_module (random.upper_case 1) - expected_macro_module (random.only (|>> (text#= expected_current_module) not) - (random.upper_case 1)) - expected_short (random.upper_case 1) - expected_type (at ! each (function (_ name) - {.#Primitive name (list)}) - (random.upper_case 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 definition_related +... Test +... (do [! random.monad] +... [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]}]) - {.#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 [.Global .Alias /.globals] - (let [[current_globals macro_globals expected_lux] - (expected_lux true {.#Some .Macro}) +... {.#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 [.Global .Alias /.globals] +... (let [[current_globals macro_globals expected_lux] +... (expected_lux true {.#Some .Macro}) - current_globals! - (|> (/.globals expected_current_module) - (/.result expected_lux) - (!expect (^.multi {try.#Success actual_globals} - (same? current_globals actual_globals)))) +... current_globals! +... (|> (/.globals expected_current_module) +... (/.result expected_lux) +... (!expect (^.multi {try.#Success actual_globals} +... (same? current_globals actual_globals)))) - macro_globals! - (|> (/.globals expected_macro_module) - (/.result expected_lux) - (!expect (^.multi {try.#Success actual_globals} - (same? macro_globals actual_globals))))] - (and current_globals! - macro_globals!))) - (_.coverage [.Definition /.definitions] - (let [[current_globals macro_globals expected_lux] - (expected_lux true {.#Some .Macro})] - (and (|> (/.definitions expected_current_module) - (/.result expected_lux) - (!expect (^.multi {try.#Success actual_definitions} - (n.= 0 (list.size actual_definitions))))) - (|> (/.definitions expected_macro_module) - (/.result expected_lux) - (!expect (^.multi {try.#Success actual_definitions} - (n.= 1 (list.size actual_definitions))))) - ))) - (_.coverage [/.exports] - (and (let [[current_globals macro_globals expected_lux] - (expected_lux true {.#Some .Macro})] - (and (|> (/.exports expected_current_module) - (/.result expected_lux) - (!expect (^.multi {try.#Success actual_definitions} - (n.= 0 (list.size actual_definitions))))) - (|> (/.exports expected_macro_module) - (/.result expected_lux) - (!expect (^.multi {try.#Success actual_definitions} - (n.= 1 (list.size actual_definitions))))) - )) - (let [[current_globals macro_globals expected_lux] - (expected_lux false {.#Some .Macro})] - (and (|> (/.exports expected_current_module) - (/.result expected_lux) - (!expect (^.multi {try.#Success actual_definitions} - (n.= 0 (list.size actual_definitions))))) - (|> (/.exports expected_macro_module) - (/.result expected_lux) - (!expect (^.multi {try.#Success actual_definitions} - (n.= 0 (list.size actual_definitions))))) - )))) - ))) +... macro_globals! +... (|> (/.globals expected_macro_module) +... (/.result expected_lux) +... (!expect (^.multi {try.#Success actual_globals} +... (same? macro_globals actual_globals))))] +... (and current_globals! +... macro_globals!))) +... (_.coverage [.Definition /.definitions] +... (let [[current_globals macro_globals expected_lux] +... (expected_lux true {.#Some .Macro})] +... (and (|> (/.definitions expected_current_module) +... (/.result expected_lux) +... (!expect (^.multi {try.#Success actual_definitions} +... (n.= 0 (list.size actual_definitions))))) +... (|> (/.definitions expected_macro_module) +... (/.result expected_lux) +... (!expect (^.multi {try.#Success actual_definitions} +... (n.= 1 (list.size actual_definitions))))) +... ))) +... (_.coverage [/.exports] +... (and (let [[current_globals macro_globals expected_lux] +... (expected_lux true {.#Some .Macro})] +... (and (|> (/.exports expected_current_module) +... (/.result expected_lux) +... (!expect (^.multi {try.#Success actual_definitions} +... (n.= 0 (list.size actual_definitions))))) +... (|> (/.exports expected_macro_module) +... (/.result expected_lux) +... (!expect (^.multi {try.#Success actual_definitions} +... (n.= 1 (list.size actual_definitions))))) +... )) +... (let [[current_globals macro_globals expected_lux] +... (expected_lux false {.#Some .Macro})] +... (and (|> (/.exports expected_current_module) +... (/.result expected_lux) +... (!expect (^.multi {try.#Success actual_definitions} +... (n.= 0 (list.size actual_definitions))))) +... (|> (/.exports expected_macro_module) +... (/.result expected_lux) +... (!expect (^.multi {try.#Success actual_definitions} +... (n.= 0 (list.size actual_definitions))))) +... )))) +... ))) -(def search_related - Test - (do [! random.monad] - [expected_exported? random.bit - expected_current_module (random.upper_case 1) - expected_macro_module (random.only (|>> (text#= expected_current_module) not) - (random.upper_case 1)) - expected_short (random.upper_case 1) - expected_type (at ! each (function (_ name) - {.#Primitive name (list)}) - (random.upper_case 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 .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]}]) - {.#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 {.#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))))) - 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 {.#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 - (do [! random.monad] - [current_module (random.upper_case 1) - label_module (random.only (|>> (text#= current_module) not) - (random.upper_case 1)) +... (def label_related +... Test +... (do [! random.monad] +... [current_module (random.upper_cased 1) +... label_module (random.only (|>> (text#= current_module) not) +... (random.upper_cased 1)) - name_0 (random.upper_case 1) - name_1 (random.only (|>> (text#= name_0) not) - (random.upper_case 1)) - - .let [random_tag (at ! each (|>> [label_module]) - (random.upper_case 1)) - random_labels (is (Random [Text (List Text)]) - (do ! - [head (random.lower_case 5)] - (|> (random.lower_case 5) - (random.only (|>> (text#= head) not)) - (random.set text.hash 3) - (at ! each set.list) - (random.and (in head)))))] - tags_0 random_labels - tags_1 (let [set/0 (set.of_list text.hash {.#Item tags_0})] - (random.only (|>> {.#Item} - (list.any? (set.member? set/0)) - not) - random_labels)) - .let [type_0 {.#Primitive name_0 (list)} - type_1 {.#Primitive name_1 (list)} - - expected_lux - (is Lux - [.#info [.#target "" - .#version "" - .#mode {.#Build} - .#configuration (list)] - .#source [location.dummy 0 ""] - .#location location.dummy - .#current_module {.#Some current_module} - .#modules (list [current_module - [.#module_hash 0 - .#module_aliases (list) - .#definitions (list) - .#imports (list label_module) - .#module_state {.#Active}]] - [label_module - [.#module_hash 0 - .#module_aliases (list) - .#definitions (list.partial [name_0 {.#Type [true type_0 {.#Left tags_0}]}] - [name_1 {.#Type [true type_1 {.#Right tags_1}]}] - (all list#composite - (|> {.#Item tags_0} - list.enumeration - (list#each (function (_ [index short]) - [short {.#Tag [true type_0 {.#Item tags_0} index]}]))) - (|> {.#Item tags_1} - list.enumeration - (list#each (function (_ [index short]) - [short {.#Slot [true type_1 {.#Item tags_1} index]}]))))) - .#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 [/.tag_lists] - (let [equivalence (list.equivalence - (product.equivalence - (list.equivalence symbol.equivalence) - type.equivalence))] - (|> (/.tag_lists label_module) - (/.result expected_lux) - (try#each (at equivalence = (list [(list#each (|>> [label_module]) {.#Item tags_0}) - type_0] - [(list#each (|>> [label_module]) {.#Item tags_1}) - type_1]))) - (try.else false)))) - (_.coverage [/.tags_of] - (|> (/.tags_of [label_module name_1]) - (/.result expected_lux) - (try#each (at (maybe.equivalence (list.equivalence symbol.equivalence)) = {.#Some (list#each (|>> [label_module]) {.#Item tags_1})})) - (try.else false))) - (_.coverage [/.tag] - (|> {.#Item tags_0} - list.enumeration - (list.every? (function (_ [expected_index label]) - (|> [label_module label] - /.tag - (/.result expected_lux) - (!expect (^.multi {try.#Success [actual_index actual_tags actual_type]} - (let [correct_index! - (n.= expected_index - actual_index) +... name_0 (random.upper_cased 1) +... name_1 (random.only (|>> (text#= name_0) not) +... (random.upper_cased 1)) - correct_tags! - (at (list.equivalence symbol.equivalence) = - (list#each (|>> [label_module]) {.#Item tags_0}) - actual_tags) +... .let [random_tag (of ! each (|>> [label_module]) +... (random.upper_cased 1)) +... random_labels (is (Random [Text (List Text)]) +... (do ! +... [head (random.lower_cased 5)] +... (|> (random.lower_cased 5) +... (random.only (|>> (text#= head) not)) +... (random.set text.hash 3) +... (of ! each set.list) +... (random.and (in head)))))] +... tags_0 random_labels +... tags_1 (let [set/0 (set.of_list text.hash {.#Item tags_0})] +... (random.only (|>> {.#Item} +... (list.any? (set.member? set/0)) +... not) +... random_labels)) +... .let [type_0 {.#Nominal name_0 (list)} +... type_1 {.#Nominal name_1 (list)} - correct_type! - (type#= type_0 - actual_type)] - (and correct_index! - correct_tags! - correct_type!)))) - ))))) - (_.coverage [/.slot] - (|> {.#Item tags_1} - list.enumeration - (list.every? (function (_ [expected_index label]) - (|> [label_module label] - /.slot - (/.result expected_lux) - (!expect (^.multi {try.#Success [actual_index actual_tags actual_type]} - (let [correct_index! - (n.= expected_index - actual_index) +... expected_lux +... (is Lux +... [.#info [.#target "" +... .#version "" +... .#mode {.#Build} +... .#configuration (list)] +... .#source [location.dummy 0 ""] +... .#location location.dummy +... .#current_module {.#Some current_module} +... .#modules (list [current_module +... [.#module_hash 0 +... .#module_aliases (list) +... .#definitions (list) +... .#imports (list label_module) +... .#module_state {.#Active}]] +... [label_module +... [.#module_hash 0 +... .#module_aliases (list) +... .#definitions (list.partial [name_0 {.#Type [true type_0 {.#Left tags_0}]}] +... [name_1 {.#Type [true type_1 {.#Right tags_1}]}] +... (all list#composite +... (|> {.#Item tags_0} +... list.enumeration +... (list#each (function (_ [index short]) +... [short {.#Tag [true type_0 {.#Item tags_0} index]}]))) +... (|> {.#Item tags_1} +... list.enumeration +... (list#each (function (_ [index short]) +... [short {.#Slot [true type_1 {.#Item tags_1} index]}]))))) +... .#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 [/.tag_lists] +... (let [equivalence (list.equivalence +... (product.equivalence +... (list.equivalence symbol.equivalence) +... type.equivalence))] +... (|> (/.tag_lists label_module) +... (/.result expected_lux) +... (try#each (of equivalence = (list [(list#each (|>> [label_module]) {.#Item tags_0}) +... type_0] +... [(list#each (|>> [label_module]) {.#Item tags_1}) +... type_1]))) +... (try.else false)))) +... (_.coverage [/.tags_of] +... (|> (/.tags_of [label_module name_1]) +... (/.result expected_lux) +... (try#each (of (maybe.equivalence (list.equivalence symbol.equivalence)) = {.#Some (list#each (|>> [label_module]) {.#Item tags_1})})) +... (try.else false))) +... ... (_.coverage [/.tag] +... ... (|> {.#Item tags_0} +... ... list.enumeration +... ... (list.every? (function (_ [expected_index label]) +... ... (|> [label_module label] +... ... /.tag +... ... (/.result expected_lux) +... ... (!expect (^.multi {try.#Success [actual_index actual_tags actual_type]} +... ... (let [correct_index! +... ... (n.= expected_index +... ... actual_index) - correct_tags! - (at (list.equivalence symbol.equivalence) = - (list#each (|>> [label_module]) {.#Item tags_1}) - actual_tags) +... ... correct_tags! +... ... (of (list.equivalence symbol.equivalence) = +... ... (list#each (|>> [label_module]) {.#Item tags_0}) +... ... actual_tags) - correct_type! - (type#= type_1 - actual_type)] - (and correct_index! - correct_tags! - correct_type!)))) - ))))) - ))) +... ... correct_type! +... ... (type#= type_0 +... ... actual_type)] +... ... (and correct_index! +... ... correct_tags! +... ... correct_type!)))) +... ... ))))) +... ... (_.coverage [/.slot] +... ... (|> {.#Item tags_1} +... ... list.enumeration +... ... (list.every? (function (_ [expected_index label]) +... ... (|> [label_module label] +... ... /.slot +... ... (/.result expected_lux) +... ... (!expect (^.multi {try.#Success [actual_index actual_tags actual_type]} +... ... (let [correct_index! +... ... (n.= expected_index +... ... actual_index) -(def locals_related - Test - (do [! random.monad] - [current_module (random.upper_case 1) - [name_0 name_1 name_2 name_3 name_4] (|> (random.upper_case 1) - (random.set text.hash 5) - (at ! each set.list) - (random.one (function (_ values) - (when values - (list name_0 name_1 name_2 name_3 name_4) - {.#Some [name_0 name_1 name_2 name_3 name_4]} +... ... correct_tags! +... ... (of (list.equivalence symbol.equivalence) = +... ... (list#each (|>> [label_module]) {.#Item tags_1}) +... ... actual_tags) - _ - {.#None})))) - .let [type_0 {.#Primitive name_0 (list)} - type_1 {.#Primitive name_1 (list)} - type_2 {.#Primitive name_2 (list)} - type_3 {.#Primitive name_3 (list)} - type_4 {.#Primitive name_4 (list)} +... ... correct_type! +... ... (type#= type_1 +... ... actual_type)] +... ... (and correct_index! +... ... correct_tags! +... ... correct_type!)))) +... ... ))))) +... ))) - globals (is (List [Text .Global]) - (list [name_4 - {.#Definition [false type_4 []]}])) +... (def locals_related +... Test +... (do [! random.monad] +... [current_module (random.upper_cased 1) +... [name_0 name_1 name_2 name_3 name_4] (|> (random.upper_cased 1) +... (random.set text.hash 5) +... (of ! each set.list) +... (random.one (function (_ values) +... (when values +... (list name_0 name_1 name_2 name_3 name_4) +... {.#Some [name_0 name_1 name_2 name_3 name_4]} - scopes (list [.#name (list) - .#inner 0 - .#locals [.#counter 1 - .#mappings (list [name_3 [type_3 3]])] - .#captured [.#counter 0 - .#mappings (list)]] - [.#name (list) - .#inner 0 - .#locals [.#counter 2 - .#mappings (list [name_1 [type_1 1]] - [name_2 [type_2 2]])] - .#captured [.#counter 0 - .#mappings (list)]] - [.#name (list) - .#inner 0 - .#locals [.#counter 1 - .#mappings (list [name_0 [type_0 0]])] - .#captured [.#counter 0 - .#mappings (list)]])] - .let [expected_lux - (is Lux - [.#info [.#target "" - .#version "" - .#mode {.#Build} - .#configuration (list)] - .#source [location.dummy 0 ""] - .#location location.dummy - .#current_module {.#Some current_module} - .#modules (list [current_module - [.#module_hash 0 - .#module_aliases (list) - .#definitions globals - .#imports (list) - .#module_state {.#Active}]]) - .#scopes scopes - .#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 [.Scope /.locals] - (let [equivalence (is (Equivalence (List (List [Text Type]))) - (list.equivalence - (list.equivalence - (product.equivalence - text.equivalence - type.equivalence))))] - (|> /.locals - (/.result expected_lux) - (try#each (at equivalence = (list (list [name_3 type_3]) - (list [name_1 type_1] - [name_2 type_2])))) - (try.else false)))) - (_.coverage [/.var_type] - (and (|> (/.var_type name_0) - (/.result expected_lux) - (try#each (at type.equivalence = type_0)) - (try.else false)) - (|> (/.var_type name_1) - (/.result expected_lux) - (try#each (at type.equivalence = type_1)) - (try.else false)) - (|> (/.var_type name_2) - (/.result expected_lux) - (try#each (at type.equivalence = type_2)) - (try.else false)) - (|> (/.var_type name_3) - (/.result expected_lux) - (try#each (at type.equivalence = type_3)) - (try.else false)))) - (_.coverage [/.type] - (and (|> (/.type ["" name_0]) - (/.result expected_lux) - (try#each (at type.equivalence = type_0)) - (try.else false)) - (|> (/.type ["" name_1]) - (/.result expected_lux) - (try#each (at type.equivalence = type_1)) - (try.else false)) - (|> (/.type ["" name_2]) - (/.result expected_lux) - (try#each (at type.equivalence = type_2)) - (try.else false)) - (|> (/.type ["" name_3]) - (/.result expected_lux) - (try#each (at type.equivalence = type_3)) - (try.else false)) - (|> (/.type [current_module name_4]) - (/.result expected_lux) - (try#each (at type.equivalence = type_4)) - (try.else false)) - (|> (/.type ["" name_4]) - (/.result expected_lux) - (try#each (at type.equivalence = type_4)) - (try.else false)))) - ))) +... _ +... {.#None})))) +... .let [type_0 {.#Nominal name_0 (list)} +... type_1 {.#Nominal name_1 (list)} +... type_2 {.#Nominal name_2 (list)} +... type_3 {.#Nominal name_3 (list)} +... type_4 {.#Nominal name_4 (list)} -(def injection - (Injection Meta) - (at /.monad in)) +... globals (is (List [Text .Global]) +... (list [name_4 +... {.#Definition [false type_4 []]}])) -(def (comparison init) - (-> Lux (Comparison Meta)) - (function (_ == left right) - (when [(/.result init left) - (/.result init right)] - [{try.#Success left} {try.#Success right}] - (== left right) - - _ - false))) +... scopes (list [.#scope_name (list) +... .#inner_scopes 0 +... .#locals [.#counter 1 +... .#mappings (list [name_3 [type_3 3]])] +... .#captured [.#counter 0 +... .#mappings (list)]] +... [.#scope_name (list) +... .#inner_scopes 0 +... .#locals [.#counter 2 +... .#mappings (list [name_1 [type_1 1]] +... [name_2 [type_2 2]])] +... .#captured [.#counter 0 +... .#mappings (list)]] +... [.#scope_name (list) +... .#inner_scopes 0 +... .#locals [.#counter 1 +... .#mappings (list [name_0 [type_0 0]])] +... .#captured [.#counter 0 +... .#mappings (list)]])] +... .let [expected_lux +... (is Lux +... [.#info [.#target "" +... .#version "" +... .#mode {.#Build} +... .#configuration (list)] +... .#source [location.dummy 0 ""] +... .#location location.dummy +... .#current_module {.#Some current_module} +... .#modules (list [current_module +... [.#module_hash 0 +... .#module_aliases (list) +... .#definitions globals +... .#imports (list) +... .#module_state {.#Active}]]) +... .#scopes scopes +... .#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 [.Scope /.locals] +... (let [equivalence (is (Equivalence (List (List [Text Type]))) +... (list.equivalence +... (list.equivalence +... (product.equivalence +... text.equivalence +... type.equivalence))))] +... (|> /.locals +... (/.result expected_lux) +... (try#each (of equivalence = (list (list [name_3 type_3]) +... (list [name_1 type_1] +... [name_2 type_2])))) +... (try.else false)))) +... (_.coverage [/.var_type] +... (and (|> (/.var_type name_0) +... (/.result expected_lux) +... (try#each (of type.equivalence = type_0)) +... (try.else false)) +... (|> (/.var_type name_1) +... (/.result expected_lux) +... (try#each (of type.equivalence = type_1)) +... (try.else false)) +... (|> (/.var_type name_2) +... (/.result expected_lux) +... (try#each (of type.equivalence = type_2)) +... (try.else false)) +... (|> (/.var_type name_3) +... (/.result expected_lux) +... (try#each (of type.equivalence = type_3)) +... (try.else false)))) +... (_.coverage [/.type] +... (and (|> (/.type ["" name_0]) +... (/.result expected_lux) +... (try#each (of type.equivalence = type_0)) +... (try.else false)) +... (|> (/.type ["" name_1]) +... (/.result expected_lux) +... (try#each (of type.equivalence = type_1)) +... (try.else false)) +... (|> (/.type ["" name_2]) +... (/.result expected_lux) +... (try#each (of type.equivalence = type_2)) +... (try.else false)) +... (|> (/.type ["" name_3]) +... (/.result expected_lux) +... (try#each (of type.equivalence = type_3)) +... (try.else false)) +... (|> (/.type [current_module name_4]) +... (/.result expected_lux) +... (try#each (of type.equivalence = type_4)) +... (try.else false)) +... (|> (/.type ["" name_4]) +... (/.result expected_lux) +... (try#each (of type.equivalence = type_4)) +... (try.else false)))) +... ))) + +... (def injection +... (Injection Meta) +... (of /.monad in)) + +... (def (comparison init) +... (-> Lux (Comparison Meta)) +... (function (_ == left right) +... (when [(/.result init left) +... (/.result init right)] +... [{try.#Success left} {try.#Success right}] +... (== left right) + +... _ +... false))) (`` (`` (def .public test Test (<| (_.covering /._) (_.for [.Meta .Lux]) (all _.and - (do [! random.monad] - [target (random.upper_case 1) - version (random.upper_case 1) - source_code (random.upper_case 1) - expected_current_module (random.upper_case 1) - expected_type (at ! each (function (_ name) - {.#Primitive name (list)}) - (random.upper_case 1)) - expected_seed random.nat - expected random.nat - dummy (random.only (|>> (n.= expected) not) random.nat) - expected_location ..random_location - .let [expected_lux [.#info [.#target target - .#version version - .#mode {.#Build} - .#configuration (list)] - .#source [expected_location 0 source_code] - .#location expected_location - .#current_module {.#Some expected_current_module} - .#modules (list) - .#scopes (list) - .#type_context [.#ex_counter 0 - .#var_counter 0 - .#var_bindings (list)] - .#expected {.#Some expected_type} - .#seed expected_seed - .#scope_type_vars (list) - .#extensions [] - .#eval (as (-> Type Code (Meta Any)) []) - .#host []]]] - (all _.and - (_.for [/.functor] - ($functor.spec ..injection (..comparison expected_lux) /.functor)) - (_.for [/.apply] - ($apply.spec ..injection (..comparison expected_lux) /.apply)) - (_.for [/.monad] - ($monad.spec ..injection (..comparison expected_lux) /.monad)) + ... (do [! random.monad] + ... [target (random.upper_cased 1) + ... version (random.upper_cased 1) + ... source_code (random.upper_cased 1) + ... expected_current_module (random.upper_cased 1) + ... expected_type (of ! each (function (_ name) + ... {.#Nominal name (list)}) + ... (random.upper_cased 1)) + ... expected_seed random.nat + ... expected random.nat + ... dummy (random.only (|>> (n.= expected) not) random.nat) + ... expected_location ..random_location + ... .let [expected_lux [.#info [.#target target + ... .#version version + ... .#mode {.#Build} + ... .#configuration (list)] + ... .#source [expected_location 0 source_code] + ... .#location expected_location + ... .#current_module {.#Some expected_current_module} + ... .#modules (list) + ... .#scopes (list) + ... .#type_context [.#ex_counter 0 + ... .#var_counter 0 + ... .#var_bindings (list)] + ... .#expected {.#Some expected_type} + ... .#seed expected_seed + ... .#scope_type_vars (list) + ... .#extensions [] + ... .#eval (as (-> Type Code (Meta Any)) []) + ... .#host []]]] + ... (all _.and + ... (_.for [/.functor] + ... ($functor.spec ..injection (..comparison expected_lux) /.functor)) + ... (_.for [/.apply] + ... ($apply.spec ..injection (..comparison expected_lux) /.apply)) + ... (_.for [/.monad] + ... ($monad.spec ..injection (..comparison expected_lux) /.monad)) - (do random.monad - [expected_value random.nat - expected_error (random.upper_case 1)] - (_.coverage [/.lifted] - (and (|> expected_error - {try.#Failure} - (is (Try Nat)) - /.lifted - (/.result expected_lux) - (!expect (^.multi {try.#Failure actual} - (text#= (location.with expected_location expected_error) - actual)))) - (|> expected_value - {try.#Success} - (is (Try Nat)) - /.lifted - (/.result expected_lux) - (!expect (^.multi {try.#Success actual} - (same? expected_value actual))))))) - - ..compiler_related - ..error_handling - ..module_related - ..context_related - ..definition_related - ..search_related - ..locals_related - (_.for [.Label] - ..label_related) - )) + ... (do random.monad + ... [expected_value random.nat + ... expected_error (random.upper_cased 1)] + ... (_.coverage [/.of_try] + ... (and (|> expected_error + ... {try.#Failure} + ... (is (Try Nat)) + ... /.of_try + ... (/.result expected_lux) + ... (!expect (^.multi {try.#Failure actual} + ... (text#= (location.with expected_location expected_error) + ... actual)))) + ... (|> expected_value + ... {try.#Success} + ... (is (Try Nat)) + ... /.of_try + ... (/.result expected_lux) + ... (!expect (^.multi {try.#Success actual} + ... (same? expected_value actual))))))) + + ... ..compiler_related + ... ..error_handling + ... ..module_related + ... ..context_related + ... ..definition_related + ... ..search_related + ... ..locals_related + ... (_.for [.Label] + ... ..label_related) + ... )) - /code.test - /location.test - /symbol.test - /configuration.test - /version.test - /type.test - /macro.test - /static.test - /target.test - (,, (for @.jvm (,, (these /target/jvm.test)) - @.old (,, (these /target/jvm.test)) - @.js (,, (these /target/js.test)) - @.lua (,, (these /target/lua.test)) - @.python (,, (these /target/python.test)) - @.ruby (,, (these /target/ruby.test)))) + ... /code.test + ... /location.test + ... /symbol.test + ... /configuration.test + ... /version.test + ... /type.test + ... /macro.test + ... /static.test + ... /target.test + ... (,, (for @.jvm (,, (these /target/jvm.test)) + ... @.old (,, (these /target/jvm.test)) + ... @.js (,, (these /target/js.test)) + ... @.lua (,, (these /target/lua.test)) + ... @.python (,, (these /target/python.test)) + ... @.ruby (,, (these /target/ruby.test)))) (,, (for @.old (,, (these)) (,, (these /extension.test)))) + /global.test - /compiler/arity.test - /compiler/version.test - /compiler/reference.test - /compiler/phase.test - /compiler/analysis.test - /compiler/synthesis.test - /compiler/meta/archive.test - /compiler/meta/cli.test - /compiler/meta/export.test - /compiler/meta/import.test - /compiler/meta/context.test - /compiler/meta/cache.test - /compiler/phase/extension.test - /compiler/phase/analysis.test - ... /compiler/syntax.test + ... /compiler/arity.test + ... /compiler/version.test + ... /compiler/reference.test + ... /compiler/phase.test + ... /compiler/analysis.test ... /compiler/synthesis.test + ... /compiler/meta/archive.test + ... /compiler/meta/cli.test + ... /compiler/meta/export.test + ... /compiler/meta/import.test + ... /compiler/meta/context.test + ... /compiler/meta/cache.test + ... /compiler/phase/extension.test + ... /compiler/phase/analysis.test + ... ... /compiler/syntax.test + ... ... /compiler/synthesis.test ))))) |