ucg/integration_tests/macros_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

67 lines
1.4 KiB
Plaintext

let noargmacro = macro() => {
field1 = "value",
};
let simplemacro = macro(arg1, arg2, arg3) => {
field1 = arg1,
field2 = arg2,
field3 = arg3,
};
let cplxmacro = macro(argint, argstr, argfloat) => {
field1 = argint + 1,
field2 = argstr + " are here",
field3 = argfloat - 1.0,
boolfield = argint == 1,
};
let noargresult = noargmacro();
let simpleresult = simplemacro(1, 2, 3);
let cplxresult = cplxmacro(1, "We", 3.0);
assert {
ok = noargresult.field1 == "value",
desc = "noargresult.field1 == \"value\"",
};
assert {
ok = simpleresult.field1 == 1,
desc = "simpleresult.field1 == 1",
};
assert {
ok = simpleresult.field2 == 2,
desc = "simpleresult.field2 == 2",
};
assert {
ok = simpleresult.field3 == 3,
desc = "simpleresult.field3 == 3",
};
assert {
ok = cplxresult.field1 == 2,
desc = "cplxresult.field1 == 2",
};
assert {
ok = cplxresult.field2 == "We are here",
desc = "cplxresult.field2 == \"We are here\"",
};
assert {
ok = cplxresult.field3 == 2.0,
desc = "cplxresult.field3 == 2.0",
};
assert {
ok = cplxresult.boolfield == true,
desc = "cplxresult.boolfield == true",
};
let macro_tpl_arg = macro(tpl) => {
result = tpl.field,
};
let arg_tpl = {
field = "value",
};
assert {
ok = macro_tpl_arg(arg_tpl).result == arg_tpl.field,
desc = "macro_tpl_arg(arg_tpl).result == arg_tpl.field",
};