ucg/integration_tests/modules_test.ucg
Jeremy Wall d989e47706 FEATURE: Use a better DSL for unit tests.
* Assert now requires a tuple instead of a string containing
  statements.
* We include a helpful ucg based unit testing module.

Fixes: #26
2019-01-10 17:17:57 -06:00

65 lines
1.5 KiB
Plaintext

let test_empty_mod = module {
} => {
};
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\"",
};