///////////////////////////////////////////////////////////////////////////
| 48 | |
| 49 | //////////////////////////////////////////////////////////////////////////////// |
| 50 | int TEST_NAME(int, char**) { |
| 51 | UnitTest t(52); |
| 52 | Context context; |
| 53 | Context::setContext(&context); |
| 54 | |
| 55 | // Test the source independently. |
| 56 | Variant v; |
| 57 | t.notok(get("-", v), "true <-- get(-)"); |
| 58 | |
| 59 | t.ok(get("x", v), "true <-- get(x)"); |
| 60 | t.is(v.type(), Variant::type_boolean, "get(x) --> boolean"); |
| 61 | t.is(v.get_bool(), true, "get(x) --> true"); |
| 62 | |
| 63 | Eval e; |
| 64 | e.addSource(get); |
| 65 | Variant result; |
| 66 | e.evaluatePostfixExpression("x", result); |
| 67 | t.is(result.type(), Variant::type_boolean, "postfix 'x' --> boolean"); |
| 68 | t.is(result.get_bool(), true, "postfix 'x' --> true"); |
| 69 | |
| 70 | e.evaluatePostfixExpression("pi", result); |
| 71 | t.is(result.type(), Variant::type_real, "postfix 'pi' --> real"); |
| 72 | t.is(result.get_real(), 3.141592, 0.00001, "postfix 'pi' --> 3.14159265"); |
| 73 | |
| 74 | e.evaluatePostfixExpression("foo", result); |
| 75 | t.is(result.type(), Variant::type_string, "postfix 'foo' --> string"); |
| 76 | t.is(result.get_string(), "foo", "postfix 'foo' --> 'foo'"); |
| 77 | |
| 78 | // Simple infix arithmetic. |
| 79 | e.evaluateInfixExpression("1+2", result); |
| 80 | t.is(result.type(), Variant::type_integer, "infix '1 + 2' --> integer"); |
| 81 | t.is(result.get_integer(), 3, "infix '1 + 2' --> 3"); |
| 82 | |
| 83 | // Simple postfix arithmetic. |
| 84 | e.evaluatePostfixExpression("1 2 +", result); |
| 85 | t.is(result.type(), Variant::type_integer, "postfix '1 2 +' --> integer"); |
| 86 | t.is(result.get_integer(), 3, "postfix '1 2 +' --> 3"); |
| 87 | |
| 88 | e.evaluatePostfixExpression("1 2 -", result); |
| 89 | t.is(result.type(), Variant::type_integer, "postfix '1 2 -' --> integer"); |
| 90 | t.is(result.get_integer(), -1, "postfix '1 2 -' --> -1"); |
| 91 | |
| 92 | e.evaluatePostfixExpression("2 3 *", result); |
| 93 | t.is(result.type(), Variant::type_integer, "postfix '2 3 *' --> integer"); |
| 94 | t.is(result.get_integer(), 6, "postfix '2 3 *' --> 6"); |
| 95 | |
| 96 | e.evaluatePostfixExpression("5 2 /", result); |
| 97 | t.is(result.type(), Variant::type_integer, "postfix '5 2 /' --> integer"); |
| 98 | t.is(result.get_integer(), 2, "postfix '5 2 /' --> 2"); |
| 99 | |
| 100 | e.evaluatePostfixExpression("5 2 /", result); |
| 101 | t.is(result.type(), Variant::type_integer, "postfix '5 2 *' --> integer"); |
| 102 | t.is(result.get_integer(), 2, "postfix '5 2 *' --> 2"); |
| 103 | |
| 104 | // Simple postfix unary operator. |
| 105 | e.evaluatePostfixExpression("0 !", result); |
| 106 | t.is(result.type(), Variant::type_boolean, "postfix '0 !' --> boolean"); |
| 107 | t.is(result.get_bool(), true, "postfix '0 !' --> true"); |
nothing calls this directly
no test coverage detected