forked from 0ad/0ad
janwas
e0dfbe719d
(these are the old self-tests ripped out as well as new ones) note: have not run yet; several would surely fail if they run (can't anyway until cxxtest is installed) This was SVN commit r3912.
94 lines
2.5 KiB
C++
94 lines
2.5 KiB
C++
#include <cxxtest/TestSuite.h>
|
|
|
|
class TestParser : public CxxTest::TestSuite
|
|
{
|
|
public:
|
|
void test1()
|
|
{
|
|
CParser Parser;
|
|
Parser.InputTaskType("test", "_$ident_=_$value_");
|
|
|
|
std::string str;
|
|
int i;
|
|
|
|
CParserLine Line;
|
|
|
|
TS_ASSERT(Line.ParseString(Parser, "value=23"));
|
|
|
|
TS_ASSERT(Line.GetArgString(0, str) && str == "value");
|
|
TS_ASSERT(Line.GetArgInt(1, i) && i == 23);
|
|
}
|
|
|
|
|
|
void test2()
|
|
{
|
|
CParser Parser;
|
|
Parser.InputTaskType("test", "_$value_[$value]_");
|
|
|
|
std::string str;
|
|
|
|
CParserLine Line;
|
|
|
|
TS_ASSERT(Line.ParseString(Parser, "12 34"));
|
|
TS_ASSERT_EQUAL(Line.GetArgCount(), 2);
|
|
TS_ASSERT(Line.GetArgString(0, str) && str == "12");
|
|
TS_ASSERT(Line.GetArgString(1, str) && str == "34");
|
|
|
|
TS_ASSERT(Line.ParseString(Parser, "56"));
|
|
TS_ASSERT_EQUAL(Line.GetArgCount(), 1);
|
|
TS_ASSERT(Line.GetArgString(0, str) && str == "56");
|
|
|
|
TS_ASSERT(! Line.ParseString(Parser, " "));
|
|
}
|
|
|
|
|
|
void test3()
|
|
{
|
|
CParser Parser;
|
|
Parser.InputTaskType("test", "_[$value]_[$value]_[$value]_");
|
|
|
|
std::string str;
|
|
|
|
CParserLine Line;
|
|
|
|
TS_ASSERT(Line.ParseString(Parser, "12 34 56"));
|
|
TS_ASSERT_EQUAL(Line.GetArgCount(), 3);
|
|
TS_ASSERT(Line.GetArgString(0, str) && str == "12");
|
|
TS_ASSERT(Line.GetArgString(1, str) && str == "34");
|
|
TS_ASSERT(Line.GetArgString(2, str) && str == "56");
|
|
|
|
TS_ASSERT(Line.ParseString(Parser, "78 90"));
|
|
TS_ASSERT_EQUAL(Line.GetArgCount(), 2);
|
|
TS_ASSERT(Line.GetArgString(0, str) && str == "78");
|
|
TS_ASSERT(Line.GetArgString(1, str) && str == "90");
|
|
|
|
TS_ASSERT(Line.ParseString(Parser, "ab"));
|
|
TS_ASSERT_EQUAL(Line.GetArgCount(), 1);
|
|
TS_ASSERT(Line.GetArgString(0, str) && str == "ab");
|
|
|
|
TS_ASSERT(Line.ParseString(Parser, " "));
|
|
TS_ASSERT_EQUAL(Line.GetArgCount(), 0);
|
|
}
|
|
|
|
|
|
void test4()
|
|
{
|
|
CParser Parser;
|
|
Parser.InputTaskType("test", "<[_a_][_b_]_x_>");
|
|
|
|
std::string str;
|
|
|
|
CParserLine Line;
|
|
TS_ASSERT(Line.ParseString(Parser, "a b x a b x"));
|
|
TS_ASSERT(Line.ParseString(Parser, "a x b x"));
|
|
TS_ASSERT(Line.ParseString(Parser, "a x"));
|
|
TS_ASSERT(Line.ParseString(Parser, "b x"));
|
|
TS_ASSERT(Line.ParseString(Parser, "x"));
|
|
TS_ASSERT(! Line.ParseString(Parser, "a x c x"));
|
|
TS_ASSERT(! Line.ParseString(Parser, "a b a x"));
|
|
TS_ASSERT(! Line.ParseString(Parser, "a"));
|
|
TS_ASSERT(! Line.ParseString(Parser, "a a x"));
|
|
TS_ASSERT(Line.ParseString(Parser, "a x a b x a x b x b x b x b x a x a x a b x a b x b x a x"));
|
|
}
|
|
};
|