diff options
author | Danny van Kooten <dannyvankooten@users.noreply.github.com> | 2020-03-20 14:06:18 +0100 |
---|---|---|
committer | Danny van Kooten <dannyvankooten@users.noreply.github.com> | 2020-03-20 14:06:18 +0100 |
commit | fbfe506e2e7e2c86763997057d7e10c691c61b32 (patch) | |
tree | c5ddaa4cbd10edc2e02b008c1583a1d5891f2c98 | |
parent | 9f4d4ab24e7a539621bcd810b84201b0127c0870 (diff) | |
download | unja-fbfe506e2e7e2c86763997057d7e10c691c61b32.tar.gz unja-fbfe506e2e7e2c86763997057d7e10c691c61b32.zip |
add support for modulo operator
-rw-r--r-- | src/template.c | 1 | ||||
-rw-r--r-- | tests/test_template.c | 19 |
2 files changed, 14 insertions, 6 deletions
diff --git a/src/template.c b/src/template.c index e8fcf36..0d1faa8 100644 --- a/src/template.c +++ b/src/template.c @@ -398,6 +398,7 @@ struct unja_object *eval_infix_expression(struct unja_object *left, char *op, st case '-': result = object_to_int(left) - object_to_int(right); break; case '/': result = object_to_int(left) / object_to_int(right); break; case '*': result = object_to_int(left) * object_to_int(right); break; + case '%': result = object_to_int(left) % object_to_int(right); break; case '>': if (op[1] == '=') { result = object_to_int(left) >= object_to_int(right); diff --git a/tests/test_template.c b/tests/test_template.c index 69ff7fe..758f7fb 100644 --- a/tests/test_template.c +++ b/tests/test_template.c @@ -110,23 +110,30 @@ TEST(expr_op_precedence) { } TEST(expr_subtract) { - char *input = "Hello {{ 5 - 5 }}."; + char *input = "{{ 5 - 5 }}"; char *output = template_string(input, NULL); - assert_str(output, "Hello 0."); + assert_str(output, "0"); free(output); } TEST(expr_divide) { - char *input = "Hello {{ 5 / 5 }}."; + char *input = "{{ 5 / 5 }}"; char *output = template_string(input, NULL); - assert_str(output, "Hello 1."); + assert_str(output, "1"); free(output); } TEST(expr_multiply) { - char *input = "Hello {{ 5 * 5 }}."; + char *input = "{{ 5 * 5 }}"; char *output = template_string(input, NULL); - assert_str(output, "Hello 25."); + assert_str(output, "25"); + free(output); +} + +TEST(expr_modulo) { + char *input = "{{ 5 % 4 }}"; + char *output = template_string(input, NULL); + assert_str(output, "1"); free(output); } |