diff --git a/tests/TestUtils.cpp b/tests/TestUtils.cpp index c235776..de3ad48 100644 --- a/tests/TestUtils.cpp +++ b/tests/TestUtils.cpp @@ -6,7 +6,7 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// -TEST(UtilsTests, Parse) +TEST(UtilsTests, ParserParse) { std::stringstream s(" identifier 5 \n-51\t 0 1 100 200 -300 -400"); plasp::utils::Parser<> p("input", s); @@ -68,6 +68,66 @@ TEST(UtilsTests, ParserExpect) //////////////////////////////////////////////////////////////////////////////////////////////////// +TEST(UtilsTests, ParserTest) +{ + std::stringstream s(" identifier 5 \n-51\t 0 1"); + plasp::utils::Parser<> p("input", s); + + plasp::utils::Parser<>::Position pos; + + pos = p.position(); + ASSERT_EQ(p.testAndReturn("error"), false); + ASSERT_EQ(p.position(), pos); + ASSERT_EQ(p.testAndReturn("identifier"), true); + ASSERT_EQ(p.position(), pos); + ASSERT_EQ(p.testAndSkip("error"), false); + ASSERT_EQ(p.position(), pos); + ASSERT_EQ(p.testAndSkip("identifier"), true); + ASSERT_EQ(p.position(), 12); + + pos = p.position(); + ASSERT_EQ(p.testAndReturn(6u), false); + ASSERT_EQ(p.position(), pos); + ASSERT_EQ(p.testAndReturn(5u), true); + ASSERT_EQ(p.position(), pos); + ASSERT_EQ(p.testAndSkip(6u), false); + ASSERT_EQ(p.position(), pos); + ASSERT_EQ(p.testAndSkip(5u), true); + ASSERT_EQ(p.position(), 15); + + pos = p.position(); + ASSERT_EQ(p.testAndReturn(-50), false); + ASSERT_EQ(p.position(), pos); + ASSERT_EQ(p.testAndReturn(-51), true); + ASSERT_EQ(p.position(), pos); + ASSERT_EQ(p.testAndSkip(-50), false); + ASSERT_EQ(p.position(), pos); + ASSERT_EQ(p.testAndSkip(-51), true); + ASSERT_EQ(p.position(), 22); + + pos = p.position(); + ASSERT_EQ(p.testAndReturn(true), false); + ASSERT_EQ(p.position(), pos); + ASSERT_EQ(p.testAndReturn(false), true); + ASSERT_EQ(p.position(), pos); + ASSERT_EQ(p.testAndSkip(true), false); + ASSERT_EQ(p.position(), pos); + ASSERT_EQ(p.testAndSkip(false), true); + ASSERT_EQ(p.position(), 25); + + pos = p.position(); + ASSERT_EQ(p.testAndReturn(false), false); + ASSERT_EQ(p.position(), pos); + ASSERT_EQ(p.testAndReturn(true), true); + ASSERT_EQ(p.position(), pos); + ASSERT_EQ(p.testAndSkip(false), false); + ASSERT_EQ(p.position(), pos); + ASSERT_EQ(p.testAndSkip(true), true); + ASSERT_EQ(p.position(), 27); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// + TEST(UtilsTests, ParseEndOfFile) { std::stringstream s1("test");