]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
testHttpRange: use cppunit framework (#1816) auto master
authorFrancesco Chemolli <5175948+kinkie@users.noreply.github.com>
Thu, 23 May 2024 03:49:46 +0000 (03:49 +0000)
committerSquid Anubis <squid-anubis@squid-cache.org>
Thu, 23 May 2024 03:49:53 +0000 (03:49 +0000)
Resolve a long-standing TODO and stop hand-rolling HTTP range unit tests

src/Makefile.am
src/tests/testHttpRange.cc [moved from src/tests/test_http_range.cc with 51% similarity]

index 2db91a28d70be8803a6edc83f01a1c8a79c9cb41..32e17f827a421e74f220c9ebab704bb37ed66ddd 100644 (file)
@@ -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 = \
similarity index 51%
rename from src/tests/test_http_range.cc
rename to src/tests/testHttpRange.cc
index e28892402833829ccc60f1ad91c124d3f8709f77..7b03bf889e26025bf8df18e997f4db37af95d5cf 100644 (file)
@@ -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<size_t>(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<size_t>(3), counter);
     i = range->begin();
-    assert (i - range->begin() == 0);
+    CPPUNIT_ASSERT_EQUAL(static_cast<ptrdiff_t>(0), i - range->begin());
     ++i;
-    assert (i - range->begin() == 1);
-    assert (i - range->end() == -2);
+    CPPUNIT_ASSERT_EQUAL(static_cast<ptrdiff_t>(1), i - range->begin());
+    CPPUNIT_ASSERT_EQUAL(static_cast<ptrdiff_t>(-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<size_t>(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<size_t>(3), range->specs.size());
 
     delete range;
 
     range=rangeFromString("bytes=0-3, 1-, -2");
 
-    assert (range->specs.size() == 3);
+    CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(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<size_t>(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<size_t>(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<size_t>(2), range->specs.size());
 
     if (!range->canonize(4))
         exit(EXIT_FAILURE);
 
-    assert (range->specs.size() == 2);
+    CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(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);
 }