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

@@ -16,6 +16,8 @@ class StringReader
std::string line(bool truncateEnd = true); std::string line(bool truncateEnd = true);
std::string getTokens(std::vector<std::string> get_chars, bool truncateEnd = true); std::string getTokens(std::vector<std::string> get_chars, bool truncateEnd = true);
std::string truncateEnd(std::string to_truncate); std::string truncateEnd(std::string to_truncate);
static void test();
protected: protected:
private: private:
std::string rd_string; std::string rd_string;

View File

@@ -17,7 +17,11 @@
int main(int argc, char* argv[]) { int main(int argc, char* argv[]) {
if (argc == 2 && std::string(argv[1]) == "--test") {
StringReader::test();
return 0;
}
std::ifstream programInFile, grammerInFile; std::ifstream programInFile, grammerInFile;
std::ofstream outFile, outFileTransformed, outFileAST; std::ofstream outFile, outFileTransformed, outFileAST;
@@ -144,4 +148,4 @@ int main(int argc, char* argv[]) {
return(0); return(0);
} }

View File

@@ -1,4 +1,5 @@
#include "StringReader.h" #include "StringReader.h"
#include <cassert>
StringReader::StringReader() StringReader::StringReader()
{ {
@@ -144,3 +145,48 @@ std::string StringReader::truncateEnd(std::string to_truncate)
to_return = to_return + to_truncate[i]; to_return = to_return + to_truncate[i];
return to_return; 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";
}