From a18b4f41a73963a5bf6f0d7062bb973bef3e2be9 Mon Sep 17 00:00:00 2001 From: Jason Orendorff Date: Fri, 25 Oct 2013 02:17:02 -0700 Subject: [PATCH] Add tests for parsing quoted strings. --- src/StringReader.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/StringReader.cpp b/src/StringReader.cpp index 70fbced..3a887fe 100644 --- a/src/StringReader.cpp +++ b/src/StringReader.cpp @@ -188,5 +188,29 @@ void StringReader::test() assert(reader.word() == ""); } + { + // Quoted strings can span lines. + StringReader reader("x = \"\n \" ;\n"); + assert(reader.word() == "x"); + assert(reader.word() == "="); + assert(reader.word() == "\"\n \""); + assert(reader.word() == ";"); + assert(reader.word() == ""); + } + + { + // Strings may contain backslash-escaped quote characters. + StringReader reader( "\"abc\\\"def\\\\\\\\\\\" \"\n"); + assert(reader.word() == "\"abc\\\"def\\\\\\\\\\\" \""); + assert(reader.word() == ""); + } + + { + // A backslash-escaped backslash can be the last character in a string. + StringReader reader( "\"\\\\\" \n"); + assert(reader.word() == "\"\\\\\""); + assert(reader.word() == ""); + } + std::cout << "StringReader tests pass\n"; }