*/
#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);
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;
}
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();
++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? */
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))
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))
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))
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);
}