X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Ftest_html_parser.cpp;h=5ba7e5a29b39478ce52af1b63b71c1c00b8552e6;hb=586d78659d671683f33ec55f4a7d32b28e345ccd;hp=cdb266cf95a3d0ed43322574b645f7a80ae7953f;hpb=897639233e3a6232d039666ba38b393bf7ac0ef0;p=metaproxy-moved-to-github.git diff --git a/src/test_html_parser.cpp b/src/test_html_parser.cpp index cdb266c..5ba7e5a 100644 --- a/src/test_html_parser.cpp +++ b/src/test_html_parser.cpp @@ -1,5 +1,5 @@ /* This file is part of Metaproxy. - Copyright (C) 2005-2013 Index Data + Copyright (C) Index Data 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 @@ -42,16 +42,20 @@ public: void openTagStart(const char *tag, int tag_len) { out += "<"; out.append(tag, tag_len); - } - + } + void attribute(const char *tag, int tag_len, const char *attr, int attr_len, - const char *value, int val_len) { + const char *value, int val_len, const char *sep) { out += " "; out.append(attr, attr_len); - out += "=\""; - out.append(value, val_len); - out += "\""; + if (value) + { + out += "="; + out += sep; + out.append(value, val_len); + out += sep; + } } void anyTagEnd(const char *tag, int tag_len, int close_it) { if (close_it) @@ -76,19 +80,22 @@ BOOST_AUTO_TEST_CASE( test_html_parser_1 ) "some text" "
"; const char* expected = - "some text" + "some text" "
"; MyEvent e; - hp.set_verbose(1); + hp.set_verbose(0); hp.parse(e, html); - std::cout << "Expected" << std::endl; - std::cout << expected << std::endl; - std::cout << "Got" << std::endl; - std::cout << e.out << std::endl; BOOST_CHECK_EQUAL(std::string(expected), e.out); + if (std::string(expected) != e.out) + { + std::cout << "Expected" << std::endl; + std::cout << expected << std::endl; + std::cout << "Got" << std::endl; + std::cout << e.out << std::endl; + } } - catch (std::exception & e) + catch (std::exception & e) { std::cout << e.what(); std::cout << std::endl; @@ -101,7 +108,7 @@ BOOST_AUTO_TEST_CASE( test_html_parser_2 ) try { mp::HTMLParser hp; - const char* html = + const char* html = "\n" "\n" " \n" @@ -116,17 +123,19 @@ BOOST_AUTO_TEST_CASE( test_html_parser_2 ) const char* expected = html; MyEvent e; - hp.set_verbose(1); + hp.set_verbose(0); hp.parse(e, html); - std::cout << "Expected" << std::endl; - std::cout << expected << std::endl; - std::cout << "Got" << std::endl; - std::cout << e.out << std::endl; - BOOST_CHECK_EQUAL(std::string(expected), e.out); + if (std::string(expected) != e.out) + { + std::cout << "Expected" << std::endl; + std::cout << expected << std::endl; + std::cout << "Got" << std::endl; + std::cout << e.out << std::endl; + } } - catch (std::exception & e) + catch (std::exception & e) { std::cout << e.what(); std::cout << std::endl; @@ -151,17 +160,19 @@ BOOST_AUTO_TEST_CASE( test_html_parser_3 ) const char* expected = html; MyEvent e; - hp.set_verbose(1); + hp.set_verbose(0); hp.parse(e, html); - std::cout << "Expected" << std::endl; - std::cout << expected << std::endl; - std::cout << "Got" << std::endl; - std::cout << e.out << std::endl; - BOOST_CHECK_EQUAL(std::string(expected), e.out); + if (std::string(expected) != e.out) + { + std::cout << "Expected" << std::endl; + std::cout << expected << std::endl; + std::cout << "Got" << std::endl; + std::cout << e.out << std::endl; + } } - catch (std::exception & e) + catch (std::exception & e) { std::cout << e.what(); std::cout << std::endl; @@ -169,37 +180,129 @@ BOOST_AUTO_TEST_CASE( test_html_parser_3 ) } } -#if 0 -// null ptr exception BOOST_AUTO_TEST_CASE( test_html_parser_4 ) { try { mp::HTMLParser hp; const char* html = - "<\"?xml version=\"1.0\" strandalone=\"no\"?>\n" - ""; + "\n" + ""; + + const char* expected = html; + MyEvent e; + hp.set_verbose(0); + hp.parse(e, html); + + BOOST_CHECK_EQUAL(std::string(expected), e.out); + if (std::string(expected) != e.out) + { + std::cout << "Expected" << std::endl; + std::cout << expected << std::endl; + std::cout << "Got" << std::endl; + std::cout << e.out << std::endl; + } + } + catch (std::exception & e) + { + std::cout << e.what(); + std::cout << std::endl; + BOOST_CHECK (false); + } +} + +BOOST_AUTO_TEST_CASE( test_html_parser_5 ) +{ + try + { + mp::HTMLParser hp; + const char* html = + ""; + + const char* expected = html; + MyEvent e; + hp.set_verbose(0); + hp.parse(e, html); + + BOOST_CHECK_EQUAL(std::string(expected), e.out); + if (std::string(expected) != e.out) + { + std::cout << "Expected" << std::endl; + std::cout << expected << std::endl; + std::cout << "Got" << std::endl; + std::cout << e.out << std::endl; + } + } + catch (std::exception & e) + { + std::cout << e.what(); + std::cout << std::endl; + BOOST_CHECK (false); + } +} + +BOOST_AUTO_TEST_CASE( test_html_parser_6 ) +{ + try + { + mp::HTMLParser hp; + const char* html = + ""; const char* expected = html; MyEvent e; - hp.set_verbose(1); + hp.set_verbose(0); hp.parse(e, html); - std::cout << "Expected" << std::endl; - std::cout << expected << std::endl; - std::cout << "Got" << std::endl; - std::cout << e.out << std::endl; + BOOST_CHECK_EQUAL(std::string(expected), e.out); + if (std::string(expected) != e.out) + { + std::cout << "Expected" << std::endl; + std::cout << expected << std::endl; + std::cout << "Got" << std::endl; + std::cout << e.out << std::endl; + } + } + catch (std::exception & e) + { + std::cout << e.what(); + std::cout << std::endl; + BOOST_CHECK (false); + } +} + +BOOST_AUTO_TEST_CASE( test_html_parser_7 ) +{ + try + { + mp::HTMLParser hp; + const char* html = + "" + "\nx=2;\n"; + + const char* expected = html; + MyEvent e; + hp.set_verbose(0); + hp.parse(e, html); BOOST_CHECK_EQUAL(std::string(expected), e.out); + if (std::string(expected) != e.out) + { + std::cout << "Expected" << std::endl; + std::cout << expected << std::endl; + std::cout << "Got" << std::endl; + std::cout << e.out << std::endl; + } } - catch (std::exception & e) + catch (std::exception & e) { std::cout << e.what(); std::cout << std::endl; BOOST_CHECK (false); } } -#endif + /* * Local variables: