XL_TEST_CASE() { RegExp r; int nPos = 0; XL_TEST_ASSERT(!r.Parse(L"?")); XL_TEST_ASSERT(!r.Parse(L"+")); XL_TEST_ASSERT(!r.Parse(L"*")); XL_TEST_ASSERT(!r.Parse(L"??")); XL_TEST_ASSERT(!r.Parse(L"+?")); XL_TEST_ASSERT(!r.Parse(L"*?")); XL_TEST_ASSERT(r.Parse(L"a?")); XL_TEST_ASSERT(r.Match(L"")); XL_TEST_ASSERT(r.Match(L"a")); XL_TEST_ASSERT(!r.Match(L"aa")); XL_TEST_ASSERT(r.Match(L"", &nPos) && nPos == 0); XL_TEST_ASSERT(r.Match(L"a", &nPos) && nPos == 1); XL_TEST_ASSERT(r.Match(L"aa", &nPos) && nPos == 1); XL_TEST_ASSERT(r.Parse(L"a??")); XL_TEST_ASSERT(r.Match(L"")); XL_TEST_ASSERT(r.Match(L"a")); XL_TEST_ASSERT(!r.Match(L"aa")); XL_TEST_ASSERT(r.Parse(L"a??")); XL_TEST_ASSERT(r.Match(L"", &nPos) && nPos == 0); XL_TEST_ASSERT(r.Match(L"a", &nPos) && nPos == 0); XL_TEST_ASSERT(r.Match(L"aa", &nPos) && nPos == 0); XL_TEST_ASSERT(r.Parse(L"a+")); XL_TEST_ASSERT(!r.Match(L"")); XL_TEST_ASSERT(r.Match(L"a")); XL_TEST_ASSERT(r.Match(L"aa")); XL_TEST_ASSERT(r.Match(L"aaa")); XL_TEST_ASSERT(!r.Match(L"", &nPos)); XL_TEST_ASSERT(r.Match(L"a", &nPos) && nPos == 1); XL_TEST_ASSERT(r.Match(L"aa", &nPos) && nPos == 2); XL_TEST_ASSERT(r.Match(L"aaa", &nPos) && nPos == 3); XL_TEST_ASSERT(r.Parse(L"a+?")); XL_TEST_ASSERT(!r.Match(L"")); XL_TEST_ASSERT(r.Match(L"a")); XL_TEST_ASSERT(r.Match(L"aa")); XL_TEST_ASSERT(r.Match(L"aaa")); XL_TEST_ASSERT(!r.Match(L"", &nPos)); XL_TEST_ASSERT(r.Match(L"a", &nPos) && nPos == 1); XL_TEST_ASSERT(r.Match(L"aa", &nPos) && nPos == 1); XL_TEST_ASSERT(r.Match(L"aaa", &nPos) && nPos == 1); XL_TEST_ASSERT(r.Parse(L"a*")); XL_TEST_ASSERT(r.Match(L"")); XL_TEST_ASSERT(r.Match(L"a")); XL_TEST_ASSERT(r.Match(L"aa")); XL_TEST_ASSERT(r.Match(L"aaa")); XL_TEST_ASSERT(r.Match(L"", &nPos) && nPos == 0); XL_TEST_ASSERT(r.Match(L"a", &nPos) && nPos == 1); XL_TEST_ASSERT(r.Match(L"aa", &nPos) && nPos == 2); XL_TEST_ASSERT(r.Match(L"aaa", &nPos) && nPos == 3); XL_TEST_ASSERT(r.Parse(L"a*?")); XL_TEST_ASSERT(r.Match(L"")); XL_TEST_ASSERT(r.Match(L"a")); XL_TEST_ASSERT(r.Match(L"aa")); XL_TEST_ASSERT(r.Match(L"aaa")); XL_TEST_ASSERT(r.Match(L"", &nPos) && nPos == 0); XL_TEST_ASSERT(r.Match(L"a", &nPos) && nPos == 0); XL_TEST_ASSERT(r.Match(L"aa", &nPos) && nPos == 0); XL_TEST_ASSERT(r.Match(L"aaa", &nPos) && nPos == 0); XL_TEST_ASSERT(r.Parse(L"w1+")); XL_TEST_ASSERT(!r.Match(L"")); XL_TEST_ASSERT(!r.Match(L"w")); XL_TEST_ASSERT(r.Match(L"w1")); XL_TEST_ASSERT(r.Match(L"w11")); XL_TEST_ASSERT(r.Match(L"w111")); XL_TEST_ASSERT(r.Match(L"w1111")); XL_TEST_ASSERT(r.Match(L"w11111")); XL_TEST_ASSERT(!r.Match(L"", &nPos)); XL_TEST_ASSERT(!r.Match(L"w", &nPos)); XL_TEST_ASSERT(r.Match(L"w1", &nPos) && nPos == 2); XL_TEST_ASSERT(r.Match(L"w11", &nPos) && nPos == 3); XL_TEST_ASSERT(r.Match(L"w111", &nPos) && nPos == 4); XL_TEST_ASSERT(r.Match(L"w1111", &nPos) && nPos == 5); XL_TEST_ASSERT(r.Match(L"w11111", &nPos) && nPos == 6); XL_TEST_ASSERT(r.Parse(L"w1+?")); XL_TEST_ASSERT(!r.Match(L"")); XL_TEST_ASSERT(!r.Match(L"w")); XL_TEST_ASSERT(r.Match(L"w1")); XL_TEST_ASSERT(r.Match(L"w11")); XL_TEST_ASSERT(r.Match(L"w111")); XL_TEST_ASSERT(r.Match(L"w1111")); XL_TEST_ASSERT(r.Match(L"w11111")); XL_TEST_ASSERT(!r.Match(L"", &nPos)); XL_TEST_ASSERT(!r.Match(L"w", &nPos)); XL_TEST_ASSERT(r.Match(L"w1", &nPos) && nPos == 2); XL_TEST_ASSERT(r.Match(L"w11", &nPos) && nPos == 2); XL_TEST_ASSERT(r.Match(L"w111", &nPos) && nPos == 2); XL_TEST_ASSERT(r.Match(L"w1111", &nPos) && nPos == 2); XL_TEST_ASSERT(r.Match(L"w11111", &nPos) && nPos == 2); } |