X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Ftest_router_flexml.cpp;h=c81bef741982f13be8126ccb5971e833a052e059;hb=79100c2ae2dac4bdde4f4d46b69e147562b4ec6c;hp=2aac9e568ea9ed6a22d823d8049800f77957faf1;hpb=7467b072bb64f5c8575daa9917cce7df62d832f1;p=metaproxy-moved-to-github.git diff --git a/src/test_router_flexml.cpp b/src/test_router_flexml.cpp index 2aac9e5..c81bef7 100644 --- a/src/test_router_flexml.cpp +++ b/src/test_router_flexml.cpp @@ -1,5 +1,5 @@ -/* $Id: test_router_flexml.cpp,v 1.2 2005-10-29 22:23:36 marc Exp $ - Copyright (c) 2005, Index Data. +/* $Id: test_router_flexml.cpp,v 1.16 2006-03-16 10:40:59 adam Exp $ + Copyright (c) 2005-2006, Index Data. %LICENSE% */ @@ -10,58 +10,176 @@ #include "filter.hpp" #include "router_flexml.hpp" +#include "factory_static.hpp" #define BOOST_AUTO_TEST_MAIN #include using namespace boost::unit_test; -class TFilter: public yp2::filter::Base { +namespace mp = metaproxy_1; + +static int tfilter_ref = 0; +class TFilter: public mp::filter::Base { public: - void process(yp2::Package & package) const {}; - const std::string type() const { - return "TFilter"; - }; + void process(mp::Package & package) const {}; + TFilter() { tfilter_ref++; }; + ~TFilter() { tfilter_ref--; }; }; - -BOOST_AUTO_TEST_CASE( test_router_flexml_1 ) +static mp::filter::Base* filter_creator() { - try{ - TFilter filter; - - std::string xmlconf = "" - "" - "" - "" - "" - "210" - "" - "" - "mylog.log" - "" - "" - "" - "" - "" - "" - "" - "" - ""; - - yp2::RouterFleXML rflexml(xmlconf); - + return new TFilter; +} - BOOST_CHECK (true); +// Pass well-formed XML and valid configuration to it (implicit NS) +BOOST_AUTO_UNIT_TEST( test_router_flexml_1 ) +{ + try + { + std::string xmlconf = "\n" + "\n" + " \n" + " \n" + " \n" + " @:210\n" + " \n" + " \n" + " my msg\n" + " \n" + " \n" + " \n" + " other\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + "\n"; + + mp::FactoryStatic factory; + factory.add_creator("tfilter", filter_creator); + mp::RouterFleXML rflexml(xmlconf, factory); + BOOST_CHECK_EQUAL(tfilter_ref, 2); + } + catch ( std::runtime_error &e) { + std::cout << "std::runtime error: " << e.what() << "\n"; + BOOST_CHECK (false); + } + catch ( ... ) { + BOOST_CHECK (false); + } + BOOST_CHECK_EQUAL(tfilter_ref, 0); +} - //BOOST_CHECK_EQUAL(filter.name(), std::string("filter1")); +// Pass non-wellformed XML +BOOST_AUTO_UNIT_TEST( test_router_flexml_2 ) +{ + bool got_error_as_expected = false; + try + { + std::string xmlconf_invalid = "\n" + "\n" + " \n" + " \n" + " \n" + " @:210\n"; + mp::FactoryFilter factory; + mp::RouterFleXML rflexml(xmlconf_invalid, factory); + } + catch ( mp::XMLError &e) { + std::cout << "XMLError: " << e.what() << "\n"; + got_error_as_expected = true; + } + catch ( std::runtime_error &e) { + std::cout << "std::runtime error: " << e.what() << "\n"; + } + catch ( ... ) { + ; + } + BOOST_CHECK(got_error_as_expected); +} + +// Pass well-formed XML with explicit NS +BOOST_AUTO_UNIT_TEST( test_router_flexml_3 ) +{ + try + { + std::string xmlconf = "\n" + "\n" + " \n" + " \n" + " \n" + " @:210\n" + " \n" + " \n" + " my msg\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + "\n"; + + mp::FactoryStatic factory; + mp::RouterFleXML rflexml(xmlconf, factory); + } + catch ( std::runtime_error &e) { + std::cout << "std::runtime error: " << e.what() << "\n"; + BOOST_CHECK (false); } catch ( ... ) { BOOST_CHECK (false); } } +// Pass well-formed XML but bad filter type +BOOST_AUTO_UNIT_TEST( test_router_flexml_4 ) +{ + bool got_error_as_expected = false; + try + { + std::string xmlconf = "\n" + "\n" + " \n" + " \n" + " \n" + " @:210\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + "\n"; + + mp::FactoryStatic factory; + factory.add_creator("tfilter", filter_creator); + mp::RouterFleXML rflexml(xmlconf, factory); + } + catch ( mp::FactoryFilter::NotFound &e) { + std::cout << "mp::FactoryFilter::NotFound: " << e.what() << "\n"; + got_error_as_expected = true; + } + catch ( std::runtime_error &e) { + std::cout << "std::runtime error: " << e.what() << "\n"; + } + BOOST_CHECK(got_error_as_expected); +} + + /* * Local variables: * c-basic-offset: 4