HttpHeaderTest.cc 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #include "HttpHeader.h"
  2. #include "Range.h"
  3. #include <cppunit/extensions/HelperMacros.h>
  4. namespace aria2 {
  5. class HttpHeaderTest:public CppUnit::TestFixture {
  6. CPPUNIT_TEST_SUITE(HttpHeaderTest);
  7. CPPUNIT_TEST(testGetRange);
  8. CPPUNIT_TEST(testGet);
  9. CPPUNIT_TEST(testClearField);
  10. CPPUNIT_TEST_SUITE_END();
  11. public:
  12. void testGetRange();
  13. void testGet();
  14. void testClearField();
  15. };
  16. CPPUNIT_TEST_SUITE_REGISTRATION( HttpHeaderTest );
  17. void HttpHeaderTest::testGetRange()
  18. {
  19. {
  20. HttpHeader httpHeader;
  21. httpHeader.put("Content-Range",
  22. "9223372036854775800-9223372036854775801/9223372036854775807");
  23. SharedHandle<Range> range = httpHeader.getRange();
  24. CPPUNIT_ASSERT_EQUAL((off_t)9223372036854775800LL, range->getStartByte());
  25. CPPUNIT_ASSERT_EQUAL((off_t)9223372036854775801LL, range->getEndByte());
  26. CPPUNIT_ASSERT_EQUAL((uint64_t)9223372036854775807ULL, range->getEntityLength());
  27. }
  28. {
  29. HttpHeader httpHeader;
  30. httpHeader.put("Content-Range",
  31. "9223372036854775800-9223372036854775801/9223372036854775807");
  32. SharedHandle<Range> range = httpHeader.getRange();
  33. CPPUNIT_ASSERT_EQUAL((off_t)9223372036854775800LL, range->getStartByte());
  34. CPPUNIT_ASSERT_EQUAL((off_t)9223372036854775801LL, range->getEndByte());
  35. CPPUNIT_ASSERT_EQUAL((uint64_t)9223372036854775807ULL, range->getEntityLength());
  36. }
  37. {
  38. HttpHeader httpHeader;
  39. httpHeader.put("Content-Range", "bytes */1024");
  40. SharedHandle<Range> range = httpHeader.getRange();
  41. CPPUNIT_ASSERT_EQUAL((off_t)0, range->getStartByte());
  42. CPPUNIT_ASSERT_EQUAL((off_t)0, range->getEndByte());
  43. CPPUNIT_ASSERT_EQUAL((uint64_t)0, range->getEntityLength());
  44. }
  45. {
  46. HttpHeader httpHeader;
  47. httpHeader.put("Content-Range", "bytes 0-9/*");
  48. SharedHandle<Range> range = httpHeader.getRange();
  49. CPPUNIT_ASSERT_EQUAL((off_t)0, range->getStartByte());
  50. CPPUNIT_ASSERT_EQUAL((off_t)0, range->getEndByte());
  51. CPPUNIT_ASSERT_EQUAL((uint64_t)0, range->getEntityLength());
  52. }
  53. }
  54. void HttpHeaderTest::testGet()
  55. {
  56. HttpHeader h;
  57. h.put("A", "100");
  58. h.put("a", "101");
  59. h.put("B", "200");
  60. std::vector<std::string> r(h.get("A"));
  61. CPPUNIT_ASSERT_EQUAL((size_t)2, r.size());
  62. CPPUNIT_ASSERT_EQUAL(std::string("100"), r[0]);
  63. CPPUNIT_ASSERT_EQUAL(std::string("101"), r[1]);
  64. }
  65. void HttpHeaderTest::testClearField()
  66. {
  67. HttpHeader h;
  68. h.setStatusCode(200);
  69. h.setVersion(HttpHeader::HTTP_1_1);
  70. h.put("Foo", "Bar");
  71. CPPUNIT_ASSERT_EQUAL(std::string("Bar"), h.getFirst("Foo"));
  72. h.clearField();
  73. CPPUNIT_ASSERT_EQUAL(std::string(""), h.getFirst("Foo"));
  74. CPPUNIT_ASSERT_EQUAL(200, h.getStatusCode());
  75. CPPUNIT_ASSERT_EQUAL(std::string(HttpHeader::HTTP_1_1), h.getVersion());
  76. }
  77. } // namespace aria2