ucg/integration_tests/modules_test.ucg

112 lines
2.3 KiB
Plaintext
Raw Normal View History

let t = import "std/testing.ucg";
let test_empty_mod = module {
} => {
};
let std_lib_import = module {
} => {
let tpl = import "std/tuples.ucg";
};
let empty_mod_instance = test_empty_mod{};
let test_simple_mod = module {
arg = "value",
} => {
let value = mod.arg;
};
let simple_mod_instance = test_simple_mod{};
assert {
ok = simple_mod_instance.value == "value",
desc = "simple_mod_instance.value == \"value\"",
};
let simple_mod_with_args = test_simple_mod{arg = "othervalue"};
assert {
ok = simple_mod_with_args.value == "othervalue",
desc = "simple_mod_with_args.value == \"othervalue\"",
};
let embedded_mod = module {
deep_value = "None",
environ = "None",
} => {
let env_name = select mod.environ, "qa", {
None = "qa",
prod = "prod",
qa = "qa",
uat = "uat",
};
let embedded_def = module {
deep_value = "None",
} => {
let value = mod.deep_value;
};
let embedded = embedded_def{deep_value = mod.deep_value};
};
let embedded_default_params = embedded_mod{};
assert {
ok = embedded_default_params.embedded.value == "None",
desc = "embedded_default_params.embedded.value == \"None\"",
};
assert {
ok = embedded_default_params.env_name == "qa",
desc = "embedded_default_params.env_name == \"qa\"",
};
let embedded_with_params = embedded_mod{deep_value = "Some"};
assert {
ok = embedded_with_params.embedded.value == "Some",
desc = "embedded_with_params.embedded.value == \"Some\"",
};
assert {
ok = embedded_mod{dep_value="Some"}.embedded_def{}.value == "None",
desc = "embedded_mod{dep_value=\"Some\"}.embedded_def{}.value == \"None\"",
};
let export_module = module {
foo = "",
} => (result) {
let foo = mod.foo;
let result = {
out_foo = foo,
};
};
assert t.ok{
test = out_foo in export_module{foo="bar"},
desc = "out_foo is in our output tuple",
};
assert t.equal{
left = export_module{foo="bar"},
right = {out_foo = "bar"},
};
let export_module_tuple = module {
foo = "",
} => ({quux = result.out_foo}) {
let foo = mod.foo;
let result = {
out_foo = foo,
};
};
assert t.ok{
test = quux in export_module_tuple{foo="bar"},
desc = "quux is in our output tuple",
};
assert t.equal{
left = export_module_tuple{foo="bar"},
right = {quux = "bar"},
};