1
0
Fork 0

Added tests for CXX implementation of CONTAINS

This commit is contained in:
Michael Hackstein 2015-10-30 11:29:17 +01:00
parent ac1cf36daf
commit 76c62c090a
1 changed files with 91 additions and 21 deletions

View File

@ -1,5 +1,5 @@
/*jshint globalstrict:false, strict:false, maxlen: 500 */ /*jshint globalstrict:false, strict:false, maxlen: 500 */
/*global assertEqual */ /*global assertEqual, assertTrue */
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
/// @brief tests for query language, functions /// @brief tests for query language, functions
/// ///
@ -219,16 +219,30 @@ function ahuacatlStringFunctionsTestSuite () {
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
testContainsFirst : function () { testContainsFirst : function () {
assertQueryError(errors.ERROR_QUERY_FUNCTION_ARGUMENT_NUMBER_MISMATCH.code, "RETURN CONTAINS(\"test\")"); var buildQuery = function(nr, input) {
assertQueryError(errors.ERROR_QUERY_FUNCTION_ARGUMENT_NUMBER_MISMATCH.code, "RETURN CONTAINS(\"test\", \"test\", \"test\", \"test\")"); switch (nr) {
assertQueryError(errors.ERROR_QUERY_FUNCTION_ARGUMENT_NUMBER_MISMATCH.code, "RETURN CONTAINS()"); case 0:
assertEqual([ -1 ], getQueryResults("RETURN CONTAINS(\"test\", \"test2\", \"test3\")")); return `RETURN CONTAINS(${input})`;
assertEqual([ true ], getQueryResults("RETURN CONTAINS(null, null)")); case 1:
assertEqual([ true ], getQueryResults("RETURN CONTAINS(4, 4)")); return `RETURN NOOPT(CONTAINS(${input}))`;
assertEqual([ true ], getQueryResults("RETURN CONTAINS({ }, { })")); case 2:
assertEqual([ false ], getQueryResults("RETURN CONTAINS([ ], [ ])")); return `RETURN NOOPT(V8(CONTAINS(${input})))`;
assertEqual([ false ], getQueryResults("RETURN CONTAINS(null, \"yes\")")); default:
assertEqual([ false ], getQueryResults("RETURN CONTAINS(3, null)")); assertTrue(false, "Undefined state");
}
};
for (var i = 0; i < 3; ++i) {
assertQueryError(errors.ERROR_QUERY_FUNCTION_ARGUMENT_NUMBER_MISMATCH.code, buildQuery(i, "\"test\""));
assertQueryError(errors.ERROR_QUERY_FUNCTION_ARGUMENT_NUMBER_MISMATCH.code, buildQuery(i, "\"test\", \"test\", \"test\", \"test\""));
assertQueryError(errors.ERROR_QUERY_FUNCTION_ARGUMENT_NUMBER_MISMATCH.code, buildQuery(i, ""));
assertEqual([ -1 ], getQueryResults(buildQuery(i, "\"test\", \"test2\", \"test3\"")));
assertEqual([ true ], getQueryResults(buildQuery(i, "null, null")));
assertEqual([ true ], getQueryResults(buildQuery(i, "4, 4")));
assertEqual([ true ], getQueryResults(buildQuery(i, "{ }, { }")));
assertEqual([ false ], getQueryResults(buildQuery(i, "[ ], [ ]")));
assertEqual([ false ], getQueryResults(buildQuery(i, "null, \"yes\"")));
assertEqual([ false ], getQueryResults(buildQuery(i, "3, null")));
}
}, },
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
@ -239,6 +253,12 @@ function ahuacatlStringFunctionsTestSuite () {
var expected = [true]; var expected = [true];
var actual = getQueryResults("RETURN CONTAINS(\"test2\", \"test\")"); var actual = getQueryResults("RETURN CONTAINS(\"test2\", \"test\")");
assertEqual(expected, actual); assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(CONTAINS(\"test2\", \"test\"))");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(V8(CONTAINS(\"test2\", \"test\")))");
assertEqual(expected, actual);
}, },
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
@ -249,6 +269,12 @@ function ahuacatlStringFunctionsTestSuite () {
var expected = [true]; var expected = [true];
var actual = getQueryResults("RETURN CONTAINS(\"xxasdxx\", \"asd\")"); var actual = getQueryResults("RETURN CONTAINS(\"xxasdxx\", \"asd\")");
assertEqual(expected, actual); assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(CONTAINS(\"xxasdxx\", \"asd\"))");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(V8(CONTAINS(\"xxasdxx\", \"asd\")))");
assertEqual(expected, actual);
}, },
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
@ -259,6 +285,12 @@ function ahuacatlStringFunctionsTestSuite () {
var expected = [false]; var expected = [false];
var actual = getQueryResults("RETURN CONTAINS(\"test\", \"test2\")"); var actual = getQueryResults("RETURN CONTAINS(\"test\", \"test2\")");
assertEqual(expected, actual); assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(CONTAINS(\"test\", \"test2\"))");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(V8(CONTAINS(\"test\", \"test2\")))");
assertEqual(expected, actual);
}, },
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
@ -269,6 +301,12 @@ function ahuacatlStringFunctionsTestSuite () {
var expected = [false]; var expected = [false];
var actual = getQueryResults("RETURN CONTAINS(\"test123\", \"\")"); var actual = getQueryResults("RETURN CONTAINS(\"test123\", \"\")");
assertEqual(expected, actual); assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(CONTAINS(\"test123\", \"\"))");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(V8(CONTAINS(\"test123\", \"\")))");
assertEqual(expected, actual);
}, },
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
@ -279,6 +317,12 @@ function ahuacatlStringFunctionsTestSuite () {
var expected = [false]; var expected = [false];
var actual = getQueryResults("RETURN CONTAINS(\"\", \"test123\")"); var actual = getQueryResults("RETURN CONTAINS(\"\", \"test123\")");
assertEqual(expected, actual); assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(CONTAINS(\"\", \"test123\"))");
assertEqual(expected, actual);
actual = getQueryResults("RETURN NOOPT(V8(CONTAINS(\"\", \"test123\")))");
assertEqual(expected, actual);
}, },
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
@ -286,16 +330,30 @@ function ahuacatlStringFunctionsTestSuite () {
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
testContainsIndexed : function () { testContainsIndexed : function () {
assertEqual([ 0 ], getQueryResults("RETURN CONTAINS(\"test2\", \"test\", true)")); var buildQuery = function(nr, input) {
assertEqual([ true ], getQueryResults("RETURN CONTAINS(\"test2\", \"test\", false)")); switch (nr) {
assertEqual([ 1 ], getQueryResults("RETURN CONTAINS(\"test2\", \"est\", true)")); case 0:
assertEqual([ true ], getQueryResults("RETURN CONTAINS(\"test2\", \"est\", false)")); return `RETURN CONTAINS(${input})`;
assertEqual([ -1 ], getQueryResults("RETURN CONTAINS(\"this is a long test\", \"this is a test\", true)")); case 1:
assertEqual([ false ], getQueryResults("RETURN CONTAINS(\"this is a long test\", \"this is a test\", false)")); return `RETURN NOOPT(CONTAINS(${input}))`;
assertEqual([ 18 ], getQueryResults("RETURN CONTAINS(\"this is a test of this test\", \"this test\", true)")); case 2:
assertEqual([ true ], getQueryResults("RETURN CONTAINS(\"this is a test of this test\", \"this test\", false)")); return `RETURN NOOPT(V8(CONTAINS(${input})))`;
assertEqual([ -1 ], getQueryResults("RETURN CONTAINS(\"this is a test of this test\", \"This\", true)")); default:
assertEqual([ false ], getQueryResults("RETURN CONTAINS(\"this is a test of this test\", \"This\", false)")); assertTrue(false, "Undefined state");
}
};
for (var i = 0; i < 3; ++i) {
assertEqual([ 0 ], getQueryResults(buildQuery(i, "\"test2\", \"test\", true")));
assertEqual([ true ], getQueryResults(buildQuery(i, "\"test2\", \"test\", false")));
assertEqual([ 1 ], getQueryResults(buildQuery(i, "\"test2\", \"est\", true")));
assertEqual([ true ], getQueryResults(buildQuery(i, "\"test2\", \"est\", false")));
assertEqual([ -1 ], getQueryResults(buildQuery(i, "\"this is a long test\", \"this is a test\", true")));
assertEqual([ false ], getQueryResults(buildQuery(i, "\"this is a long test\", \"this is a test\", false")));
assertEqual([ 18 ], getQueryResults(buildQuery(i, "\"this is a test of this test\", \"this test\", true")));
assertEqual([ true ], getQueryResults(buildQuery(i, "\"this is a test of this test\", \"this test\", false")));
assertEqual([ -1 ], getQueryResults(buildQuery(i, "\"this is a test of this test\", \"This\", true")));
assertEqual([ false ], getQueryResults(buildQuery(i, "\"this is a test of this test\", \"This\", false")));
}
}, },
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
@ -315,6 +373,18 @@ function ahuacatlStringFunctionsTestSuite () {
actual = getQueryResults("RETURN CONTAINS(" + JSON.stringify(value) + ", " + JSON.stringify(value) + ", false)"); actual = getQueryResults("RETURN CONTAINS(" + JSON.stringify(value) + ", " + JSON.stringify(value) + ", false)");
assertEqual([ true ], actual); assertEqual([ true ], actual);
actual = getQueryResults("RETURN NOOPT(CONTAINS(" + JSON.stringify(value) + ", 'foobar', false))");
assertEqual([ false ], actual);
actual = getQueryResults("RETURN NOOPT(CONTAINS(" + JSON.stringify(value) + ", " + JSON.stringify(value) + ", false))");
assertEqual([ true ], actual);
actual = getQueryResults("RETURN NOOPT(V8(CONTAINS(" + JSON.stringify(value) + ", 'foobar', false)))");
assertEqual([ false ], actual);
actual = getQueryResults("RETURN NOOPT(V8(CONTAINS(" + JSON.stringify(value) + ", " + JSON.stringify(value) + ", false)))");
assertEqual([ true ], actual);
}); });
}, },