summaryrefslogtreecommitdiff
path: root/qpid/cpp/src/tests/Selector.cpp
diff options
context:
space:
mode:
authorAndrew Stitcher <astitcher@apache.org>2015-09-02 22:22:13 +0000
committerAndrew Stitcher <astitcher@apache.org>2015-09-02 22:22:13 +0000
commit492f7a78b8fd2ed7dd4e08184f42b7496aa8fed1 (patch)
tree16abbb56109aa97168555cbe0bb354aeede3b6b7 /qpid/cpp/src/tests/Selector.cpp
parent5a416927a1afb25526a67fec59dce684e99a2dcb (diff)
downloadqpid-python-492f7a78b8fd2ed7dd4e08184f42b7496aa8fed1.tar.gz
QPID-6718: Complete parsing for all styles of numeric literals
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1700915 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src/tests/Selector.cpp')
-rw-r--r--qpid/cpp/src/tests/Selector.cpp38
1 files changed, 36 insertions, 2 deletions
diff --git a/qpid/cpp/src/tests/Selector.cpp b/qpid/cpp/src/tests/Selector.cpp
index 7d6dbf0010..d512476f8b 100644
--- a/qpid/cpp/src/tests/Selector.cpp
+++ b/qpid/cpp/src/tests/Selector.cpp
@@ -166,7 +166,8 @@ QPID_AUTO_TEST_CASE(tokeniseSuccess)
verifyTokeniserSuccess(&tokenise, "<> Identifier", qb::T_NEQ, "<>", " Identifier");
verifyTokeniserSuccess(&tokenise, "(a and b) not c", qb::T_LPAREN, "(", "a and b) not c");
verifyTokeniserSuccess(&tokenise, ") not c", qb::T_RPAREN, ")", " not c");
- verifyTokeniserSuccess(&tokenise, "019kill", qb::T_NUMERIC_EXACT, "019", "kill");
+ verifyTokeniserSuccess(&tokenise, "017kill", qb::T_NUMERIC_EXACT, "017", "kill");
+ verifyTokeniserSuccess(&tokenise, "019kill", qb::T_NUMERIC_EXACT, "01", "9kill");
verifyTokeniserSuccess(&tokenise, "0kill", qb::T_NUMERIC_EXACT, "0", "kill");
verifyTokeniserSuccess(&tokenise, "0.kill", qb::T_NUMERIC_APPROX, "0.", "kill");
verifyTokeniserSuccess(&tokenise, "3.1415=pi", qb::T_NUMERIC_APPROX, "3.1415", "=pi");
@@ -174,7 +175,15 @@ QPID_AUTO_TEST_CASE(tokeniseSuccess)
verifyTokeniserSuccess(&tokenise, "2e5.kill", qb::T_NUMERIC_APPROX, "2e5", ".kill");
verifyTokeniserSuccess(&tokenise, "3.e50easy to kill", qb::T_NUMERIC_APPROX, "3.e50", "easy to kill");
verifyTokeniserSuccess(&tokenise, "34.25e+50easy to kill", qb::T_NUMERIC_APPROX, "34.25e+50", "easy to kill");
- verifyTokeniserSuccess(&tokenise, "34.e-50easy to kill", qb::T_NUMERIC_APPROX, "34.e-50", "easy to kill");
+ verifyTokeniserSuccess(&tokenise, "34de", qb::T_NUMERIC_APPROX, "34d", "e");
+ verifyTokeniserSuccess(&tokenise, "34fuller", qb::T_NUMERIC_APPROX, "34f", "uller");
+ verifyTokeniserSuccess(&tokenise, "34Longer", qb::T_NUMERIC_EXACT, "34L", "onger");
+ verifyTokeniserSuccess(&tokenise, "34littler", qb::T_NUMERIC_EXACT, "34l", "ittler");
+ verifyTokeniserSuccess(&tokenise, "034Longer", qb::T_NUMERIC_EXACT, "034L", "onger");
+ verifyTokeniserSuccess(&tokenise, "034littler", qb::T_NUMERIC_EXACT, "034l", "ittler");
+ verifyTokeniserSuccess(&tokenise, "0X34littler", qb::T_NUMERIC_EXACT, "0X34l", "ittler");
+ verifyTokeniserSuccess(&tokenise, "0X3456_fffflittler", qb::T_NUMERIC_EXACT, "0X3456_ffffl", "ittler");
+ verifyTokeniserSuccess(&tokenise, "0xdead_beafittler", qb::T_NUMERIC_EXACT, "0xdead_beaf", "ittler");
}
QPID_AUTO_TEST_CASE(tokeniseFailure)
@@ -201,6 +210,8 @@ QPID_AUTO_TEST_CASE(tokeniseFailure)
verifyTokeniserFail(&tokeniseNumeric, "34e");
verifyTokeniserFail(&tokeniseNumeric, ".3e+");
verifyTokeniserFail(&tokeniseNumeric, ".3e-.");
+ verifyTokeniserFail(&tokenise, "0b34Longer");
+ verifyTokeniserFail(&tokenise, "0X_34Longer");
}
QPID_AUTO_TEST_CASE(tokenString)
@@ -404,6 +415,29 @@ QPID_AUTO_TEST_CASE(numericEval)
BOOST_CHECK(qb::Selector("-A=0-A").eval(env));
}
+QPID_AUTO_TEST_CASE(numericLiterals)
+{
+ TestSelectorEnv env;
+
+ BOOST_CHECK(qb::Selector(" 9223372036854775807>0").eval(env));
+ BOOST_CHECK(qb::Selector("-9223372036854775807<0").eval(env));
+ BOOST_CHECK_THROW(qb::Selector(" 9223372036854775808>0").eval(env), std::range_error);
+ BOOST_CHECK(qb::Selector("0x8000_0000_0000_0001=-9223372036854775807").eval(env));
+ BOOST_CHECK_THROW(qb::Selector("-9223372036854775809<0").eval(env), std::range_error);
+ BOOST_CHECK(qb::Selector(" 9223372036854775807L<>0").eval(env));
+ BOOST_CHECK(qb::Selector("-9223372036854775807L<>0").eval(env));
+ BOOST_CHECK(qb::Selector("-9223372036854775808<>0").eval(env));
+ BOOST_CHECK(qb::Selector("-9223372036854775808=0x8000_0000_0000_0000").eval(env));
+ BOOST_CHECK(qb::Selector("0x8000_0000_0000_0000<9223372036854775807").eval(env));
+ BOOST_CHECK(qb::Selector(" 0.4f>0.3d").eval(env));
+ BOOST_CHECK(qb::Selector(" 1000_020.4f>0.3d").eval(env));
+ BOOST_CHECK(qb::Selector(" 1000_020.4f>0x800p-3").eval(env));
+ BOOST_CHECK(qb::Selector(" 0x1000_0000=0x1000_0000p0").eval(env));
+ BOOST_CHECK(qb::Selector(" 0xFF=255L").eval(env));
+ BOOST_CHECK(qb::Selector(" 077L=0b111_111").eval(env));
+ BOOST_CHECK(qb::Selector(" 077L=63").eval(env));
+}
+
QPID_AUTO_TEST_CASE(comparisonEval)
{
TestSelectorEnv env;