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);
}
Beispiel #3
0
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());
}
Beispiel #5
0
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);
}