diff --git a/parser/queryTests.json b/parser/queryTests.json new file mode 100644 index 00000000..f9a5f56f --- /dev/null +++ b/parser/queryTests.json @@ -0,0 +1,250 @@ +{ + +"dateTests" : { + "schema" : [{ + "name": "DateObject", + "properties": [{ "name": "date", "type": "date" }] + }], + "objects": [ + { "type": "DateObject", "value": [10000] }, + { "type": "DateObject", "value": [10001] }, + { "type": "DateObject", "value": [10002] } + ], + "tests": [ + ["QueryCount", 2, "DateObject", "date < $0", [2, "date"]], + ["QueryCount", 3, "DateObject", "date <= $0", [2, "date"]], + ["QueryCount", 2, "DateObject", "date > $0", [0, "date"]], + ["QueryCount", 3, "DateObject", "date >= $0", [0, "date"]], + ["QueryCount", 1, "DateObject", "date == $0", [0, "date"]], + ["QueryCount", 2, "DateObject", "date != $0", [0, "date"]], + + ["QueryThrows", "DateObject", "date == 'not a date'"], + ["QueryThrows", "DateObject", "date == 1"], + ["QueryThrows", "DateObject", "date == $0", 1] + ] +}, + +"boolTests" : { + "schema" : [{ + "name": "BoolObject", + "properties": [{ "name": "boolCol", "type": "bool" }] + }], + "objects": [ + { "type": "BoolObject", "value": [false] }, + { "type": "BoolObject", "value": [true] }, + { "type": "BoolObject", "value": [true] } + ], + "tests": [ + ["QueryCount", 2, "BoolObject", "boolCol == true"], + ["QueryCount", 1, "BoolObject", "boolCol==false"], + ["QueryCount", 1, "BoolObject", "boolCol != true"], + ["QueryCount", 2, "BoolObject", "true == boolCol"], + ["QueryCount", 2, "BoolObject", "boolCol == TRUE"], + ["QueryCount", 1, "BoolObject", "boolCol == FALSE"], + ["QueryCount", 2, "BoolObject", "boolCol == $0", true], + ["QueryCount", 1, "BoolObject", "boolCol == $0", false], + ["QueryCount", 0, "BoolObject", "boolCol == true && boolCol == false"], + ["QueryCount", 3, "BoolObject", "boolCol == true || boolCol == false"], + + ["QueryThrows", "BoolObject", "boolCol == 0"], + ["QueryThrows", "BoolObject", "boolCol == 1"], + ["QueryThrows", "BoolObject", "boolCol == 'not a bool'"], + ["QueryThrows", "BoolObject", "boolCol == $0", "not a bool"], + ["QueryThrows", "BoolObject", "boolCol > true"], + ["QueryThrows", "BoolObject", "boolCol >= true"], + ["QueryThrows", "BoolObject", "boolCol < true"], + ["QueryThrows", "BoolObject", "boolCol <= true"], + ["QueryThrows", "BoolObject", "boolCol BEGINSWITH true"], + ["QueryThrows", "BoolObject", "boolCol CONTAINS true"], + ["QueryThrows", "BoolObject", "boolCol ENDSWITH true"] + ] +}, + +"intTests" : { + "schema" : [{ + "name": "IntObject", + "properties": [{ "name": "intCol", "type": "int" }] + }], + "objects": [ + { "type": "IntObject", "value": [-1] }, + { "type": "IntObject", "value": [0] }, + { "type": "IntObject", "value": [100] } + ], + "tests": [ + ["QueryCount", 1, "IntObject", "intCol == -1"], + ["QueryCount", 1, "IntObject", "intCol==0"], + ["QueryCount", 0, "IntObject", "1 == intCol"], + ["QueryCount", 2, "IntObject", "intCol != 0"], + ["QueryCount", 2, "IntObject", "intCol > -1"], + ["QueryCount", 3, "IntObject", "intCol >= -1"], + ["QueryCount", 2, "IntObject", "intCol < 100"], + ["QueryCount", 3, "IntObject", "intCol <= 100"], + ["QueryCount", 1, "IntObject", "intCol > 0x1F"], + ["QueryCount", 1, "IntObject", "intCol == $0", 100], + + ["QueryThrows", "IntObject", "intCol == 'not an int'"], + ["QueryThrows", "IntObject", "intCol == true"], + ["QueryThrows", "IntObject", "intCol == $0", "not an int"], + ["QueryThrows", "IntObject", "intCol BEGINSWITH 1"], + ["QueryThrows", "IntObject", "intCol CONTAINS 1"], + ["QueryThrows", "IntObject", "intCol ENDSWITH 1"] + ] +}, + +"floatTests" : { + "schema" : [{ + "name": "FloatObject", + "properties": [{ "name": "floatCol", "type": "float" }] + }], + "objects": [ + { "type": "FloatObject", "value": [-1.001] }, + { "type": "FloatObject", "value": [0.0] }, + { "type": "FloatObject", "value": [100.2] } + ], + "tests": [ + ["QueryCount", 1, "FloatObject", "floatCol == -1.001"], + ["QueryCount", 1, "FloatObject", "floatCol = 0"], + ["QueryCount", 0, "FloatObject", "1 == floatCol"], + ["QueryCount", 2, "FloatObject", "floatCol != 0"], + ["QueryCount", 2, "FloatObject", "floatCol > -1.001"], + ["QueryCount", 3, "FloatObject", "floatCol >= -1.001"], + ["QueryCount", 2, "FloatObject", "floatCol < 100.2"], + ["QueryCount", 3, "FloatObject", "floatCol <= 100.2"], + ["QueryCount", 1, "FloatObject", "floatCol > 0x1F"], + ["QueryCount", 1, "FloatObject", "floatCol == $0", 100.2], + + ["QueryThrows", "FloatObject", "floatCol == 'not a float'"], + ["QueryThrows", "FloatObject", "floatCol == true"], + ["QueryThrows", "FloatObject", "floatCol == $0", "not a float"], + ["QueryThrows", "FloatObject", "floatCol BEGINSWITH 1"], + ["QueryThrows", "FloatObject", "floatCol CONTAINS 1"], + ["QueryThrows", "FloatObject", "floatCol ENDSWITH 1"], + + ["Disabled", "QueryThrows", "FloatObject", "floatCol = 3.5e+38"], + ["Disabled", "QueryThrows", "FloatObject", "floatCol = -3.5e+38"] + ] +}, + +"doubleTests" : { + "schema" : [{ + "name": "DoubleObject", + "properties": [{ "name": "doubleCol", "type": "double" }] + }], + "objects": [ + { "type": "DoubleObject", "value": [-1.001] }, + { "type": "DoubleObject", "value": [0.0] }, + { "type": "DoubleObject", "value": [100.2] } + ], + "tests": [ + ["QueryCount", 1, "DoubleObject", "doubleCol == -1.001"], + ["QueryCount", 1, "DoubleObject", "doubleCol == 0"], + ["QueryCount", 0, "DoubleObject", "1 == doubleCol"], + ["QueryCount", 2, "DoubleObject", "doubleCol != 0"], + ["QueryCount", 2, "DoubleObject", "doubleCol > -1.001"], + ["QueryCount", 3, "DoubleObject", "doubleCol >= -1.001"], + ["QueryCount", 2, "DoubleObject", "doubleCol < 100.2"], + ["QueryCount", 3, "DoubleObject", "doubleCol <= 100.2"], + ["QueryCount", 1, "DoubleObject", "doubleCol > 0x1F"], + ["QueryCount", 1, "DoubleObject", "doubleCol == $0", 100.2], + + ["QueryThrows", "DoubleObject", "doubleCol == 'not a double'"], + ["QueryThrows", "DoubleObject", "doubleCol == true"], + ["QueryThrows", "DoubleObject", "doubleCol == $0", "not a double"], + ["QueryThrows", "DoubleObject", "doubleCol BEGINSWITH 1"], + ["QueryThrows", "DoubleObject", "doubleCol CONTAINS 1"], + ["QueryThrows", "DoubleObject", "doubleCol ENDSWITH 1"] + ] +}, + +"stringTests" : { + "schema" : [{ + "name": "StringObject", + "properties": [{ "name": "stringCol", "type": "string" }] + }], + "objects": [ + { "type": "StringObject", "value": ["A"] }, + { "type": "StringObject", "value": ["a"] }, + { "type": "StringObject", "value": ["a"] }, + { "type": "StringObject", "value": ["C"] }, + { "type": "StringObject", "value": ["c"] }, + { "type": "StringObject", "value": ["abc"] }, + { "type": "StringObject", "value": ["ABC"] }, + { "type": "StringObject", "value": [""] }, + { "type": "StringObject", "value": ["\\\"\\n\\0\\r\\\\'"] } + ], + "tests": [ + ["QueryCount", 2, "StringObject", "stringCol == 'a'"], + ["QueryCount", 1, "StringObject", "'c' == stringCol"], + ["QueryCount", 2, "StringObject", "stringCol == \"a\""], + ["QueryCount", 1, "StringObject", "stringCol=='abc'"], + ["QueryCount", 1, "StringObject", "stringCol == ''"], + ["QueryCount", 8, "StringObject", "stringCol != ''"], + ["QueryCount", 1, "StringObject", "stringCol == \"\\\"\\n\\0\\r\\\\'\""], + ["QueryCount", 3, "StringObject", "stringCol BEGINSWITH 'a'"], + ["QueryCount", 1, "StringObject", "stringCol beginswith 'ab'"], + ["QueryCount", 0, "StringObject", "stringCol BEGINSWITH 'abcd'"], + ["QueryCount", 2, "StringObject", "stringCol BEGINSWITH 'A'"], + ["QueryCount", 2, "StringObject", "stringCol ENDSWITH 'c'"], + ["QueryCount", 1, "StringObject", "stringCol endswith 'bc'"], + ["QueryCount", 9, "StringObject", "stringCol ENDSWITH ''"], + ["QueryCount", 1, "StringObject", "stringCol CONTAINS 'b'"], + ["QueryCount", 2, "StringObject", "stringCol contains 'c'"], + ["QueryCount", 9, "StringObject", "stringCol CONTAINS ''"], + ["QueryCount", 2, "StringObject", "stringCol == $0", "a"], + ["QueryCount", 2, "StringObject", "stringCol ENDSWITH $0", "c"], + + ["QueryThrows", "StringObject", "stringCol == true"], + ["QueryThrows", "StringObject", "stringCol == 123"], + ["QueryThrows", "StringObject", "stringCol CONTAINS $0", 1], + + ["Disabled", "QueryCount", 3, "StringObject", "stringCol ==[c] 'a'"], + ["Disabled", "QueryCount", 5, "StringObject", "stringCol BEGINSWITH[c] 'A'"], + ["Disabled", "QueryCount", 4, "StringObject", "stringCol ENDSWITH[c] 'c'"], + ["Disabled", "QueryCount", 2, "StringObject", "stringCol CONTAINS[c] 'B'"] + ] +}, + +"binaryTests" : { + "schema" : [{ + "name": "BinaryObject", + "properties": [{ "name": "binaryCol", "type": "data" }] + }], + "objects": [ + { "type": "BinaryObject", "value": [[1, 100, 233, 255, 0]] }, + { "type": "BinaryObject", "value": [[1, 100]] }, + { "type": "BinaryObject", "value": [[100]] }, + { "type": "BinaryObject", "value": [[]] }, + { "type": "BinaryObject", "value": [[255, 0]] } + ], + "tests": [ + ["QueryCount", 1, "BinaryObject", "binaryCol == $0", [1, "binaryCol"]], + ["QueryCount", 1, "BinaryObject", "$0 == binaryCol", [2, "binaryCol"]], + ["QueryCount", 4, "BinaryObject", "binaryCol != $0", [0, "binaryCol"]], + ["QueryCount", 1, "BinaryObject", "binaryCol BEGINSWITH $0", [0, "binaryCol"]], + ["QueryCount", 2, "BinaryObject", "binaryCol BEGINSWITH $0", [1, "binaryCol"]], + ["QueryCount", 2, "BinaryObject", "binaryCol ENDSWITH $0", [4, "binaryCol"]], + ["QueryCount", 3, "BinaryObject", "binaryCol CONTAINS $0", [2, "binaryCol"]] + ] +}, + +"objectTests" : { + "schema" : [ + { "name": "IntObject", "properties": [{ "name": "intCol", "type": "int" }] }, + { "name": "LinkObject", "properties": [{ "name": "linkCol", "type": "IntObject" }] } + ], + "objects": [ + { "type": "LinkObject", "value": [[1]] }, + { "type": "LinkObject", "value": [[2]] }, + { "type": "LinkObject", "value": [null] } + ], + "tests": [ + ["QueryCount", 1, "LinkObject", "linkCol == $0", [0, "linkCol"]], + ["QueryCount", 1, "LinkObject", "$0 == linkCol", [1, "linkCol"]], + ["QueryCount", 2, "LinkObject", "linkCol != $0", [0, "linkCol"]], + + ["QueryThrows", "LinkObject", "linkCol > $0", [0, "linkCol"]], + ["QueryThrows", "LinkObject", "intCol = $0", [0, "linkCol"]] + ] +} + +}