|
|
# strings tests
|
|
|
---
|
|
|
test case: 'strings comparison, brackets outside of the first operand'
|
|
|
in:
|
|
|
expression: '("ccc")="ccc"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'strings comparison, broken expression'
|
|
|
in:
|
|
|
expression: '("c\"c\"c")="ccc'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: unterminated string at "ccc".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'strings comparison, location of brackets around operands is different'
|
|
|
in:
|
|
|
expression: '("ccc")="(ccc)"'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'strings comparison, brackets inside of the second operand'
|
|
|
in:
|
|
|
expression: '"ccc"="(ccc)"'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'strings comparison, castable to ints'
|
|
|
in:
|
|
|
expression: '" 2"="2"'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'strings comparison, single bracket'
|
|
|
in:
|
|
|
expression: '"ccc"=("ccc"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: expected closing parenthesis at "".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'strings comparison'
|
|
|
in:
|
|
|
expression: '"ccc"="ccc"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'strings that are ints comparison'
|
|
|
in:
|
|
|
expression: '"222"="222"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'strings empty space 1'
|
|
|
in:
|
|
|
expression: '" "=" "'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'strings empty space 2'
|
|
|
in:
|
|
|
expression: '" "=" "'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'strings null terminators'
|
|
|
in:
|
|
|
expression: '"\0"="\0"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: invalid escape sequence at "\0"="\0"".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'strings are quotes 1'
|
|
|
in:
|
|
|
expression: '"\"\""="\"\""'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'strings are quotes 2'
|
|
|
in:
|
|
|
expression: '"\"\""="\""'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'strings are escapes 1'
|
|
|
in:
|
|
|
expression: '"\"="\"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value ""=" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'strings are escapes 2'
|
|
|
in:
|
|
|
expression: '"\\"="\\"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'strings are escapes 3'
|
|
|
in:
|
|
|
expression: '"\\\"="\\\"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "\"=" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'strings are escapes 4'
|
|
|
in:
|
|
|
expression: '"\\\\"="\\\\"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'strings comparison, carriage return 1'
|
|
|
in:
|
|
|
expression: "\"a\r\nb\"=\"a\nb\""
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'strings comparison, carriage return 2'
|
|
|
in:
|
|
|
expression: "\"a\nb\"=\"a\r\nb\""
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'strings comparison, carriage return 3'
|
|
|
in:
|
|
|
expression: "\"a\r\rb\"=\"a\r\n\rb\""
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'strings comparison, carriage return 4'
|
|
|
in:
|
|
|
expression: "(\"a\r\rb\"=\"a\r\n\rb\") + (\"\r\"=\"\") + (\"\r\"=\"\r\")"
|
|
|
out:
|
|
|
value: 2
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'strings comparison, carriage return 5'
|
|
|
in:
|
|
|
expression: "\"\r\r\r\ra\\\"\"=\"a\\\"\r\""
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'strings comparison, operands are different'
|
|
|
in:
|
|
|
expression: '"ccc"<>("cccc")'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'strings comparison, empty strings'
|
|
|
in:
|
|
|
expression: '(" ")<>(" ")'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'strings comparison, brackets are outside of the second operand'
|
|
|
in:
|
|
|
expression: '"ccc"<>("ccc")'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'strings comparison, brackets are outside of both operands'
|
|
|
in:
|
|
|
expression: '("ccc")<>("")'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'strings comparison, empty operands 1'
|
|
|
in:
|
|
|
expression: '("")<>("")'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'strings comparison, empty operands 2'
|
|
|
in:
|
|
|
expression: '("\0")<>("\0")'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: invalid escape sequence at "\0")<>("\0")".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'strings comparison, empty operands 3'
|
|
|
in:
|
|
|
expression: '("\\0")<>("\\0")'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'strings comparison, empty operands 3'
|
|
|
in:
|
|
|
expression: '("")<>""'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'strings comparison, operands are are brackets'
|
|
|
in:
|
|
|
expression: '"()"="()"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'string castable'
|
|
|
in:
|
|
|
expression: '"11"'
|
|
|
out:
|
|
|
value: 11
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'not_castable_str 1'
|
|
|
in:
|
|
|
expression: '"11x"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "11x" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'not_castable_str 2'
|
|
|
in:
|
|
|
expression: '"11_"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "11_" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'not_castable_str 3'
|
|
|
in:
|
|
|
expression: '"11_!@#$%^&*()"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "11_!@#$%^&*()" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'string castable negative'
|
|
|
in:
|
|
|
expression: '"-100000000000"'
|
|
|
out:
|
|
|
value: -100000000000
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'string castable with suffix'
|
|
|
in:
|
|
|
expression: '"2.5M"'
|
|
|
out:
|
|
|
value: 2621440
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'string castable with suffix str comparison 1'
|
|
|
in:
|
|
|
expression: '"2.5M"="2621440"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'string castable with suffix str comparison 2'
|
|
|
in:
|
|
|
expression: '"2.5M"<>"2621440"'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'string castable with suffix str comparison 3'
|
|
|
in:
|
|
|
expression: '"2.5M"="2.5M"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'string castable with suffix int comparison 1'
|
|
|
in:
|
|
|
expression: '"2.5M"=2621440'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'string castable with suffix int comparison 2'
|
|
|
in:
|
|
|
expression: '"2.5M"<>2621440'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'string castable with suffix, suffix comparison 1'
|
|
|
in:
|
|
|
expression: '"2.5M"=2.5M'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'string castable with suffix, suffix comparison 2'
|
|
|
in:
|
|
|
expression: '-1K="-1K"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'unicode 1'
|
|
|
in:
|
|
|
expression: '"//etc//пример_номер_1"="//etc//пример_номер_1"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'unicode 2'
|
|
|
in:
|
|
|
expression: '"пример номер 1"="просто пример"'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
|
|
|
# scientific notation tests
|
|
|
---
|
|
|
test case: 'scientific notation, simple comparison'
|
|
|
in:
|
|
|
expression: '"1e+0"=1'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'scientific notation, large int number'
|
|
|
in:
|
|
|
expression: '"1e+40"=10000000000000000000000000000000000000000'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'scientific notation, large string number'
|
|
|
in:
|
|
|
expression: '"1e+40"="10000000000000000000000000000000000000000"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'scientific notation, negative exponent'
|
|
|
in:
|
|
|
expression: '"1e-40"="0.00000000000000000000000000000000000000001"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'scientific notation, precision limit holds'
|
|
|
in:
|
|
|
expression: '"1e+40"=10000000000000001000000000000000000000000'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'scientific notation, precision limit does not hold'
|
|
|
in:
|
|
|
expression: '"1e+40"=10000000000000000100000000000000000000000'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'scientific notation, precision limit does not hold 2'
|
|
|
in:
|
|
|
expression: '"1e+40"<>10000000000000000000000000000000000000001'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'scientific notation, negative number'
|
|
|
in:
|
|
|
expression: '-10000000000000000000000000000000000000000="-1e+40"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'scientific notation, negative number 2'
|
|
|
in:
|
|
|
expression: '-10000000000000000000000000000000000000000="1e+40"'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'scientific notation, addition'
|
|
|
in:
|
|
|
expression: '("-1e+40"+10000000000000000000000000000000000000000)=0'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
|
|
|
# '-' operator tests
|
|
|
---
|
|
|
test case: 'term 8, one on its own'
|
|
|
in:
|
|
|
expression: '-"1"'
|
|
|
out:
|
|
|
value: -1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 8, one with brackets'
|
|
|
in:
|
|
|
expression: '-("1")'
|
|
|
out:
|
|
|
value: -1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 8, not_castable_str negative 1'
|
|
|
in:
|
|
|
expression: '-"a"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "a" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 8, not_castable_str negative 2'
|
|
|
in:
|
|
|
expression: '"-a"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "-a" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 8, not_castable_str quotes'
|
|
|
in:
|
|
|
expression: '"\""'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value """ is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 8, not_castable_str quotes 2'
|
|
|
in:
|
|
|
expression: '"\"\""'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value """" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 8, not_castable_str quotes 3'
|
|
|
in:
|
|
|
expression: '"3"="\"\""'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 8, not_castable_str quotes 4'
|
|
|
in:
|
|
|
expression: '3="\"\""'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 8, not_castable_str quotes 5'
|
|
|
in:
|
|
|
expression: '"\"\"\""="\"\"\""'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 8, not_castable_str quotes 6'
|
|
|
in:
|
|
|
expression: '\"\"\"="\"\"\"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: expected numeric token at "\"\"\"="\"\"\"".'
|
|
|
return: 'FAIL'
|
|
|
|
|
|
# 'not' operator tests
|
|
|
---
|
|
|
test case: 'term 7, one'
|
|
|
in:
|
|
|
expression: 'not "1"'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 7, zero'
|
|
|
in:
|
|
|
expression: 'not "0"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 7, negative'
|
|
|
in:
|
|
|
expression: 'not "-2"'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 7, no space'
|
|
|
in:
|
|
|
expression: 'not"2"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: expected numeric token at "not"2"".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 7, not_castable_str'
|
|
|
in:
|
|
|
expression: 'not "a"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "a" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
|
|
|
# '/' and '*' operator tests
|
|
|
---
|
|
|
test case: 'term 6 / str and str'
|
|
|
in:
|
|
|
expression: '"3"/"2"'
|
|
|
out:
|
|
|
value: 1.5
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 6 / int and str'
|
|
|
in:
|
|
|
expression: '3/"2"'
|
|
|
out:
|
|
|
value: 1.5
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 6 / str and int'
|
|
|
in:
|
|
|
expression: '"3"/2'
|
|
|
out:
|
|
|
value: 1.5
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 6 / not_castable_str and int'
|
|
|
in:
|
|
|
expression: '"a"/2'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "a" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 6 / int and not_castable_str'
|
|
|
in:
|
|
|
expression: '2/"y"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "y" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 6 / int and not_castable_string negative'
|
|
|
in:
|
|
|
expression: '2/"-y"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "-y" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 6 / not_castable_str and not_castable_str'
|
|
|
in:
|
|
|
expression: '"-"/"-y"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "-" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 6 / castable_str and not_castable_str'
|
|
|
in:
|
|
|
expression: '"9"/"-y"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "-y" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 6 / not_castable_str and zero int'
|
|
|
in:
|
|
|
expression: '"-z"/0'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "-z" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 6 / not_castable_str and zero str'
|
|
|
in:
|
|
|
expression: '"-z"/"0"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "-z" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 6 / str and zero str'
|
|
|
in:
|
|
|
expression: '"1"/"0"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: division by zero.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 6 * str and str'
|
|
|
in:
|
|
|
expression: '"3"*"2"'
|
|
|
out:
|
|
|
value: 6
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 6 * str and int'
|
|
|
in:
|
|
|
expression: '"3"*2'
|
|
|
out:
|
|
|
value: 6
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 6 * int and str'
|
|
|
in:
|
|
|
expression: '3*"2"'
|
|
|
out:
|
|
|
value: 6
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 6 * int and not_castable_str'
|
|
|
in:
|
|
|
expression: '3*"3a"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "3a" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 6 * not_castable_str and int'
|
|
|
in:
|
|
|
expression: '"bb"*3'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "bb" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 6 * not_castable_str and not_castable_str'
|
|
|
in:
|
|
|
expression: '"bb"*""'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "bb" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
|
|
|
# '+' and '-' operator tests
|
|
|
---
|
|
|
test case: 'term 5 + str and str'
|
|
|
in:
|
|
|
expression: '"3"+"2"'
|
|
|
out:
|
|
|
value: 5
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 5 + str and int'
|
|
|
in:
|
|
|
expression: '"3"+2'
|
|
|
out:
|
|
|
value: 5
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 5 + int and str'
|
|
|
in:
|
|
|
expression: '3+"2"'
|
|
|
out:
|
|
|
value: 5
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 5 + int and not_castable_str'
|
|
|
in:
|
|
|
expression: '3+"a"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "a" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 5 + not_castable_str and int'
|
|
|
in:
|
|
|
expression: '"a"+"0"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "a" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 5 + castable_str and not_castable_str'
|
|
|
in:
|
|
|
expression: '"3"+"a"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "a" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 5 - str and str'
|
|
|
in:
|
|
|
expression: '"3"-"2"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 5 - int and str'
|
|
|
in:
|
|
|
expression: '2-"3"'
|
|
|
out:
|
|
|
value: -1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 5 - str and int'
|
|
|
in:
|
|
|
expression: '"3"-3'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 5 - not_castable_str and int'
|
|
|
in:
|
|
|
expression: '"a"-3'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "a" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 5 - int and not_castable_str'
|
|
|
in:
|
|
|
expression: '4-"aa"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "aa" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
|
|
|
# '<=', '=>', '<' and '>' operator tests
|
|
|
---
|
|
|
test case: 'term 4 <= str and str 1'
|
|
|
in:
|
|
|
expression: '"3"<="3"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 4 <= str and str 2'
|
|
|
in:
|
|
|
expression: '"3"<="2"'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 4 <= str and int'
|
|
|
in:
|
|
|
expression: '"3"<=3'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 4 <= str and int'
|
|
|
in:
|
|
|
expression: '"3"<=2'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 4 <= int and not_castable_str'
|
|
|
in:
|
|
|
expression: '3<="badger"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "badger" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 4 <= not_castable_str and castable_str'
|
|
|
in:
|
|
|
expression: '"badger"<="3"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "badger" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 4 >= str and str 1'
|
|
|
in:
|
|
|
expression: '"3">="2"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 4 >= not_castable_str and int'
|
|
|
in:
|
|
|
expression: '"```````">=2'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "```````" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 4 >= int and not_castable_str'
|
|
|
in:
|
|
|
expression: '-(10)>="()"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "()" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 4 >= str and str 2'
|
|
|
in:
|
|
|
expression: '"3">="4"'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 4 >= str and int'
|
|
|
in:
|
|
|
expression: '"3">=3'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 4 >= str and int'
|
|
|
in:
|
|
|
expression: '"3">=5'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 4 < str and str 1'
|
|
|
in:
|
|
|
expression: '"3"<"3"'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 4 < str and str 2'
|
|
|
in:
|
|
|
expression: '"3"<"4"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 4 < str and int'
|
|
|
in:
|
|
|
expression: '"3"<3'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 4 < str and int'
|
|
|
in:
|
|
|
expression: '"3"<5'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 4 < not_castable_str and int'
|
|
|
in:
|
|
|
expression: '"4g4"<5'
|
|
|
out:
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "4g4" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 4 < str and not_castable_str'
|
|
|
in:
|
|
|
expression: '"999999999999"<"5_"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "5_" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 4 > str and str 1'
|
|
|
in:
|
|
|
expression: '"3">"3"'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 4 > str and str 2'
|
|
|
in:
|
|
|
expression: '"5">"4"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 4 > str and int'
|
|
|
in:
|
|
|
expression: '"3">3'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 4 > str and int'
|
|
|
in:
|
|
|
expression: '"3">0'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 4 > str and not_castable_str'
|
|
|
in:
|
|
|
expression: '"3">"+"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "+" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 4 > not_castable_str and int'
|
|
|
in:
|
|
|
expression: '"d3">7'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "d3" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
|
|
|
# '=' and '<>' operator tests
|
|
|
---
|
|
|
test case: 'term 3 = str and str 1'
|
|
|
in:
|
|
|
expression: '"3"="3"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 3 = str and str 2'
|
|
|
in:
|
|
|
expression: '"3"="0"'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 3 = str and str 2, empty space'
|
|
|
in:
|
|
|
expression: '" 3"="3"'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 3 = not_castable_str and not_castable_str 1'
|
|
|
in:
|
|
|
expression: '"badger"="badger"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 3 = not_castable_str and not_castable_str 2'
|
|
|
in:
|
|
|
expression: '"badger"="badgex"'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 3 = not_castable_str and not_castable_str 3'
|
|
|
in:
|
|
|
expression: '"!@#$%^&*()_+"="!@#$%^&*()_+"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 3 = str and int 1'
|
|
|
in:
|
|
|
expression: '"3"=3'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 3 = str and int 2'
|
|
|
in:
|
|
|
expression: '"3"=0'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 3 = str and int empty space'
|
|
|
in:
|
|
|
expression: '" 3"=3'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 3 = int and str 1'
|
|
|
in:
|
|
|
expression: '3="3"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 3 = int and str 2'
|
|
|
in:
|
|
|
expression: '3="0"'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 3 = int and str empty space'
|
|
|
in:
|
|
|
expression: '0=" 0"'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 3 = int and not_castable_str'
|
|
|
in:
|
|
|
expression: '3="_______________________"'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 3 <> str and str 1'
|
|
|
in:
|
|
|
expression: '"3"<>"3"'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 3 <> str and str 2'
|
|
|
in:
|
|
|
expression: '"3"<>"0"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 3 <> not_castable_str and not_castable_str 1'
|
|
|
in:
|
|
|
expression: '"badger"<>"badger"'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 3 <> not_castable_str and not_castable_str 2'
|
|
|
in:
|
|
|
expression: '"badger"<>"badgex"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 3 <> not_castable_str and not_castable_str 3'
|
|
|
in:
|
|
|
expression: '"!@#$%^&*()_+"<>"!@#$%^&*()_+"'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 3 <> str and int 1'
|
|
|
in:
|
|
|
expression: '"3"<>3'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 3 <> str and int 2'
|
|
|
in:
|
|
|
expression: '"3"<>10'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 3 <> int and str 1'
|
|
|
in:
|
|
|
expression: '3<>"3"'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 3 <> int and str 2'
|
|
|
in:
|
|
|
expression: '3<>"-10"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 3 <> not_castable_str and int'
|
|
|
in:
|
|
|
expression: '"&&&&&&&&&&"<>-89'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
|
|
|
# 'and' operator tests
|
|
|
---
|
|
|
test case: 'term 2 and str and str 1'
|
|
|
in:
|
|
|
expression: '"1" and "1"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 2 and str and str 2'
|
|
|
in:
|
|
|
expression: '"1" and "0"'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 2 and str and not_castable_str'
|
|
|
in:
|
|
|
expression: '"1" and "\\t"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "\t" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 2 and not_castable_str and int'
|
|
|
in:
|
|
|
expression: '"\\t" and 1'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "\t" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 2 and not_castable_str and not_castable_str'
|
|
|
in:
|
|
|
expression: '"\\t" and "\\t"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "\t" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 2 and str and int 1'
|
|
|
in:
|
|
|
expression: '"-1" and 1'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 2 and str and int 2'
|
|
|
in:
|
|
|
expression: '"0" and 0'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 2 and int and str 1'
|
|
|
in:
|
|
|
expression: '-1 and "-1"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 2 and int and str 1'
|
|
|
in:
|
|
|
expression: '0 and "100"'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
|
|
|
# 'or' operator tests
|
|
|
---
|
|
|
test case: 'term 1 or str and str 1'
|
|
|
in:
|
|
|
expression: '"1" or "1"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 1 or str and str 2'
|
|
|
in:
|
|
|
expression: '"00" or "0"'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 1 or str and not_castable_str'
|
|
|
in:
|
|
|
expression: '"1" or "\\n"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "\n" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 1 or not_castable_str and int'
|
|
|
in:
|
|
|
expression: '"\\n\\n\\n" and 1'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "\n\n\n" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 1 or not_castable_str and not_castable_str 1'
|
|
|
in:
|
|
|
expression: '"\\n" and "\\n"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "\n" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 1 or not_castable_str and not_castable_str 2'
|
|
|
in:
|
|
|
expression: '"\\n" and "\\n"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "\n" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'term 1 or str and int 1'
|
|
|
in:
|
|
|
expression: '"-1" or 1'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 1 or str and int 2'
|
|
|
in:
|
|
|
expression: '"0" or 0'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 1 or int and str 1'
|
|
|
in:
|
|
|
expression: '-1 or "-1"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'term 1 or int and str 1'
|
|
|
in:
|
|
|
expression: '0 or "-0"'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
|
|
|
# int tests
|
|
|
---
|
|
|
test case: 'Valid expression "-1"'
|
|
|
in:
|
|
|
expression: '-1'
|
|
|
out:
|
|
|
value: -1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "- 1"'
|
|
|
in:
|
|
|
expression: '- 1'
|
|
|
out:
|
|
|
value: -1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression " - 1K "'
|
|
|
in:
|
|
|
expression: ' - 1K '
|
|
|
out:
|
|
|
value: -1024
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "not -1"'
|
|
|
in:
|
|
|
expression: 'not -1'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "not 1"'
|
|
|
in:
|
|
|
expression: 'not 1'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "not 0"'
|
|
|
in:
|
|
|
expression: 'not 0'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "1.5 * 4"'
|
|
|
in:
|
|
|
expression: '1.5 * 4'
|
|
|
out:
|
|
|
value: 6
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "1024K/4M"'
|
|
|
in:
|
|
|
expression: '1024K/4M'
|
|
|
out:
|
|
|
value: 0.25
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "1+2'
|
|
|
in:
|
|
|
expression: '1+2'
|
|
|
out:
|
|
|
value: 3
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "1-2"'
|
|
|
in:
|
|
|
expression: '1-2'
|
|
|
out:
|
|
|
value: -1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "1<2"'
|
|
|
in:
|
|
|
expression: '1<2'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "1<1"'
|
|
|
in:
|
|
|
expression: '1<1'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "2<1"'
|
|
|
in:
|
|
|
expression: '2<1'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "1<=2"'
|
|
|
in:
|
|
|
expression: '1<=2'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "2<=2"'
|
|
|
in:
|
|
|
expression: '2<=2'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "3<=2"'
|
|
|
in:
|
|
|
expression: '3<=2'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "2>=1"'
|
|
|
in:
|
|
|
expression: '2>=1'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "2>=2"'
|
|
|
in:
|
|
|
expression: '2>=2'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "1>=2"'
|
|
|
in:
|
|
|
expression: '1>=2'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "2>1"'
|
|
|
in:
|
|
|
expression: '2>1'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "1>1"'
|
|
|
in:
|
|
|
expression: '1>1'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "1>2"'
|
|
|
in:
|
|
|
expression: '1>2'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "1=1"'
|
|
|
in:
|
|
|
expression: '1=1'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "1=2"'
|
|
|
in:
|
|
|
expression: '1=2'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "1<>1"'
|
|
|
in:
|
|
|
expression: '1<>1'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "1<>2"'
|
|
|
in:
|
|
|
expression: '1<>2'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "1 and 1"'
|
|
|
in:
|
|
|
expression: '1 and 1'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "0 and 1"'
|
|
|
in:
|
|
|
expression: '0 and 1'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "1 and 0"'
|
|
|
in:
|
|
|
expression: '1 and 0'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "0 and 0"'
|
|
|
in:
|
|
|
expression: '0 and 0'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "1 or 1"'
|
|
|
in:
|
|
|
expression: '1 or 1'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "0 or 1"'
|
|
|
in:
|
|
|
expression: '0 or 1'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "1 or 0"'
|
|
|
in:
|
|
|
expression: '1 or 0'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "0 or 0"'
|
|
|
in:
|
|
|
expression: '0 or 0'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "not 1 or 1" int int'
|
|
|
in:
|
|
|
expression: 'not 1 or 1'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "not 1 or 1" str str'
|
|
|
in:
|
|
|
expression: 'not "1" or "1"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "not 1 or 1" str int'
|
|
|
in:
|
|
|
expression: 'not "1" or 1'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "not 0 and 0" int str'
|
|
|
in:
|
|
|
expression: 'not 0 and "0"'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "-1-2-3-4" int int int int'
|
|
|
in:
|
|
|
expression: '-1-2-3-4'
|
|
|
out:
|
|
|
value: -10
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "-1-2-3-4" int str str str'
|
|
|
in:
|
|
|
expression: '-1-"2"-"3"-"4"'
|
|
|
out:
|
|
|
value: -10
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "-1-2-3-4" int str not_castable_str str'
|
|
|
in:
|
|
|
expression: '-1-"2"-"badger"-"4"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "badger" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Valid expression "-1-(2-3-4)"'
|
|
|
in:
|
|
|
expression: '-1-(2-3-4)'
|
|
|
out:
|
|
|
value: 4
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "-1-(2-(3-4))"'
|
|
|
in:
|
|
|
expression: '-1-(2-(3-4))'
|
|
|
out:
|
|
|
value: -4
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "-1/2/3/4"'
|
|
|
in:
|
|
|
expression: '-1/2/3/4'
|
|
|
out:
|
|
|
value: -0.0416666666667
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "-1/(2/3/4)"'
|
|
|
in:
|
|
|
expression: '-1/(2/3/4)'
|
|
|
out:
|
|
|
value: -6
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "1/(2/(3/4))" int int int int'
|
|
|
in:
|
|
|
expression: '-1/(2/(3/4))'
|
|
|
out:
|
|
|
value: -0.375
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "1/(2/(3/4))" int str int str'
|
|
|
in:
|
|
|
expression: '-1/("2"/(3/"4"))'
|
|
|
out:
|
|
|
value: -0.375
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "5 + 10 / 3 * (not 0 + (1 or 0) + (1K and 1M))" all ints'
|
|
|
in:
|
|
|
expression: '5 + 10 / 3 * (not 0 + (1 or 0) + (1K and 1M))'
|
|
|
out:
|
|
|
value: 15
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "5 + 10 / 3 * (not 0 + (1 or 0) + (1K and 1M))" ints and strings'
|
|
|
in:
|
|
|
expression: '"5" + 10 / 3 * (not "0" + ("1" or 0) + (1K and 1M))'
|
|
|
out:
|
|
|
value: 15
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "3 * not 1 + (5 = 2 + 3) / 1000000000G + (1/10/100/1000 <> 1/1000000)"'
|
|
|
in:
|
|
|
expression: '3 * not 1 + (5 = 2 + 3) / 1000000000G + (1/10/100/1000 <> 1/1000000)'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "2 * 3 * 5 * 7 = 300 + 4 * -30 - -20 + 10" all ints'
|
|
|
in:
|
|
|
expression: '2 * 3 * 5 * 7 = 300 + 4 * -30 - -20 + 10'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "2 * 3 * 5 * 7 = 300 + 4 * -30 - -20 + 10" all strings'
|
|
|
in:
|
|
|
expression: '"2" * "3" * "5" * "7" = "300" + "4" * "-30" - -"20" + "10"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "-5 + 10 * -6 + 1e+2 + "1e+3" - 700 / (49 * (1 / (2 + 5))) = 935"'
|
|
|
in:
|
|
|
expression: '-5 + 10 * -6 + 1e+2 + "1e+3" - 700 / (49 * (1 / (2 + 5))) = 935'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "1<2=2<1"'
|
|
|
in:
|
|
|
expression: '1<2=2<1'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "1<2<>2<1"'
|
|
|
in:
|
|
|
expression: '1<2<>2<1'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "0<>1<2<>0"'
|
|
|
in:
|
|
|
expression: '0<>1<2<>0'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "0<1<=1>=1>0"'
|
|
|
in:
|
|
|
expression: '0<1<=1>=1>0'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "1/0.2"'
|
|
|
in:
|
|
|
expression: '1/0.2'
|
|
|
out:
|
|
|
value: 5
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "(1-(2=2))or(1/100000)"'
|
|
|
in:
|
|
|
expression: '(1-(2=2))or(1/100000)'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "(1-(2=2))or(1/1000000)"'
|
|
|
in:
|
|
|
expression: '(1-(2=2))or(1/1000000)'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "(1-(2=2))or(1/2000000)"'
|
|
|
in:
|
|
|
expression: '(1-(2=2))or(1/2000000)'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "1K-1 < 2 * 512 and not(0000000000000000000000000000000000000000000000000000000000000000000000000)"'
|
|
|
in:
|
|
|
expression: '1K-1 < 2 * 512 and not(0000000000000000000000000000000000000000000000000000000000000000000000000)'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "2.5K = 256 * 10 and (not(1)or(1))" all ints'
|
|
|
in:
|
|
|
expression: '2.5K = 256 * 10 and (not(1)or(1))'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "2.5K = 256 * 10 and (not(1)or(1))" all strings'
|
|
|
in:
|
|
|
expression: '"2.5K" = "256" * "10" and (not("1")or("1"))'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "not(not(not(not(not(not 1)))))"'
|
|
|
in:
|
|
|
expression: 'not(not(not(not(not(not 1)))))'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "-(-(-(-(-(-2.G)))))" int'
|
|
|
in:
|
|
|
expression: '-(-(-(-(-(-2.G)))))'
|
|
|
out:
|
|
|
value: 2147483648 # 2*GIBIBYTE
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "-(-(-(-(-(-2.G)))))" string'
|
|
|
in:
|
|
|
expression: '-(-(-(-(-("-2.G")))))'
|
|
|
out:
|
|
|
value: 2147483648 # 2*GIBIBYTE
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "-(-(-(-(-(-.1T)))))"'
|
|
|
in:
|
|
|
expression: '-(-(-(-(-(-.1T)))))'
|
|
|
out:
|
|
|
value: 109951162777.6 # 0.1*TEBIBYTE
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "not 0 <> not 1"'
|
|
|
in:
|
|
|
expression: 'not 0 <> not 1'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "not 0K >= not 1"'
|
|
|
in:
|
|
|
expression: 'not 0K >= not 1'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "not 00.M > not 1"'
|
|
|
in:
|
|
|
expression: 'not 00.M > not 1'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "not .000G > not 1" all ints'
|
|
|
in:
|
|
|
expression: 'not .000G > not 1'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "not .000G > not 1" all strings'
|
|
|
in:
|
|
|
expression: 'not ".000G" > not "1"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression " 1 + 2 * 3 = 7 and ( - 1 or - 2 ) and not 0 "'
|
|
|
in:
|
|
|
expression: ' 1 + 2 * 3 = 7 and ( - 1 or - 2 ) and not 0 '
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "(1+((2)*(3))=(7)and(-(1)or(-(2)))and(not(0)))"'
|
|
|
in:
|
|
|
expression: '(1+((2)*(3))=(7)and(-(1)or(-(2)))and(not(0)))'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "\t1\t+\t2\t*\t3\t=\t7\tand\t(\t-\t1\tor\t-\t2\t)\tand\tnot\t0\t" all ints'
|
|
|
in:
|
|
|
expression: "\t1\t+\t2\t*\t3\t=\t7\tand\t(\t-\t1\tor\t-\t2\t)\tand\tnot\t0\t"
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "\t1\t+\t2\t*\t3\t=\t7\tand\t(\t-\t1\tor\t-\t2\t)\tand\tnot\t0\t" all strings'
|
|
|
in:
|
|
|
expression: "\t\"1\"\t+\t\"2\"\t*\t\"3\"\t=\t\"7\"\tand\t(\t-\t\"1\"\tor\t-\t\"2\"\t)\tand\tnot\t\"0\"\t"
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "\r1\r+\r2\r*\r3\r=\r7\rand\r(\r-\r1\ror\r-\r2\r)\rand\rnot\r0\r"'
|
|
|
in:
|
|
|
expression: "\r1\r+\r2\r*\r3\r=\r7\rand\r(\r-\r1\ror\r-\r2\r)\rand\rnot\r0\r"
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "\n1\n+\n2\n*\n3\n=\n7\nand\n(\n-\n1\nor\n-\n2\n)\nand\nnot\n0\n" all ints'
|
|
|
in:
|
|
|
expression: "\n1\n+\n2\n*\n3\n=\n7\nand\n(\n-\n1\nor\n-\n2\n)\nand\nnot\n0\n"
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "\n1\n+\n2\n*\n3\n=\n7\nand\n(\n-\n1\nor\n-\n2\n)\nand\nnot\n0\n" some ints some strings'
|
|
|
in:
|
|
|
expression: "\n1\n+\"0\"+\n2\n*\n3\n=\n7\nand\n(\n-\n1\nor\n-\n\"2\"\n)\nand\nnot\n\"0\"\n"
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "(((((((((((((((((((((((((((((((1)))))))))))))))))))))))))))))))" int'
|
|
|
in:
|
|
|
expression: '(((((((((((((((((((((((((((((((1)))))))))))))))))))))))))))))))' # 32 levels
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "(((((((((((((((((((((((((((((((1)))))))))))))))))))))))))))))))" string'
|
|
|
in:
|
|
|
expression: '((((((((((((((((((((((((((((((("1")))))))))))))))))))))))))))))))' # 32 levels
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-1)))))))))))))))))))))))))))))))" int'
|
|
|
in:
|
|
|
expression: '-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-1)))))))))))))))))))))))))))))))' # 32 levels
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-1)))))))))))))))))))))))))))))))" str'
|
|
|
in:
|
|
|
expression: '-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-("-1")))))))))))))))))))))))))))))))' # 32 levels
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-1)))))))))))))))))))))))))))))))" not_castable_str'
|
|
|
in:
|
|
|
expression: '-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-("-")))))))))))))))))))))))))))))))' # 32 levels
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "-" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
|
|
|
---
|
|
|
test case: 'Valid expression "17179869184 > 17179869184"'
|
|
|
in:
|
|
|
expression: '17179869184 > 17179869184'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "17179869184 < 17179869184"'
|
|
|
in:
|
|
|
expression: '17179869184 < 17179869184'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "17179869184 = 17179869184"'
|
|
|
in:
|
|
|
expression: '17179869184 = 17179869184'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "1 > 1 or 1 < 1 or 1 = 1"'
|
|
|
in:
|
|
|
expression: '1 > 1 or 1 < 1 or 1 = 1'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "0 > 0 or 0 < 0 or 0 = 0" all ints'
|
|
|
in:
|
|
|
expression: '0 > 0 or 0 < 0 or 0 = 0'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "0 > 0 or 0 < 0 or 0 = 0" some ints some strings'
|
|
|
in:
|
|
|
expression: '0 > "0" or 0 < 0 or "0" = 0'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "0 > 0 or 0 < 0 or 0 = 0" all strings'
|
|
|
in:
|
|
|
expression: '"0" > "0" or "0" < "0" or "0" = "0"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "17179869184 > 17179869184 or 17179869184 < 17179869184 or 17179869184 = 17179869184"'
|
|
|
in:
|
|
|
expression: '17179869184 > 17179869184 or 17179869184 < 17179869184 or 17179869184 = 17179869184'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "17179869184.000001 > 17179869184 or 17179869184.000001 < 17179869184 or 17179869184.000001 = 17179869184"'
|
|
|
in:
|
|
|
expression: '17179869184 > 17179869184.000001 or 17179869184 < 17179869184.000001 or 17179869184.000001 = 17179869184'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "17179869184 > 17179869184.000001 or 17179869184 < 17179869184.000001 or 17179869184 = 17179869184.000001" all ints'
|
|
|
in:
|
|
|
expression: '17179869184 > 17179869184.000001 or 17179869184 < 17179869184.000001 or 17179869184 = 17179869184.000001'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "17179869184 > 17179869184.000001 or 17179869184 < 17179869184.000001 or 17179869184 = 17179869184.000001" some ints some strings'
|
|
|
in:
|
|
|
expression: '"17179869184" > 17179869184.000001 or 17179869184 < "17179869184.000001" or 17179869184 = "17179869184.000001"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "17179869184.000001 > 17179869184"'
|
|
|
in:
|
|
|
expression: '17179869184.000001 > 17179869184'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "17179869184.000001 = 17179869184" all ints'
|
|
|
in:
|
|
|
expression: '17179869184.000001 = 17179869184'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "17179869184.000001 = 17179869184" some ints some strings'
|
|
|
in:
|
|
|
expression: '"17179869184.000001" = 17179869184'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "17179869184.000001 < 17179869184"'
|
|
|
in:
|
|
|
expression: '17179869184.000001 < 17179869184'
|
|
|
out:
|
|
|
value: 0
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "17179869184.000001 <= 17179869184"'
|
|
|
in:
|
|
|
expression: '17179869184.000001 <= 17179869184'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "17179869184.000001 >= 17179869184" ints'
|
|
|
in:
|
|
|
expression: '17179869184.000001 >= 17179869184'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Valid expression "17179869184.000001 >= 17179869184" string and int'
|
|
|
in:
|
|
|
expression: '"17179869184.000001" >= 17179869184'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Invalid expression ""'
|
|
|
in:
|
|
|
expression: ''
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: unexpected end of expression.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "" string'
|
|
|
in:
|
|
|
expression: "\"\""
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: unexpected end of expression.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "+1"'
|
|
|
in:
|
|
|
expression: '+1'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: expected numeric token at "+1".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "+1" string'
|
|
|
in:
|
|
|
expression: '+"1"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: expected numeric token at "+"1"".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "--1"'
|
|
|
in:
|
|
|
expression: '--1'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: expected numeric token at "-1".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "--1" string'
|
|
|
in:
|
|
|
expression: '--"1"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: expected numeric token at "-"1"".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Expression "-"-1"" is valid'
|
|
|
in:
|
|
|
expression: '-"-1"'
|
|
|
out:
|
|
|
value: 1
|
|
|
return: 'SUCCEED'
|
|
|
---
|
|
|
test case: 'Invalid expression "--1" string 3'
|
|
|
in:
|
|
|
expression: '"--1"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "--1" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "not1"'
|
|
|
in:
|
|
|
expression: 'not1'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: expected numeric token at "not1".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "1not"'
|
|
|
in:
|
|
|
expression: '1not'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: expected numeric token at "1not".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "not-1"'
|
|
|
in:
|
|
|
expression: 'not-1'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: expected numeric token at "not-1".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "not-1" string'
|
|
|
in:
|
|
|
expression: 'not-"1"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: expected numeric token at "not-"1"".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "-not 1"'
|
|
|
in:
|
|
|
expression: '-not 1'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: expected numeric token at "not 1".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "-not 1" string'
|
|
|
in:
|
|
|
expression: '-not "1"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: expected numeric token at "not "1"".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "- not(1)"'
|
|
|
in:
|
|
|
expression: '- not(1)'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: expected numeric token at "not(1)".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "not not 1"'
|
|
|
in:
|
|
|
expression: 'not not 1'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: expected numeric token at "not 1".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "not not 1" string'
|
|
|
in:
|
|
|
expression: 'not not "1"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: expected numeric token at "not "1"".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "1and 1"'
|
|
|
in:
|
|
|
expression: '1and 1'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: expected numeric token at "1and 1".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "1and 1" str 1'
|
|
|
in:
|
|
|
expression: '1and "1"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: expected numeric token at "1and "1"".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "1and 1" str 2'
|
|
|
in:
|
|
|
expression: '"1"and 1'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: unexpected token at "and 1".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "1or 1"'
|
|
|
in:
|
|
|
expression: '1or 1'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: expected numeric token at "1or 1".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "1or 1" str'
|
|
|
in:
|
|
|
expression: '1or "1"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: expected numeric token at "1or "1"".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "1 or1"'
|
|
|
in:
|
|
|
expression: '1 or1'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: unexpected token at "or1".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "1or 1" str'
|
|
|
in:
|
|
|
expression: '"1"or 1'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: unexpected token at "or 1".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "1 or1" string'
|
|
|
in:
|
|
|
expression: '"1" or1'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: unexpected token at "or1".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "1..2"'
|
|
|
in:
|
|
|
expression: '1..2'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: expected numeric token at "1..2".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "1..2" string 1'
|
|
|
in:
|
|
|
expression: '"1"..2'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: unexpected token at "..2".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "1..2" string 2'
|
|
|
in:
|
|
|
expression: '1.."2"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: expected numeric token at "1.."2"".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "1..2" string 3'
|
|
|
in:
|
|
|
expression: '"1".."2"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: unexpected token at ".."2"".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "1.K2"'
|
|
|
in:
|
|
|
expression: '1.K2'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: expected numeric token at "1.K2".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "1.K2" string 1'
|
|
|
in:
|
|
|
expression: '1.K"2"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: unexpected token at ""2"".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "1.K2" string 2'
|
|
|
in:
|
|
|
expression: '"1".K2'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: unexpected token at ".K2".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "1.K2" string 3'
|
|
|
in:
|
|
|
expression: '"1.K2"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: value "1.K2" is not a numeric operand.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "1.K2" string 4'
|
|
|
in:
|
|
|
expression: '"1."K2'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: unexpected token at "K2".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "1.2Kand 1"'
|
|
|
in:
|
|
|
expression: '1.2Kand 1'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: expected numeric token at "1.2Kand 1".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "1 andnot 1"'
|
|
|
in:
|
|
|
expression: '1 andnot 1'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: unexpected token at "andnot 1".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "1 andnot 1" string'
|
|
|
in:
|
|
|
expression: '1 andnot "1"'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: unexpected token at "andnot "1"".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "1 andor 1"'
|
|
|
in:
|
|
|
expression: '1 andor 1'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: unexpected token at "andor 1".'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "1/(5-10/2)"'
|
|
|
in:
|
|
|
expression: '1/(5-10/2)'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: division by zero.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "1/(5-10/2)" string'
|
|
|
in:
|
|
|
expression: '"1"/(5-10/2)'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: division by zero.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "1/(5-10/2)" string 2'
|
|
|
in:
|
|
|
expression: '1/(5-"10"/2)'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: division by zero.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "1/(5-10/2)" string 3'
|
|
|
in:
|
|
|
expression: '1/(5-10/"2")'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: division by zero.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "1/(5-10/2)" all strings'
|
|
|
in:
|
|
|
expression: '"1"/("5"-"10"/"2")'
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: division by zero.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "((((((((((((((((((((((((((((((((1))))))))))))))))))))))))))))))))"'
|
|
|
in:
|
|
|
expression: '((((((((((((((((((((((((((((((((1))))))))))))))))))))))))))))))))' # 33 levels
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: nesting level is too deep.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "((((((((((((((((((((((((((((((((1))))))))))))))))))))))))))))))))" string'
|
|
|
in:
|
|
|
expression: '(((((((((((((((((((((((((((((((("1"))))))))))))))))))))))))))))))))' # 33 levels
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: nesting level is too deep.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-1))))))))))))))))))))))))))))))))"'
|
|
|
in:
|
|
|
expression: '-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-1))))))))))))))))))))))))))))))))' # 33 levels
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: nesting level is too deep.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-1))))))))))))))))))))))))))))))))" string'
|
|
|
in:
|
|
|
expression: '-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-("-1"))))))))))))))))))))))))))))))))' # 33 levels
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: nesting level is too deep.'
|
|
|
return: 'FAIL'
|
|
|
---
|
|
|
test case: 'Invalid expression "-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-1))))))))))))))))))))))))))))))))" string 2'
|
|
|
in:
|
|
|
expression: '-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-"1"))))))))))))))))))))))))))))))))' # 33 levels
|
|
|
out:
|
|
|
error: 'Cannot evaluate expression: nesting level is too deep.'
|
|
|
return: 'FAIL'
|
|
|
...
|
|
|
|