1
0
Fork 0
arangodb/tests/js/server/aql/aql-arithmetic.js

1443 lines
60 KiB
JavaScript

/*jshint globalstrict:false, strict:false */
/*global assertEqual, assertTrue */
////////////////////////////////////////////////////////////////////////////////
/// @brief tests for query language, arithmetic operators
///
/// @file
///
/// DISCLAIMER
///
/// Copyright 2010-2012 triagens GmbH, Cologne, Germany
///
/// Licensed under the Apache License, Version 2.0 (the "License");
/// you may not use this file except in compliance with the License.
/// You may obtain a copy of the License at
///
/// http://www.apache.org/licenses/LICENSE-2.0
///
/// Unless required by applicable law or agreed to in writing, software
/// distributed under the License is distributed on an "AS IS" BASIS,
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
/// See the License for the specific language governing permissions and
/// limitations under the License.
///
/// Copyright holder is triAGENS GmbH, Cologne, Germany
///
/// @author Jan Steemann
/// @author Copyright 2012, triAGENS GmbH, Cologne, Germany
////////////////////////////////////////////////////////////////////////////////
var jsunity = require("jsunity");
var helper = require("@arangodb/aql-helper");
var getQueryResults = helper.getQueryResults;
////////////////////////////////////////////////////////////////////////////////
/// @brief test suite
////////////////////////////////////////////////////////////////////////////////
function ahuacatlArithmeticTestSuite () {
return {
////////////////////////////////////////////////////////////////////////////////
/// @brief set up
////////////////////////////////////////////////////////////////////////////////
setUp : function () {
},
////////////////////////////////////////////////////////////////////////////////
/// @brief tear down
////////////////////////////////////////////////////////////////////////////////
tearDown : function () {
},
testConstAttributeAccess : function () {
var actual = getQueryResults("LET it = { a: 4, b: 5, c: 6 } RETURN [ it.a * 3, it.b * 4, it.c * 5 ]");
assertEqual([ [ 4 * 3, 5 * 4, 6 * 5 ] ], actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test unary plus
////////////////////////////////////////////////////////////////////////////////
testUnaryPlus1 : function () {
var expected = [ 0 ];
var actual = getQueryResults("RETURN +0");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(+0)");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test unary plus
////////////////////////////////////////////////////////////////////////////////
testUnaryPlus2 : function () {
var expected = [ 1 ];
var actual = getQueryResults("RETURN +1");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(+1)");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test unary plus
////////////////////////////////////////////////////////////////////////////////
testUnaryPlus3 : function () {
var expected = [ 1 ];
var actual = getQueryResults("RETURN ++1");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(++1)");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test unary plus
////////////////////////////////////////////////////////////////////////////////
testUnaryPlus4 : function () {
var expected = [ -5 ];
var actual = getQueryResults("RETURN +-5");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(+-5)");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test unary plus
////////////////////////////////////////////////////////////////////////////////
testUnaryPlus5 : function () {
var expected = [ 5.4 ];
var actual = getQueryResults("RETURN +++5.4");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(+++5.4)");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test unary plus
////////////////////////////////////////////////////////////////////////////////
testUnaryPlusNonNumeric : function () {
assertEqual([ 0 ], getQueryResults("RETURN +null"));
assertEqual([ 1 ], getQueryResults("RETURN +true"));
assertEqual([ 0 ], getQueryResults("RETURN +false"));
assertEqual([ 0 ], getQueryResults("RETURN +\"value\""));
assertEqual([ 1 ], getQueryResults("RETURN +\"1\""));
assertEqual([ -3 ], getQueryResults("RETURN +\"-3\""));
assertEqual([ -3.4 ], getQueryResults("RETURN +\"-3.4\""));
assertEqual([ 0 ], getQueryResults("RETURN +[ ]"));
assertEqual([ 0 ], getQueryResults("RETURN +[ 0 ]"));
assertEqual([ -34 ], getQueryResults("RETURN +[ -34 ]"));
assertEqual([ 0 ], getQueryResults("RETURN +[ 1, 2 ]"));
assertEqual([ 0 ], getQueryResults("RETURN +[ \"abc\" ]"));
assertEqual([ 3 ], getQueryResults("RETURN +[ \"3\" ]"));
assertEqual([ 0 ], getQueryResults("RETURN +{ }"));
assertEqual([ 0 ], getQueryResults("RETURN NOOPT(+null)"));
assertEqual([ 1 ], getQueryResults("RETURN NOOPT(+true)"));
assertEqual([ 0 ], getQueryResults("RETURN NOOPT(+false)"));
assertEqual([ 0 ], getQueryResults("RETURN NOOPT(+\"value\")"));
assertEqual([ 1 ], getQueryResults("RETURN NOOPT(+\"1\")"));
assertEqual([ -3 ], getQueryResults("RETURN NOOPT(+\"-3\")"));
assertEqual([ -3.4 ], getQueryResults("RETURN NOOPT(+\"-3.4\")"));
assertEqual([ 0 ], getQueryResults("RETURN NOOPT(+[ ])"));
assertEqual([ 0 ], getQueryResults("RETURN NOOPT(+[ 0 ])"));
assertEqual([ -34 ], getQueryResults("RETURN NOOPT(+[ -34 ])"));
assertEqual([ 0 ], getQueryResults("RETURN NOOPT(+[ 1, 2 ])"));
assertEqual([ 0 ], getQueryResults("RETURN NOOPT(+[ \"abc\" ])"));
assertEqual([ 3 ], getQueryResults("RETURN NOOPT(+[ \"3\" ])"));
assertEqual([ 0 ], getQueryResults("RETURN NOOPT(+{ })"));
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test unary minus
////////////////////////////////////////////////////////////////////////////////
testUnaryMinus1 : function () {
var expected = [ 0 ];
var actual = getQueryResults("RETURN -0");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(-0)");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test unary minus
////////////////////////////////////////////////////////////////////////////////
testUnaryMinus2 : function () {
var expected = [ -1 ];
var actual = getQueryResults("RETURN -1");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(-1)");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test unary minus
////////////////////////////////////////////////////////////////////////////////
testUnaryMinus3 : function () {
var expected = [ 1 ];
var actual = getQueryResults("RETURN --1");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(--1)");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test unary minus
////////////////////////////////////////////////////////////////////////////////
testUnaryMinus4 : function () {
var expected = [ -5 ];
var actual = getQueryResults("RETURN -+5");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(-+5)");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test unary minus
////////////////////////////////////////////////////////////////////////////////
testUnaryMinus5 : function () {
var expected = [ -5.4 ];
var actual = getQueryResults("RETURN ---5.4");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(---5.4)");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test unary minus
////////////////////////////////////////////////////////////////////////////////
testUnaryMinusNonNumeric : function () {
assertEqual([ 0 ], getQueryResults("RETURN -null"));
assertEqual([ -1 ], getQueryResults("RETURN -true"));
assertEqual([ 0 ], getQueryResults("RETURN -false"));
assertEqual([ 0 ], getQueryResults("RETURN -\"value\""));
assertEqual([ -1 ], getQueryResults("RETURN -\"1\""));
assertEqual([ 3 ], getQueryResults("RETURN -\"-3\""));
assertEqual([ 3.5 ], getQueryResults("RETURN -\"-3.5\""));
assertEqual([ 0 ], getQueryResults("RETURN -[ ]"));
assertEqual([ 0 ], getQueryResults("RETURN -[ 0 ]"));
assertEqual([ 34 ], getQueryResults("RETURN -[ -34 ]"));
assertEqual([ 0 ], getQueryResults("RETURN -[ 1, 2 ]"));
assertEqual([ 0 ], getQueryResults("RETURN -[ \"abc\" ]"));
assertEqual([ -3 ], getQueryResults("RETURN -[ \"3\" ]"));
assertEqual([ 0 ], getQueryResults("RETURN -{ }"));
assertEqual([ 0 ], getQueryResults("RETURN NOOPT(-null)"));
assertEqual([ -1 ], getQueryResults("RETURN NOOPT(-true)"));
assertEqual([ 0 ], getQueryResults("RETURN NOOPT(-false)"));
assertEqual([ 0 ], getQueryResults("RETURN NOOPT(-\"value\")"));
assertEqual([ -1 ], getQueryResults("RETURN NOOPT(-\"1\")"));
assertEqual([ 3 ], getQueryResults("RETURN NOOPT(-\"-3\")"));
assertEqual([ 3.5 ], getQueryResults("RETURN NOOPT(-\"-3.5\")"));
assertEqual([ 0 ], getQueryResults("RETURN NOOPT(-[ ])"));
assertEqual([ 0 ], getQueryResults("RETURN NOOPT(-[ 0 ])"));
assertEqual([ 34 ], getQueryResults("RETURN NOOPT(-[ -34 ])"));
assertEqual([ 0 ], getQueryResults("RETURN NOOPT(-[ 1, 2 ])"));
assertEqual([ 0 ], getQueryResults("RETURN NOOPT(-[ \"abc\" ])"));
assertEqual([ -3 ], getQueryResults("RETURN NOOPT(-[ \"3\" ])"));
assertEqual([ 0 ], getQueryResults("RETURN NOOPT(-{ })"));
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test unary minus
////////////////////////////////////////////////////////////////////////////////
testUnaryMinusPrecedence1 : function () {
// uminus has higher precedence than <
var expected = [ true ];
var actual = getQueryResults("RETURN -5 < 0");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test unary minus
////////////////////////////////////////////////////////////////////////////////
testUnaryMinusPrecedence2 : function () {
var expected = [ true ];
var actual = getQueryResults("RETURN -5 == -(5)");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test unary minus
////////////////////////////////////////////////////////////////////////////////
testUnaryMinusPrecedence3 : function () {
var expected = [ true ];
var actual = getQueryResults("RETURN -5 == -10--5");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test binary plus
////////////////////////////////////////////////////////////////////////////////
testBinaryPlus1 : function () {
var expected = [ 43.5 ];
var actual = getQueryResults("RETURN 1 + 42.5");
assertEqual(expected, actual);
// Force the + to be executed at runtime
actual = getQueryResults("RETURN NOOPT(FLOOR(1)) + 42.5");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test binary plus
////////////////////////////////////////////////////////////////////////////////
testBinaryPlus2 : function () {
var expected = [ -43.5 ];
var actual = getQueryResults("RETURN -1 + -42.5");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(FLOOR(-1)) + -42.5");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test binary plus
////////////////////////////////////////////////////////////////////////////////
testBinaryPlus3 : function () {
var expected = [ 41.5 ];
var actual = getQueryResults("RETURN -1 + +42.5");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(FLOOR(-1)) + +42.5");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test binary plus
////////////////////////////////////////////////////////////////////////////////
testBinaryPlus4 : function () {
var expected = [ true ];
var actual = getQueryResults("RETURN -1 + +42.5 == +42.5 + -1");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(FLOOR(-1)) + +42.5 == +42.5 + NOOPT(FLOOR(-1))");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test binary plus
////////////////////////////////////////////////////////////////////////////////
testBinaryPlusNonNumeric : function () {
var buildQuery = function(nr, left, right) {
switch (nr) {
case 0:
return `RETURN ${left} + ${right}`;
case 1:
return `RETURN NOOPT(${left}) + ${right}`;
default:
assertTrue(false, "Undefined state");
}
};
for (var i = 0; i < 2; ++i) {
assertEqual([ 1 ], getQueryResults(buildQuery(i, "1", "null")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "1", "false")));
assertEqual([ 2 ], getQueryResults(buildQuery(i, "1", "true")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "1", "\"0\"")));
assertEqual([ 3 ], getQueryResults(buildQuery(i, "1", "\"2\"")));
assertEqual([ 3.5 ], getQueryResults(buildQuery(i, "1", "\"2.5\"")));
assertEqual([ -1.5 ], getQueryResults(buildQuery(i, "1", "\"-2.5\"")));
assertEqual([ 43 ], getQueryResults(buildQuery(i, "1", "\"42\"")));
assertEqual([ -16 ], getQueryResults(buildQuery(i, "1", "\"-17\"")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "1", "[ ]")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "1", "[ 0 ]")));
assertEqual([ 5 ], getQueryResults(buildQuery(i, "1", "[ 4 ]")));
assertEqual([ -3 ], getQueryResults(buildQuery(i, "1", "[ -4 ]")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "1", "{ }")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "null", "1")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "false", "1")));
assertEqual([ 2 ], getQueryResults(buildQuery(i, "true", "1")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "\"0\"", "1")));
assertEqual([ 24 ], getQueryResults(buildQuery(i, "\"23\"", "1")));
assertEqual([ -8 ], getQueryResults(buildQuery(i, "\"-9\"", "1")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "[ ]", "1")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "[ 0 ]", "1")));
assertEqual([ 5 ], getQueryResults(buildQuery(i, "[ 4 ]", "1")));
assertEqual([ -3 ], getQueryResults(buildQuery(i, "[ -4 ]", "1")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "{ }", "1")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "\"a\"", "\"b\"")));
assertEqual([ 3 ], getQueryResults(buildQuery(i, "\"1\"", "\"2\"")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "1", "\"\"")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "\"\"", "1")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "\"\"", "\"\"")));
}
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test binary minus
////////////////////////////////////////////////////////////////////////////////
testBinaryMinus1 : function () {
var expected = [ 0 ];
var actual = getQueryResults("RETURN -1 - -1");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(-1) - -1");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test binary minus
////////////////////////////////////////////////////////////////////////////////
testBinaryMinus2 : function () {
var expected = [ -5.5 ];
var actual = getQueryResults("RETURN -2.25 - 3.25");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(-2.25) - 3.25");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test binary minus
////////////////////////////////////////////////////////////////////////////////
testBinaryMinus3 : function () {
var expected = [ -1 ];
var actual = getQueryResults("RETURN 2.25 - 3.25");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(2.25) - 3.25");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test binary minus
////////////////////////////////////////////////////////////////////////////////
testBinaryMinusNonNumeric : function () {
var buildQuery = function(nr, left, right) {
switch (nr) {
case 0:
return `RETURN ${left} - ${right}`;
case 1:
return `RETURN NOOPT(${left}) - ${right}`;
default:
assertTrue(false, "Undefined state");
}
};
for (var i = 0; i < 2; ++i) {
assertEqual([ 1 ], getQueryResults(buildQuery(i, "1", "null")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "1", "false")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "1", "true")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "1", "\"0\"")));
assertEqual([ -41 ], getQueryResults(buildQuery(i, "1", "\"42\"")));
assertEqual([ 18 ], getQueryResults(buildQuery(i, "1", "\"-17\"")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "1", "\"abc\"")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "1", "[ ]")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "1", "[ 0 ]")));
assertEqual([ -3 ], getQueryResults(buildQuery(i, "1", "[ 4 ]")));
assertEqual([ 5 ], getQueryResults(buildQuery(i, "1", "[ -4 ]")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "1", "{ }")));
assertEqual([ -1 ], getQueryResults(buildQuery(i, "null", "1")));
assertEqual([ -1 ], getQueryResults(buildQuery(i, "false", "1")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "true", "1")));
assertEqual([ -1 ], getQueryResults(buildQuery(i, "\"0\"", "1")));
assertEqual([ -1 ], getQueryResults(buildQuery(i, "\"0\"", "\"1\"")));
assertEqual([ 22 ], getQueryResults(buildQuery(i, "\"23\"", "1")));
assertEqual([ -10 ], getQueryResults(buildQuery(i, "\"-9\"", "1")));
assertEqual([ -1 ], getQueryResults(buildQuery(i, "\"abc\"", "1")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "1", "\"abc\"")));
assertEqual([ -1 ], getQueryResults(buildQuery(i, "[ ]", "1")));
assertEqual([ -1 ], getQueryResults(buildQuery(i, "[ 0 ]", "1")));
assertEqual([ 3 ], getQueryResults(buildQuery(i, "[ 4 ]", "1")));
assertEqual([ 3 ], getQueryResults(buildQuery(i, "[ \"4\" ]", "1")));
assertEqual([ -8 ], getQueryResults(buildQuery(i, "[ \"4\" ]", "\"12\"")));
assertEqual([ 4 ], getQueryResults(buildQuery(i, "[ \"4\" ]", "\"abc\"")));
assertEqual([ -5 ], getQueryResults(buildQuery(i, "[ -4 ]", "1")));
assertEqual([ -1 ], getQueryResults(buildQuery(i, "{ }", "1")));
assertEqual([ -1 ], getQueryResults(buildQuery(i, "{ }", "\"1\"")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "\"a\"", "\"b\"")));
}
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test binary multiplication
////////////////////////////////////////////////////////////////////////////////
testBinaryMultiplication1 : function () {
var expected = [ 0 ];
var actual = getQueryResults("RETURN 0 * 100");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(0) * 100");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test binary multiplication
////////////////////////////////////////////////////////////////////////////////
testBinaryMultiplication2 : function () {
var expected = [ 0 ];
var actual = getQueryResults("RETURN 100 * 0");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(100) * 0");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test binary multiplication
////////////////////////////////////////////////////////////////////////////////
testBinaryMultiplication3 : function () {
var expected = [ 37 ];
var actual = getQueryResults("RETURN 1 * 37");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(1) * 37");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test binary multiplication
////////////////////////////////////////////////////////////////////////////////
testBinaryMultiplication4 : function () {
var expected = [ 37 ];
var actual = getQueryResults("RETURN 37 * 1");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(37) * 1");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test binary multiplication
////////////////////////////////////////////////////////////////////////////////
testBinaryMultiplication5 : function () {
var expected = [ 76.5 ];
var actual = getQueryResults("RETURN 9 * 8.5");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(9) * 8.5");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test binary multiplication
////////////////////////////////////////////////////////////////////////////////
testBinaryMultiplication6 : function () {
var expected = [ -14 ];
var actual = getQueryResults("RETURN -4 * 3.5");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(-4) * 3.5");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test binary multiplication
////////////////////////////////////////////////////////////////////////////////
testBinaryMultiplication7 : function () {
var expected = [ 14 ];
var actual = getQueryResults("RETURN -4 * -3.5");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(-4) * -3.5");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test binary multiplication
////////////////////////////////////////////////////////////////////////////////
testBinaryMultiplicationNonNumeric : function () {
var buildQuery = function(nr, left, right) {
switch (nr) {
case 0:
return `RETURN ${left} * ${right}`;
case 1:
return `RETURN NOOPT(${left}) * ${right}`;
default:
assertTrue(false, "Undefined state");
}
};
for (var i = 0; i < 2; ++i) {
assertEqual([ 0 ], getQueryResults(buildQuery(i, "1", "null")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "1", "false")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "1", "true")));
assertEqual([ 37 ], getQueryResults(buildQuery(i, "37", "true")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "1", "\"0\"")));
assertEqual([ 42 ], getQueryResults(buildQuery(i, "1", "\"42\"")));
assertEqual([ -17 ], getQueryResults(buildQuery(i, "1", "\"-17\"")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "1", "[ ]")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "1", "[ 0 ]")));
assertEqual([ 4 ], getQueryResults(buildQuery(i, "1", "[ 4 ]")));
assertEqual([ -4 ], getQueryResults(buildQuery(i, "1", "[ -4 ]")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "1", "{ }")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "null", "1")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "false", "1")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "true", "1")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "\"0\"", "1")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "\"0\"", "\"1\"")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "\"abc\"", "2")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "2", "\"abc\"")));
assertEqual([ 23 ], getQueryResults(buildQuery(i, "\"23\"", "1")));
assertEqual([ -9 ], getQueryResults(buildQuery(i, "\"-9\"", "1")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "[ ]", "1")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "[ 0 ]", "1")));
assertEqual([ 4 ], getQueryResults(buildQuery(i, "[ 4 ]", "1")));
assertEqual([ -4 ], getQueryResults(buildQuery(i, "[ -4 ]", "1")));
assertEqual([ 36 ], getQueryResults(buildQuery(i, "\"3\"", "12")));
assertEqual([ 36 ], getQueryResults(buildQuery(i, "\"3\"", "\"12\"")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "{ }", "1")));
}
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test binary division
////////////////////////////////////////////////////////////////////////////////
testBinaryDivision1 : function () {
var expected = [ 0 ];
var actual = getQueryResults("RETURN 0 / 1");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(0) / 1");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test binary division
////////////////////////////////////////////////////////////////////////////////
testBinaryDivision2 : function () {
var expected = [ 1 ];
var actual = getQueryResults("RETURN 1 / 1");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(1) / 1");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test binary division
////////////////////////////////////////////////////////////////////////////////
testBinaryDivision3 : function () {
var expected = [ 1 ];
var actual = getQueryResults("RETURN 1.25 / 1.25");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(1.25) / 1.25");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test binary division
////////////////////////////////////////////////////////////////////////////////
testBinaryDivision4 : function () {
var expected = [ 12 ];
var actual = getQueryResults("RETURN 144 / 12");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(144) / 12");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test binary division
////////////////////////////////////////////////////////////////////////////////
testBinaryDivision5 : function () {
var expected = [ -12 ];
var actual = getQueryResults("RETURN -144 / 12");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(-144) / 12");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test binary division
////////////////////////////////////////////////////////////////////////////////
testBinaryDivision6 : function () {
var expected = [ -12 ];
var actual = getQueryResults("RETURN 144 / -12");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(144) / -12");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test binary division
////////////////////////////////////////////////////////////////////////////////
testBinaryDivision7 : function () {
var expected = [ 12 ];
var actual = getQueryResults("RETURN -144 / -12");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(-144) / -12");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test binary division
////////////////////////////////////////////////////////////////////////////////
testBinaryDivision8 : function () {
var expected = [ 1 ];
var actual = getQueryResults("RETURN 1 / 0.5 / 2");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(1) / NOOPT(0.5) / 2");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test binary division
////////////////////////////////////////////////////////////////////////////////
testBinaryDivisionNonNumeric : function () {
var buildQuery = function(nr, left, right) {
switch (nr) {
case 0:
return `RETURN ${left} / ${right}`;
case 1:
return `RETURN NOOPT(${left}) / ${right}`;
default:
assertTrue(false, "Undefined state");
}
};
for (var i = 0; i < 2; ++i) {
assertEqual([ null ], getQueryResults(buildQuery(i, "1", "(1 - 1)")));
assertEqual([ null ], getQueryResults(buildQuery(i, "1", "0")));
assertEqual([ null ], getQueryResults(buildQuery(i, "1","0.0")));
assertEqual([ null ], getQueryResults(buildQuery(i, "1", "(1 / 0)")));
assertEqual([ null ], getQueryResults(buildQuery(i, "1", "null")));
assertEqual([ null ], getQueryResults(buildQuery(i, "1", "false")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "1", "true")));
assertEqual([ 37 ], getQueryResults(buildQuery(i, "37", "true")));
assertEqual([ null ], getQueryResults(buildQuery(i, "1", "\"0\"")));
assertEqual([ 0.25 ], getQueryResults(buildQuery(i, "1", "\"4\"")));
assertEqual([ -2 ], getQueryResults(buildQuery(i, "34", "\"-17\"")));
assertEqual([ null ], getQueryResults(buildQuery(i, "1", "[ ]")));
assertEqual([ null ], getQueryResults(buildQuery(i, "1", "[ 0 ]")));
assertEqual([ 0.25 ], getQueryResults(buildQuery(i, "1", "[ 4 ]")));
assertEqual([ -0.25 ], getQueryResults(buildQuery(i, "1", "[ -4 ]")));
assertEqual([ null ], getQueryResults(buildQuery(i, "1", "{ }")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "null", "1")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "false", "1")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "true", "1")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "\"0\"", "1")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "\"0\"", "\"1\"")));
assertEqual([ 23 ], getQueryResults(buildQuery(i, "\"23\"", "1")));
assertEqual([ -9 ], getQueryResults(buildQuery(i, "\"-9\"", "1")));
assertEqual([ null ], getQueryResults(buildQuery(i, "\"abc\"", "\"abc\"")));
assertEqual([ null ], getQueryResults(buildQuery(i, "1", "\"abc\"")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "[ ]", "1")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "[ 0 ]", "1")));
assertEqual([ 4 ], getQueryResults(buildQuery(i, "[ 4 ]", "1")));
assertEqual([ -4 ], getQueryResults(buildQuery(i, "[ -4 ]", "1")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "[ -4, -3 ]", "1")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "[ \"abc\" ]", "1")));
assertEqual([ 2 ], getQueryResults(buildQuery(i, "[ \"2\" ]", "1")));
assertEqual([ 3 ], getQueryResults(buildQuery(i, "[ \"12\" ]", "4")));
assertEqual([ 3 ], getQueryResults(buildQuery(i, "\"12\"", "4")));
assertEqual([ 3 ], getQueryResults(buildQuery(i, "\"12\"", "\"4\"")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "{ }", "1")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "{ }", "\"1\"")));
assertEqual([ null ], getQueryResults(buildQuery(i, "1", "0")));
}
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test binary modulus
////////////////////////////////////////////////////////////////////////////////
testBinaryModulusInvalid : function () {
var buildQuery = function(nr, left, right) {
switch (nr) {
case 0:
return `RETURN ${left} % ${right}`;
case 1:
return `RETURN NOOPT(${left}) % ${right}`;
default:
assertTrue(false, "Undefined state");
}
};
for (var i = 0; i < 2; ++i) {
assertEqual([ null ], getQueryResults(buildQuery(i, "1", "(1 - 1)")));
assertEqual([ null ], getQueryResults(buildQuery(i, "1", "0")));
assertEqual([ null ], getQueryResults(buildQuery(i, "1", "0.0")));
assertEqual([ null ], getQueryResults(buildQuery(i, "1", "(1 / 0)")));
assertEqual([ null ], getQueryResults(buildQuery(i, "1", "null")));
assertEqual([ null ], getQueryResults(buildQuery(i, "1", "false")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "1", "true")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "37", "true")));
assertEqual([ null ], getQueryResults(buildQuery(i, "1", "\"0\"")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "1", "\"4\"")));
assertEqual([ 3 ], getQueryResults(buildQuery(i, "7", "\"4\"")));
assertEqual([ 3 ], getQueryResults(buildQuery(i, "7", "\"-4\"")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "34", "\"-17\"")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "35", "\"17\"")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "35", "\"-17\"")));
assertEqual([ null ], getQueryResults(buildQuery(i, "1", "[ ]")));
assertEqual([ null ], getQueryResults(buildQuery(i, "1", "[ 0 ]")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "13", "[ 4 ]")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "1", "[ -4 ]")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "13", "[ -4 ]")));
assertEqual([ null ], getQueryResults(buildQuery(i, "1", "{ }")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "null", "1")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "false", "1")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "true", "1")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "\"0\"", "1")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "\"0\"", "\"1\"")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "\"23\"", "1")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "\"23\"", "2")));
assertEqual([ 2 ], getQueryResults(buildQuery(i, "\"23\"", "3")));
assertEqual([ 2 ], getQueryResults(buildQuery(i, "\"23\"", "7")));
assertEqual([ 11 ], getQueryResults(buildQuery(i, "\"23\"", "12")));
assertEqual([ 11 ], getQueryResults(buildQuery(i, "\"23\"", "\"12\"")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "\"-9\"", "1")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "[ ]", "1")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "[ 0 ]", "1")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "[ 4 ]", "1")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "[ 4 ]", "3")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "[ -4 ]", "1")));
assertEqual([ 4 ], getQueryResults(buildQuery(i, "4", "\"5\"")));
assertEqual([ 5 ], getQueryResults(buildQuery(i, "\"12\"", "7")));
assertEqual([ 5 ], getQueryResults(buildQuery(i, "\"12\"", "\"7\"")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "\"abc\"", "2")));
assertEqual([ null ], getQueryResults(buildQuery(i, "\"abc\"", "\"abc\"")));
assertEqual([ null ], getQueryResults(buildQuery(i, "2", "\"abc\"")));
assertEqual([ 0 ], getQueryResults(buildQuery(i, "{ }", "1")));
assertEqual([ null ], getQueryResults(buildQuery(i, "4", "0")));
}
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence1 : function () {
var expected = [ 1 ];
var actual = getQueryResults("RETURN 1 * 0 - 1 / -1");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence2 : function () {
var expected = [ 328 ];
var actual = getQueryResults("RETURN 9 * 9 * 4 - -4 * -1 / -1");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence3 : function () {
var expected = [ -20 ];
var actual = getQueryResults("RETURN -3 + -6 + 8 - 10 + -9");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence4 : function () {
var expected = [ 0 ];
var actual = getQueryResults("RETURN 6 * 3 * 0 / 8");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence5 : function () {
var expected = [ 66 ];
var actual = getQueryResults("RETURN 8 + -7 / -7 - 5 * -10 + 7");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence6 : function () {
var expected = [ 8 ];
var actual = getQueryResults("RETURN 7 + 7 + -5 + -1");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence7 : function () {
var expected = [ 13 ];
var actual = getQueryResults("RETURN 0 / -2 + 9 + 4");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence8 : function () {
var expected = [ 8 ];
var actual = getQueryResults("RETURN 6 - 0 + 5 - 3");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence9 : function () {
var expected = [ 4 ];
var actual = getQueryResults("RETURN 10 / 5 - -5 + 2 - 4 - 1");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence10 : function () {
var expected = [ 14 ];
var actual = getQueryResults("RETURN -4 * -4 + 4 - 4 - -3 + -5");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence11 : function () {
var expected = [ -11 ];
var actual = getQueryResults("RETURN -9 - 8 * -6 / -4 * 1 / 6");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence12 : function () {
var expected = [ 332 ];
var actual = getQueryResults("RETURN -4 * -8 * 10 + 2 - -10");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence13 : function () {
var expected = [ 270 ];
var actual = getQueryResults("RETURN -2 * 7 * -5 + -10 * 5 * -4");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence14 : function () {
var expected = [ -111 ];
var actual = getQueryResults("RETURN -10 * 9 - -8 * -2 - -5 * -10 / 10");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence15 : function () {
var expected = [ 2 ];
var actual = getQueryResults("RETURN 7 * 0 * -9 / 10 + 2");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence16 : function () {
var expected = [ 9 ];
var actual = getQueryResults("RETURN 7 - 5 - 2 - -9");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence17 : function () {
var expected = [ -2 ];
var actual = getQueryResults("RETURN -9 - -9 + -8 + 6 * 1");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence18 : function () {
var expected = [ -9 ];
var actual = getQueryResults("RETURN -1 * 9 - 0 / -4");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence19 : function () {
var expected = [ -112 ];
var actual = getQueryResults("RETURN -4 / -1 * -4 / 1 * 7");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence20 : function () {
var expected = [ 7 ];
var actual = getQueryResults("RETURN 5 - 7 - -9 + 0");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence21 : function () {
var expected = [ -34 ];
var actual = getQueryResults("RETURN -8 + 6 + -7 * 4 - 4");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence22 : function () {
var expected = [ -41 ];
var actual = getQueryResults("RETURN -7 - 7 * 5 - 8 / -8");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence23 : function () {
var expected = [ -25 ];
var actual = getQueryResults("RETURN 6 + -1 * -10 * -4 - 1 * -9");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence24 : function () {
var expected = [ 0 ];
var actual = getQueryResults("RETURN 5 * -1 + -5 + -1 * -10");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence25 : function () {
var expected = [ 30 ];
var actual = getQueryResults("RETURN -9 * -3 - 9 / -3");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence26 : function () {
var expected = [ -8 ];
var actual = getQueryResults("RETURN 0 + -4 + -2 / -1 - -6 / -1");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence27 : function () {
var expected = [ 198 ];
var actual = getQueryResults("RETURN -9 * 3 * -9 - -4 * -8 - 8 - 5");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence28 : function () {
var expected = [ -1 ];
var actual = getQueryResults("RETURN -1 * 4 * 0 + -1");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence29 : function () {
var expected = [ 9 ];
var actual = getQueryResults("RETURN -2 + -6 - -9 + 8 + 0 * -8");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence30 : function () {
var expected = [ 65 ];
var actual = getQueryResults("RETURN -8 * -8 - 5 - 6 / -1");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence31 : function () {
var expected = [ 12 ];
var actual = getQueryResults("RETURN 4 + -8 + -9 + 5 * 5");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence32 : function () {
var expected = [ -4 ];
var actual = getQueryResults("RETURN 0 * 4 * -1 + -1 - 3");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence33 : function () {
var expected = [ 293 ];
var actual = getQueryResults("RETURN 9 * 4 * 8 - -5");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence34 : function () {
var expected = [ 5 ];
var actual = getQueryResults("RETURN 4 * 2 + 3 * -1");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence35 : function () {
var expected = [ 60 ];
var actual = getQueryResults("RETURN 5 * 0 * 10 - 6 / 1 * -10");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence36 : function () {
var expected = [ 600 ];
var actual = getQueryResults("RETURN 4 * 5 - 9 * -8 * 8 - -4 - 0");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence37 : function () {
var expected = [ 114 ];
var actual = getQueryResults("RETURN -5 * 7 * -1 - 9 * -10 + -3 - 8");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence38 : function () {
var expected = [ 22 ];
var actual = getQueryResults("RETURN 6 - 10 * -2 / 10 * 8 - 0 / -8");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence39 : function () {
var expected = [ 7 ];
var actual = getQueryResults("RETURN -5 + -10 * -6 + 6 + -6 * 9");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence40 : function () {
var expected = [ 54 ];
var actual = getQueryResults("RETURN -1 - -1 + 4 - 10 * -5");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence41 : function () {
var expected = [ -33 ];
var actual = getQueryResults("RETURN -9 - 2 + 2 - 0 + -4 * 6");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence42 : function () {
var expected = [ 45 ];
var actual = getQueryResults("RETURN -5 * -9 - 5 * -7 * 0 * 5");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence43 : function () {
var expected = [ -78 ];
var actual = getQueryResults("RETURN -4 * 9 - 6 * 5 - 9 + -6 + 3");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence44 : function () {
var expected = [ -1 ];
var actual = getQueryResults("RETURN -10 / -2 + -8 + -4 - -6");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence45 : function () {
var expected = [ 45 ];
var actual = getQueryResults("RETURN 3 + 8 - 3 * -6 - -5 + 7 - -4");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence46 : function () {
var expected = [ 68 ];
var actual = getQueryResults("RETURN -1 - -9 * 9 + -5 - 7");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence47 : function () {
var expected = [ 1 ];
var actual = getQueryResults("RETURN -2 - -10 + -7 + 0 / 7");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence48 : function () {
var expected = [ -20 ];
var actual = getQueryResults("RETURN 10 * -5 / 5 + -8 + -8 + 6");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence49 : function () {
var expected = [ 6 ];
var actual = getQueryResults("RETURN 7 + -4 / -2 - 0 + 4 + -7");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence50 : function () {
var expected = [ -140 ];
var actual = getQueryResults("RETURN 5 * 1 * 7 * -2 * -2 * -1");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence51 : function () {
var expected = [ -281 ];
var actual = getQueryResults("RETURN 4 * 10 * -7 - 9 - -8");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence52 : function () {
var expected = [ 34 ];
var actual = getQueryResults("RETURN 3 * 8 - -1 - -9");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence53 : function () {
var expected = [ 10 ];
var actual = getQueryResults("RETURN -2 + -1 + 4 + 9");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence54 : function () {
var expected = [ -23 ];
var actual = getQueryResults("RETURN 1 - -6 * -5 + 6 + 0 * 3");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence55 : function () {
var expected = [ -6 ];
var actual = getQueryResults("RETURN 0 * 0 - 0 + -6");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence56 : function () {
var expected = [ 23 ];
var actual = getQueryResults("RETURN 10 - -4 * 7 - 10 - 0 + -5");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence57 : function () {
var expected = [ 11 ];
var actual = getQueryResults("RETURN 1 - 6 - -4 - -4 * 5 + -4 - 4");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence58 : function () {
var expected = [ 8 ];
var actual = getQueryResults("RETURN 7 - 9 - -8 + 2");
assertEqual(expected, actual);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test precedence
////////////////////////////////////////////////////////////////////////////////
testArithmeticPrecedence59 : function () {
var expected = [ 40 ];
var actual = getQueryResults("RETURN -7 - -4 - -2 + 10 * 5 - 9");
assertEqual(expected, actual);
}
};
}
////////////////////////////////////////////////////////////////////////////////
/// @brief executes the test suite
////////////////////////////////////////////////////////////////////////////////
jsunity.run(ahuacatlArithmeticTestSuite);
return jsunity.done();