Add unit tests for StringReader. You can run them with ./kraken --test.

This commit is contained in:
Jason Orendorff
2013-10-25 02:04:22 -07:00
parent 02fd878c92
commit 08baae465a
3 changed files with 54 additions and 2 deletions

View File

@@ -1,4 +1,5 @@
#include "StringReader.h"
#include <cassert>
StringReader::StringReader()
{
@@ -144,3 +145,48 @@ std::string StringReader::truncateEnd(std::string to_truncate)
to_return = to_return + to_truncate[i];
return to_return;
}
void StringReader::test()
{
{
StringReader reader("\"x\"");
assert(reader.word() == "\"x\"");
assert(reader.word() == "");
}
{
StringReader reader("\"y\" ;\n");
assert(reader.word() == "\"y\"");
assert(reader.word() == ";");
assert(reader.word() == "");
}
{
StringReader reader("Goal = greeting ;\n"
"greeting = \"hello\" | greeting \"world\" ;\n");
assert(reader.word() == "Goal");
assert(reader.word() == "=");
assert(reader.word() == "greeting");
assert(reader.word() == ";");
assert(reader.word() == "greeting");
assert(reader.word() == "=");
assert(reader.word() == "\"hello\"");
assert(reader.word() == "|");
assert(reader.word() == "greeting");
assert(reader.word() == "\"world\"");
assert(reader.word() == ";");
assert(reader.word() == "");
}
{
StringReader reader("one # pretend this is a comment\n"
" two\n");
assert(reader.word() == "one");
assert(reader.word() == "#");
assert(reader.line() == "pretend this is a comment");
assert(reader.word() == "two");
assert(reader.word() == "");
}
std::cout << "StringReader tests pass\n";
}