TEST(TextWordGet, EscapingEscape) { AutoText input("word" BACKSLASH BACKSLASH " abc"); std::string word; spv_position_t endPosition = {}; ASSERT_EQ(SPV_SUCCESS, AssemblyContext(input, nullptr).getWord(word, &endPosition)); ASSERT_EQ(6, endPosition.column); ASSERT_EQ(0, endPosition.line); ASSERT_EQ(6, endPosition.index); ASSERT_STREQ("word" BACKSLASH BACKSLASH, word.c_str()); }
TEST(TextWordGet, Escaping) { AutoText input("w" BACKSLASH QUOTE "o" BACKSLASH NEWLINE "r" BACKSLASH ";d"); std::string word; spv_position_t endPosition = {}; ASSERT_EQ(SPV_SUCCESS, AssemblyContext(input, nullptr).getWord(word, &endPosition)); ASSERT_EQ(10, endPosition.column); ASSERT_EQ(0, endPosition.line); ASSERT_EQ(10, endPosition.index); ASSERT_EQ(input.str, word); }
TEST(TextWordGet, EscapeAlone) { AutoText input(BACKSLASH); std::string word; spv_position_t endPosition = {}; ASSERT_EQ(SPV_SUCCESS, AssemblyContext(input, nullptr).getWord(&word, &endPosition)); ASSERT_EQ(1u, endPosition.column); ASSERT_EQ(0u, endPosition.line); ASSERT_EQ(1u, endPosition.index); ASSERT_STREQ(BACKSLASH, word.c_str()); }
TEST(TextWordGet, QuoteAlone) { AutoText input(QUOTE); std::string word; spv_position_t endPosition = {}; ASSERT_EQ(SPV_SUCCESS, AssemblyContext(input, nullptr).getWord(word, &endPosition)); ASSERT_EQ(1, endPosition.column); ASSERT_EQ(0, endPosition.line); ASSERT_EQ(1, endPosition.index); ASSERT_STREQ(QUOTE, word.c_str()); }
TEST(TextWordGet, QuotingWhitespace) { AutoText input(QUOTE "white " NEWLINE TAB " space" QUOTE); // Whitespace surrounded by quotes acts like glue. std::string word; spv_position_t endPosition = {}; ASSERT_EQ(SPV_SUCCESS, AssemblyContext(input, nullptr).getWord(&word, &endPosition)); EXPECT_EQ(input.str.length(), endPosition.column); EXPECT_EQ(0u, endPosition.line); EXPECT_EQ(input.str.length(), endPosition.index); EXPECT_EQ(input.str, word); }