MCPcopy Create free account
hub / github.com/cel-expr/cel-cpp / TEST

Function TEST

internal/strings_test.cc:176–224  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

174}
175
176TEST(StringsTest, TestParsingOfAllEscapeCharacters) {
177 // All the valid escapes.
178 const std::set<char> valid_escapes = {'a', 'b', 'f', 'n', 'r', 't',
179 'v', '\\', '?', '"', '\'', '`',
180 'u', 'U', 'x', 'X'};
181 for (int escape_char_int = 0; escape_char_int < 255; ++escape_char_int) {
182 char escape_char = static_cast<char>(escape_char_int);
183 absl::string_view escape_piece(&escape_char, 1);
184 if (valid_escapes.find(escape_char) != valid_escapes.end()) {
185 if (escape_char == '\'') {
186 TestParseString(absl::StrCat("\"a\\", escape_piece, "0010ffff\""));
187 }
188 TestParseString(absl::StrCat("'a\\", escape_piece, "0010ffff'"));
189 TestParseString(absl::StrCat("'''a\\", escape_piece, "0010ffff'''"));
190 } else if (absl::ascii_isdigit(escape_char)) {
191 // Can also escape 0-3.
192 const std::string test_string =
193 absl::StrCat("'a\\", escape_piece, "00b'");
194 const std::string test_triple_quoted_string =
195 absl::StrCat("'''a\\", escape_piece, "00b'''");
196 if (escape_char <= '3') {
197 TestParseString(test_string);
198 TestParseString(test_triple_quoted_string);
199 } else {
200 TestInvalidString(test_string, "Illegal escape sequence: ");
201 TestInvalidString(test_triple_quoted_string,
202 "Illegal escape sequence: ");
203 }
204 } else {
205 if (Utf8IsValid(escape_piece)) {
206 const std::string expected_error =
207 ((escape_char == '\n' || escape_char == '\r')
208 ? "Illegal escaped newline"
209 : "Illegal escape sequence: ");
210 TestInvalidString(absl::StrCat("'a\\", escape_piece, "b'"),
211 expected_error);
212 TestInvalidString(absl::StrCat("'''a\\", escape_piece, "b'''"),
213 expected_error);
214 } else {
215 TestInvalidString(absl::StrCat("'a\\", escape_piece, "b'"),
216 "Structurally invalid UTF8" //
217 " string");
218 TestInvalidString(absl::StrCat("'''a\\", escape_piece, "b'''"),
219 "Structurally invalid UTF8" //
220 " string");
221 }
222 }
223 }
224}
225
226TEST(StringsTest, TestParsingOfOctalEscapes) {
227 for (int idx = 0; idx < 256; ++idx) {

Callers

nothing calls this directly

Calls 15

TestParseStringFunction · 0.85
TestInvalidStringFunction · 0.85
Utf8IsValidFunction · 0.85
TestParseBytesFunction · 0.85
TestStringEscapingFunction · 0.85
TestStringFunction · 0.85
TestValueFunction · 0.85
TestBytesLiteralFunction · 0.85
TestUnescapedBytesFunction · 0.85
FormatBytesLiteralFunction · 0.85

Tested by

no test coverage detected