File: test_expr.c

package info (click to toggle)
siridb-server 2.0.53-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,612 kB
  • sloc: ansic: 47,501; python: 6,263; sh: 254; makefile: 149
file content (26 lines) | stat: -rw-r--r-- 826 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include "../test.h"
#include <expr/expr.h>


int main()
{
    test_start("expr");

    int64_t result;

    _assert(expr_parse(&result, "5+37") == 0 && result == 42);
    _assert(expr_parse(&result, "2+2*20") == 0 && result == 42);
    _assert(expr_parse(&result, "(2+4)*7") == 0 && result == 42);
    _assert(expr_parse(&result, "16%10*7") == 0 && result == 42);
    _assert(expr_parse(&result, "7*14%56") == 0 && result == 42);
    _assert(expr_parse(&result, "21/3*6") == 0 && result == 42);
    _assert(expr_parse(&result, "22/3*6") == 0 && result == 42);

    /* division by zero is not a good idea */
    _assert(expr_parse(&result, "42/(2-2)") == EXPR_DIVISION_BY_ZERO);

    /* module by zero is not a good idea either */
    _assert(expr_parse(&result, "42%(2-2)") == EXPR_MODULO_BY_ZERO);

    return test_end();
}