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 */
/*global assertEqual */
/*global assertEqual, assertTrue */
////////////////////////////////////////////////////////////////////////////////
/// @brief tests for query language, functions
///
@ -219,16 +219,30 @@ function ahuacatlStringFunctionsTestSuite () {
////////////////////////////////////////////////////////////////////////////////
testContainsFirst : function () {
assertQueryError(errors.ERROR_QUERY_FUNCTION_ARGUMENT_NUMBER_MISMATCH.code, "RETURN CONTAINS(\"test\")");
assertQueryError(errors.ERROR_QUERY_FUNCTION_ARGUMENT_NUMBER_MISMATCH.code, "RETURN CONTAINS(\"test\", \"test\", \"test\", \"test\")");
assertQueryError(errors.ERROR_QUERY_FUNCTION_ARGUMENT_NUMBER_MISMATCH.code, "RETURN CONTAINS()");
assertEqual([ -1 ], getQueryResults("RETURN CONTAINS(\"test\", \"test2\", \"test3\")"));
assertEqual([ true ], getQueryResults("RETURN CONTAINS(null, null)"));
assertEqual([ true ], getQueryResults("RETURN CONTAINS(4, 4)"));
assertEqual([ true ], getQueryResults("RETURN CONTAINS({ }, { })"));
assertEqual([ false ], getQueryResults("RETURN CONTAINS([ ], [ ])"));
assertEqual([ false ], getQueryResults("RETURN CONTAINS(null, \"yes\")"));
assertEqual([ false ], getQueryResults("RETURN CONTAINS(3, null)"));
var buildQuery = function(nr, input) {
switch (nr) {
case 0:
return `RETURN CONTAINS(${input})`;
case 1:
return `RETURN NOOPT(CONTAINS(${input}))`;
case 2:
return `RETURN NOOPT(V8(CONTAINS(${input})))`;
default:
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 actual = getQueryResults("RETURN CONTAINS(\"test2\", \"test\")");
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 actual = getQueryResults("RETURN CONTAINS(\"xxasdxx\", \"asd\")");
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 actual = getQueryResults("RETURN CONTAINS(\"test\", \"test2\")");
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 actual = getQueryResults("RETURN CONTAINS(\"test123\", \"\")");
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 actual = getQueryResults("RETURN CONTAINS(\"\", \"test123\")");
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 () {
assertEqual([ 0 ], getQueryResults("RETURN CONTAINS(\"test2\", \"test\", true)"));
assertEqual([ true ], getQueryResults("RETURN CONTAINS(\"test2\", \"test\", false)"));
assertEqual([ 1 ], getQueryResults("RETURN CONTAINS(\"test2\", \"est\", true)"));
assertEqual([ true ], getQueryResults("RETURN CONTAINS(\"test2\", \"est\", false)"));
assertEqual([ -1 ], getQueryResults("RETURN CONTAINS(\"this is a long test\", \"this is a test\", true)"));
assertEqual([ false ], getQueryResults("RETURN CONTAINS(\"this is a long test\", \"this is a test\", false)"));
assertEqual([ 18 ], getQueryResults("RETURN CONTAINS(\"this is a test of this test\", \"this test\", true)"));
assertEqual([ true ], getQueryResults("RETURN CONTAINS(\"this is a test of this test\", \"this test\", false)"));
assertEqual([ -1 ], getQueryResults("RETURN CONTAINS(\"this is a test of this test\", \"This\", true)"));
assertEqual([ false ], getQueryResults("RETURN CONTAINS(\"this is a test of this test\", \"This\", false)"));
var buildQuery = function(nr, input) {
switch (nr) {
case 0:
return `RETURN CONTAINS(${input})`;
case 1:
return `RETURN NOOPT(CONTAINS(${input}))`;
case 2:
return `RETURN NOOPT(V8(CONTAINS(${input})))`;
default:
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)");
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);
});
},