X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=src%2Ftest_router_flexml.cpp;h=b0daf7782f3fa454328a89d40b0456b93743cc05;hb=0264192f26c10308aad161983ea29568c96521a6;hp=05d7b845ce71c17688a629cc51a2f31631e191fa;hpb=48f4e384860829966eacf4881fbf1ccbed38be6a;p=metaproxy-moved-to-github.git diff --git a/src/test_router_flexml.cpp b/src/test_router_flexml.cpp index 05d7b84..b0daf77 100644 --- a/src/test_router_flexml.cpp +++ b/src/test_router_flexml.cpp @@ -1,7 +1,22 @@ -/* $Id: test_router_flexml.cpp,v 1.10 2006-01-04 14:15:45 adam Exp $ - Copyright (c) 2005, Index Data. +/* $Id: test_router_flexml.cpp,v 1.21 2007-11-02 17:47:41 adam Exp $ + Copyright (c) 2005-2007, Index Data. -%LICENSE% +This file is part of Metaproxy. + +Metaproxy is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Metaproxy is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with Metaproxy; see the file LICENSE. If not, write to the +Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA +02111-1307, USA. */ #include "config.hpp" @@ -13,54 +28,63 @@ #include "factory_static.hpp" #define BOOST_AUTO_TEST_MAIN +#define BOOST_TEST_DYN_LINK #include using namespace boost::unit_test; -static bool tfilter_destroyed = false; -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 {}; - ~TFilter() { tfilter_destroyed = true; }; + void process(mp::Package & package) const {}; + TFilter() { tfilter_ref++; }; + ~TFilter() { tfilter_ref--; }; }; -static yp2::filter::Base* filter_creator() +static mp::filter::Base* filter_creator() { return new TFilter; } -BOOST_AUTO_UNIT_TEST( test_router_flexml_1 ) +// Pass well-formed XML and valid configuration to it (implicit NS) +BOOST_AUTO_TEST_CASE( test_router_flexml_1 ) { try { std::string xmlconf = "\n" - "\n" + "\n" " \n" " \n" " \n" - " 210\n" + " @:210\n" " \n" " \n" - " mylog1.log\n" - " \n" - " \n" - " \n" + " my msg\n" " \n" + " \n" " \n" - " mylog2.log\n" + " other\n" " \n" " \n" " \n" " \n" " \n" - " \n" + " \n" + " \n" + " \n" + " \n" + " \n" " \n" " \n" - "\n"; + "\n"; - yp2::FactoryStatic factory; + mp::FactoryStatic factory; factory.add_creator("tfilter", filter_creator); - yp2::RouterFleXML rflexml(xmlconf, factory); + mp::RouterFleXML rflexml(xmlconf, factory); + BOOST_CHECK_EQUAL(tfilter_ref, 2); } catch ( std::runtime_error &e) { std::cout << "std::runtime error: " << e.what() << "\n"; @@ -69,62 +93,65 @@ BOOST_AUTO_UNIT_TEST( test_router_flexml_1 ) catch ( ... ) { BOOST_CHECK (false); } - BOOST_CHECK(tfilter_destroyed == true); + BOOST_CHECK_EQUAL(tfilter_ref, 0); } -BOOST_AUTO_UNIT_TEST( test_router_flexml_2 ) +// Pass non-wellformed XML +BOOST_AUTO_TEST_CASE( test_router_flexml_2 ) { - bool got_xml_error = false; + bool got_error_as_expected = false; try { std::string xmlconf_invalid = "\n" - "\n" + "\n" " \n" " \n" " \n" - " 210\n"; + " @:210\n"; - yp2::FilterFactory factory; - yp2::RouterFleXML rflexml(xmlconf_invalid, factory); + mp::FactoryFilter factory; + mp::RouterFleXML rflexml(xmlconf_invalid, factory); } - catch ( yp2::RouterFleXML::XMLError &e) { - got_xml_error = true; + 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"; - BOOST_CHECK (false); } catch ( ... ) { ; } - BOOST_CHECK(got_xml_error); + BOOST_CHECK(got_error_as_expected); } -BOOST_AUTO_UNIT_TEST( test_router_flexml_3 ) +// Pass well-formed XML with explicit NS +BOOST_AUTO_TEST_CASE( test_router_flexml_3 ) { try { std::string xmlconf = "\n" - "\n" - " \n" - " \n" - " \n" - " 210\n" - " \n" - " \n" - " mylog.log\n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - "\n"; + "\n" + " \n" + " \n" + " \n" + " @:210\n" + " \n" + " \n" + " my msg\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + "\n"; - yp2::FactoryStatic factory; - yp2::RouterFleXML rflexml(xmlconf, factory); + mp::FactoryStatic factory; + mp::RouterFleXML rflexml(xmlconf, factory); } catch ( std::runtime_error &e) { std::cout << "std::runtime error: " << e.what() << "\n"; @@ -135,6 +162,42 @@ BOOST_AUTO_UNIT_TEST( test_router_flexml_3 ) } } +// Pass well-formed XML but bad filter type +BOOST_AUTO_TEST_CASE( 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: