moved wxRegEx test from console to testsuite (patch 938995)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26906 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2004-04-21 20:17:18 +00:00
parent 17aa28a91b
commit bc10103ec8
13 changed files with 395 additions and 231 deletions

View File

@@ -2287,163 +2287,6 @@ static void TestPathList()
#include "wx/regex.h"
static void TestRegExCompile()
{
wxPuts(_T("*** Testing RE compilation ***\n"));
static struct RegExCompTestData
{
const wxChar *pattern;
bool correct;
} regExCompTestData[] =
{
{ _T("foo"), true },
{ _T("foo("), false },
{ _T("foo(bar"), false },
{ _T("foo(bar)"), true },
{ _T("foo["), false },
{ _T("foo[bar"), false },
{ _T("foo[bar]"), true },
{ _T("foo{"), true },
{ _T("foo{1"), false },
{ _T("foo{bar"), true },
{ _T("foo{1}"), true },
{ _T("foo{1,2}"), true },
{ _T("foo{bar}"), true },
{ _T("foo*"), true },
{ _T("foo**"), false },
{ _T("foo+"), true },
{ _T("foo++"), false },
{ _T("foo?"), true },
{ _T("foo??"), false },
{ _T("foo?+"), false },
};
wxRegEx re;
for ( size_t n = 0; n < WXSIZEOF(regExCompTestData); n++ )
{
const RegExCompTestData& data = regExCompTestData[n];
bool ok = re.Compile(data.pattern);
wxPrintf(_T("'%s' is %sa valid RE (%s)\n"),
data.pattern,
ok ? wxEmptyString : _T("not "),
ok == data.correct ? _T("ok") : _T("ERROR"));
}
}
static void TestRegExMatch()
{
wxPuts(_T("*** Testing RE matching ***\n"));
static struct RegExMatchTestData
{
const wxChar *pattern;
const wxChar *text;
bool correct;
} regExMatchTestData[] =
{
{ _T("foo"), _T("bar"), false },
{ _T("foo"), _T("foobar"), true },
{ _T("^foo"), _T("foobar"), true },
{ _T("^foo"), _T("barfoo"), false },
{ _T("bar$"), _T("barbar"), true },
{ _T("bar$"), _T("barbar "), false },
};
for ( size_t n = 0; n < WXSIZEOF(regExMatchTestData); n++ )
{
const RegExMatchTestData& data = regExMatchTestData[n];
wxRegEx re(data.pattern);
bool ok = re.Matches(data.text);
wxPrintf(_T("'%s' %s %s (%s)\n"),
data.pattern,
ok ? _T("matches") : _T("doesn't match"),
data.text,
ok == data.correct ? _T("ok") : _T("ERROR"));
}
}
static void TestRegExSubmatch()
{
wxPuts(_T("*** Testing RE subexpressions ***\n"));
wxRegEx re(_T("([[:alpha:]]+) ([[:alpha:]]+) ([[:digit:]]+).*([[:digit:]]+)$"));
if ( !re.IsValid() )
{
wxPuts(_T("ERROR: compilation failed."));
return;
}
wxString text = _T("Fri Jul 13 18:37:52 CEST 2001");
if ( !re.Matches(text) )
{
wxPuts(_T("ERROR: match expected."));
}
else
{
wxPrintf(_T("Entire match: %s\n"), re.GetMatch(text).c_str());
wxPrintf(_T("Date: %s/%s/%s, wday: %s\n"),
re.GetMatch(text, 3).c_str(),
re.GetMatch(text, 2).c_str(),
re.GetMatch(text, 4).c_str(),
re.GetMatch(text, 1).c_str());
}
}
static void TestRegExReplacement()
{
wxPuts(_T("*** Testing RE replacement ***"));
static struct RegExReplTestData
{
const wxChar *text;
const wxChar *repl;
const wxChar *result;
size_t count;
} regExReplTestData[] =
{
{ _T("foo123"), _T("bar"), _T("bar"), 1 },
{ _T("foo123"), _T("\\2\\1"), _T("123foo"), 1 },
{ _T("foo_123"), _T("\\2\\1"), _T("123foo"), 1 },
{ _T("123foo"), _T("bar"), _T("123foo"), 0 },
{ _T("123foo456foo"), _T("&&"), _T("123foo456foo456foo"), 1 },
{ _T("foo123foo123"), _T("bar"), _T("barbar"), 2 },
{ _T("foo123_foo456_foo789"), _T("bar"), _T("bar_bar_bar"), 3 },
};
const wxChar *pattern = _T("([a-z]+)[^0-9]*([0-9]+)");
wxRegEx re(pattern);
wxPrintf(_T("Using pattern '%s' for replacement.\n"), pattern);
for ( size_t n = 0; n < WXSIZEOF(regExReplTestData); n++ )
{
const RegExReplTestData& data = regExReplTestData[n];
wxString text = data.text;
size_t nRepl = re.Replace(&text, data.repl);
wxPrintf(_T("%s =~ s/RE/%s/g: %u match%s, result = '%s' ("),
data.text, data.repl,
nRepl, nRepl == 1 ? wxEmptyString : _T("es"),
text.c_str());
if ( text == data.result && nRepl == data.count )
{
wxPuts(_T("ok)"));
}
else
{
wxPrintf(_T("ERROR: should be %u and '%s')\n"),
data.count, data.result);
}
}
}
static void TestRegExInteractive()
{
wxPuts(_T("*** Testing RE interactively ***"));
@@ -6156,19 +5999,9 @@ int main(int argc, char **argv)
TestRegConfRead();
#endif // TEST_REGCONF
#ifdef TEST_REGEX
// TODO: write a real test using src/regex/tests file
#if TEST_ALL
TestRegExCompile();
TestRegExMatch();
TestRegExSubmatch();
TestRegExReplacement();
#if TEST_INTERACTIVE
TestRegExInteractive();
#endif
#endif
#endif // TEST_REGEX
#if defined TEST_REGEX && TEST_INTERACTIVE
TestRegExInteractive();
#endif // defined TEST_REGEX && TEST_INTERACTIVE
#ifdef TEST_REGISTRY
TestRegistryRead();