From: Francesco Chemolli <5175948+kinkie@users.noreply.github.com> Date: Thu, 23 May 2024 03:49:46 +0000 (+0000) Subject: testHttpRange: use cppunit framework (#1816) X-Git-Tag: SQUID_7_0_1~117 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7e0550cb92e6e11d74829c92e4543948237b197c;p=thirdparty%2Fsquid.git testHttpRange: use cppunit framework (#1816) Resolve a long-standing TODO and stop hand-rolling HTTP range unit tests --- diff --git a/src/Makefile.am b/src/Makefile.am index 2db91a28d7..32e17f827a 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1754,8 +1754,8 @@ tests_testHtmlQuote_LDFLAGS = $(LIBADD_DL) ## Tests of http/* and HTTP Protocol objects -check_PROGRAMS += tests/test_http_range -tests_test_http_range_SOURCES = \ +check_PROGRAMS += tests/testHttpRange +tests_testHttpRange_SOURCES = \ $(DELAY_POOL_SOURCE) \ $(DNSSOURCE) \ $(HTCPSOURCE) \ @@ -1802,6 +1802,7 @@ tests_test_http_range_SOURCES = \ HttpHeaderFieldStat.h \ HttpHeaderTools.cc \ HttpHeaderTools.h \ + tests/testHttpRange.cc \ HttpReply.cc \ HttpRequest.cc \ tests/stub_HttpUpgradeProtocolAccess.cc \ @@ -1839,7 +1840,6 @@ tests_test_http_range_SOURCES = \ StrList.h \ String.cc \ Transients.cc \ - tests/test_http_range.cc \ tests/stub_cache_cf.cc \ cache_cf.h \ cache_manager.cc \ @@ -1937,10 +1937,10 @@ tests_test_http_range_SOURCES = \ wccp2.h \ wordlist.cc \ wordlist.h -nodist_tests_test_http_range_SOURCES = \ +nodist_tests_testHttpRange_SOURCES = \ $(BUILT_SOURCES) \ tests/stub_libtime.cc -tests_test_http_range_LDADD = \ +tests_testHttpRange_LDADD = \ libsquid.la \ clients/libclients.la \ servers/libservers.la \ @@ -1991,7 +1991,7 @@ tests_test_http_range_LDADD = \ $(LIBNETTLE_LIBS) \ $(LIBPSAPI_LIBS) \ $(XTRA_LIBS) -tests_test_http_range_LDFLAGS = $(LIBADD_DL) +tests_testHttpRange_LDFLAGS = $(LIBADD_DL) check_PROGRAMS += tests/testHttp1Parser tests_testHttp1Parser_SOURCES = \ diff --git a/src/tests/test_http_range.cc b/src/tests/testHttpRange.cc similarity index 51% rename from src/tests/test_http_range.cc rename to src/tests/testHttpRange.cc index e288924028..7b03bf889e 100644 --- a/src/tests/test_http_range.cc +++ b/src/tests/testHttpRange.cc @@ -7,15 +7,37 @@ */ #include "squid.h" -#include "fatal.h" -#include "HttpHeader.h" +#include "compat/cppunit.h" #include "HttpHeaderRange.h" -#include "HttpHeaderTools.h" +#include "unitTestMain.h" -// TODO: refactor as cppunit test +class TestHttpRange : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE(TestHttpRange); + CPPUNIT_TEST(testRangeParser); + CPPUNIT_TEST(testRangeIter); + CPPUNIT_TEST(testRangeCanonization); + CPPUNIT_TEST_SUITE_END(); + +protected: + void testRangeParser(); + void testRangeParsing(char const *rangestring); + void testRangeIter(); + void testRangeCanonization(); +}; +CPPUNIT_TEST_SUITE_REGISTRATION( TestHttpRange ); + +void +TestHttpRange::testRangeParser() +{ + testRangeParsing("bytes=0-3"); + testRangeParsing("bytes=-3"); + testRangeParsing("bytes=1-"); + testRangeParsing("bytes=0-3, 1-, -2"); +} -static void -testRangeParser(char const *rangestring) +void +TestHttpRange::testRangeParsing(char const *rangestring) { String aString (rangestring); HttpHdrRange *range = HttpHdrRange::ParseCreate (&aString); @@ -25,11 +47,11 @@ testRangeParser(char const *rangestring) HttpHdrRange copy(*range); - assert (copy.specs.size() == range->specs.size()); + CPPUNIT_ASSERT_EQUAL(range->specs.size(), copy.specs.size()); HttpHdrRange::iterator pos = range->begin(); - assert (*pos); + CPPUNIT_ASSERT(*pos); delete range; } @@ -46,11 +68,11 @@ rangeFromString(char const *rangestring) return range; } -static void -testRangeIter () +void +TestHttpRange::testRangeIter() { HttpHdrRange *range=rangeFromString("bytes=0-3, 1-, -2"); - assert (range->specs.size() == 3); + CPPUNIT_ASSERT_EQUAL(static_cast(3), range->specs.size()); size_t counter = 0; HttpHdrRange::iterator i = range->begin(); @@ -59,19 +81,19 @@ testRangeIter () ++i; } - assert (counter == 3); + CPPUNIT_ASSERT_EQUAL(static_cast(3), counter); i = range->begin(); - assert (i - range->begin() == 0); + CPPUNIT_ASSERT_EQUAL(static_cast(0), i - range->begin()); ++i; - assert (i - range->begin() == 1); - assert (i - range->end() == -2); + CPPUNIT_ASSERT_EQUAL(static_cast(1), i - range->begin()); + CPPUNIT_ASSERT_EQUAL(static_cast(-2), i - range->end()); } -static void -testRangeCanonization() +void +TestHttpRange::testRangeCanonization() { HttpHdrRange *range=rangeFromString("bytes=0-3, 1-, -2"); - assert (range->specs.size() == 3); + CPPUNIT_ASSERT_EQUAL(static_cast(3), range->specs.size()); /* 0-3 needs a content length of 4 */ /* This passes in the extant code - but should it? */ @@ -79,13 +101,13 @@ testRangeCanonization() if (!range->canonize(3)) exit(EXIT_FAILURE); - assert (range->specs.size() == 3); + CPPUNIT_ASSERT_EQUAL(static_cast(3), range->specs.size()); delete range; range=rangeFromString("bytes=0-3, 1-, -2"); - assert (range->specs.size() == 3); + CPPUNIT_ASSERT_EQUAL(static_cast(3), range->specs.size()); /* 0-3 needs a content length of 4 */ if (!range->canonize(4)) @@ -95,7 +117,7 @@ testRangeCanonization() range=rangeFromString("bytes=3-6"); - assert (range->specs.size() == 1); + CPPUNIT_ASSERT_EQUAL(static_cast(1), range->specs.size()); /* 3-6 needs a content length of 4 or more */ if (range->canonize(3)) @@ -105,7 +127,7 @@ testRangeCanonization() range=rangeFromString("bytes=3-6"); - assert (range->specs.size() == 1); + CPPUNIT_ASSERT_EQUAL(static_cast(1), range->specs.size()); /* 3-6 needs a content length of 4 or more */ if (!range->canonize(4)) @@ -115,37 +137,19 @@ testRangeCanonization() range=rangeFromString("bytes=1-1,2-3"); - assert (range->specs.size()== 2); + CPPUNIT_ASSERT_EQUAL(static_cast(2), range->specs.size()); if (!range->canonize(4)) exit(EXIT_FAILURE); - assert (range->specs.size() == 2); + CPPUNIT_ASSERT_EQUAL(static_cast(2), range->specs.size()); delete range; } int -main(int, char **) +main(int argc, char *argv[]) { - try { - Mem::Init(); - /* enable for debugging to console */ - // Debug::debugOptions = xstrdup("ALL,1 64,9"); - // Debug::BanCacheLogUse(); - testRangeParser("bytes=0-3"); - testRangeParser("bytes=-3"); - testRangeParser("bytes=1-"); - testRangeParser("bytes=0-3, 1-, -2"); - testRangeIter(); - testRangeCanonization(); - } catch (const std::exception &e) { - printf("Error: dying from an unhandled exception: %s\n", e.what()); - return EXIT_FAILURE; - } catch (...) { - printf("Error: dying from an unhandled exception.\n"); - return EXIT_FAILURE; - } - return EXIT_SUCCESS; + return TestProgram().run(argc, argv); }