C++ Library containing a lot of needful things: Stack Trace, Command Line Parser, Resource Handling, Configuration Files, Unix Command Execution, Directories, Regular Expressions, Tokenizer, Function Trace, Standard Extensions.

64 lines
1.8 KiB

20 years ago
/** @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
20 years ago
Revision 1.1 2004/12/14 20:20:30 marc
initial version
*/
#include <mrw/regexp.hpp>
#include <mrw/exception.hpp>
20 years ago
#include <cppunit/TestFixture.h>
#include <cppunit/ui/text/TestRunner.h>
#include <cppunit/extensions/HelperMacros.h>
#include <cppunit/extensions/TestFactoryRegistry.h>
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];
20 years ago
}
CPPUNIT_TEST_SUITE(RegExpTest);
CPPUNIT_TEST(CheckRegExp);
CPPUNIT_TEST_EXCEPTION(ExceptionTest, mrw::invalid_argument);
20 years ago
CPPUNIT_TEST_SUITE_END();
};
CPPUNIT_TEST_SUITE_REGISTRATION(RegExpTest);
int main() {
CppUnit::TextUi::TestRunner runner;
runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
return runner.run() ? 0 : 1;
}