/** @file $Id$ $Date$ $Author$ @copy © Marc Wäckerlin @license LGPL, see file COPYING $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 #include #include #include #include #include #include #include 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: "<