71 lines
2.1 KiB
C++
71 lines
2.1 KiB
C++
/** @file
|
|
|
|
$Id$
|
|
|
|
$Date$
|
|
$Author$
|
|
|
|
@copy © Marc Wäckerlin
|
|
@license LGPL, see file <a href="license.html">COPYING</a>
|
|
|
|
$Log$
|
|
Revision 1.2 2004/12/16 13:09:31 marc
|
|
possibility to evaluate and extract sub expressions
|
|
|
|
Revision 1.1 2004/12/14 20:20:30 marc
|
|
initial version
|
|
|
|
|
|
*/
|
|
|
|
#include <mrw/regexp.hxx>
|
|
#include <mrw/exception.hxx>
|
|
|
|
#include <cppunit/TestFixture.h>
|
|
#include <cppunit/ui/text/TestRunner.h>
|
|
#include <cppunit/extensions/HelperMacros.h>
|
|
#include <cppunit/extensions/TestFactoryRegistry.h>
|
|
#include <cppunit/XmlOutputter.h>
|
|
#include <fstream>
|
|
|
|
class RegExpTest: public CppUnit::TestFixture {
|
|
public:
|
|
void CheckRegExp() {
|
|
mrw::RegExp findHalloWelt("^Hallo.*Welt$");
|
|
CPPUNIT_ASSERT(findHalloWelt("Hallo Meine Welt"));
|
|
CPPUNIT_ASSERT(!findHalloWelt("xxx"));
|
|
CPPUNIT_ASSERT(!findHalloWelt(""));
|
|
CPPUNIT_ASSERT(!findHalloWelt(" Hallo Welt "));
|
|
CPPUNIT_ASSERT(findHalloWelt("HalloWelt"));
|
|
mrw::RegExp extractTest("^Guten (.*) (Herr|Frau) (.*)$", true);
|
|
CPPUNIT_ASSERT(extractTest("Guten Tag Frau Zuercher"));
|
|
CPPUNIT_ASSERT(extractTest[1]=="Tag" &&
|
|
extractTest[2]=="Frau" &&
|
|
extractTest[3]=="Zuercher");
|
|
}
|
|
void ExceptionTest() {
|
|
mrw::RegExp extractTest("^Guten (.*) (Herr|Frau) (.*)$", true);
|
|
CPPUNIT_ASSERT(extractTest("Guten Tag Herr Schweizer"));
|
|
CPPUNIT_ASSERT(extractTest[1]=="Tag" &&
|
|
extractTest[2]=="Herr" &&
|
|
extractTest[3]=="Schweizer");
|
|
std::string s = extractTest[4];
|
|
}
|
|
CPPUNIT_TEST_SUITE(RegExpTest);
|
|
CPPUNIT_TEST(CheckRegExp);
|
|
CPPUNIT_TEST_EXCEPTION(ExceptionTest, mrw::invalid_argument);
|
|
CPPUNIT_TEST_SUITE_END();
|
|
};
|
|
CPPUNIT_TEST_SUITE_REGISTRATION(RegExpTest);
|
|
|
|
int main(int argc, char** argv) try {
|
|
std::ofstream ofs((*argv+std::string(".xml")).c_str());
|
|
CppUnit::TextUi::TestRunner runner;
|
|
runner.setOutputter(new CppUnit::XmlOutputter(&runner.result(), ofs));
|
|
runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
|
|
return runner.run() ? 0 : 1;
|
|
} catch (std::exception& e) {
|
|
std::cerr<<"***Exception: "<<e.what()<<std::endl;
|
|
return 1;
|
|
}
|