TimeTest.cc 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. #include "TimeA2.h"
  2. #include <iostream>
  3. #include <cppunit/extensions/HelperMacros.h>
  4. #include "Exception.h"
  5. #include "util.h"
  6. namespace aria2 {
  7. class TimeTest:public CppUnit::TestFixture {
  8. CPPUNIT_TEST_SUITE(TimeTest);
  9. CPPUNIT_TEST(testParseRFC1123);
  10. CPPUNIT_TEST(testParseRFC850);
  11. CPPUNIT_TEST(testParseRFC850Ext);
  12. CPPUNIT_TEST(testParseHTTPDate);
  13. CPPUNIT_TEST(testOperatorLess);
  14. CPPUNIT_TEST(testElapsed);
  15. CPPUNIT_TEST(testToHTTPDate);
  16. CPPUNIT_TEST_SUITE_END();
  17. public:
  18. void setUp() {}
  19. void tearDown() {}
  20. void testParseRFC1123();
  21. void testParseRFC850();
  22. void testParseRFC850Ext();
  23. void testParseHTTPDate();
  24. void testOperatorLess();
  25. void testElapsed();
  26. void testToHTTPDate();
  27. };
  28. CPPUNIT_TEST_SUITE_REGISTRATION(TimeTest);
  29. void TimeTest::testParseRFC1123()
  30. {
  31. Time t1 = Time::parseRFC1123("Sat, 06 Sep 2008 15:26:33 GMT");
  32. CPPUNIT_ASSERT_EQUAL((time_t)1220714793, t1.getTime());
  33. }
  34. void TimeTest::testParseRFC850()
  35. {
  36. Time t1 = Time::parseRFC850("Saturday, 06-Sep-08 15:26:33 GMT");
  37. CPPUNIT_ASSERT_EQUAL((time_t)1220714793, t1.getTime());
  38. }
  39. void TimeTest::testParseRFC850Ext()
  40. {
  41. Time t1 = Time::parseRFC850Ext("Saturday, 06-Sep-2008 15:26:33 GMT");
  42. CPPUNIT_ASSERT_EQUAL((time_t)1220714793, t1.getTime());
  43. }
  44. void TimeTest::testParseHTTPDate()
  45. {
  46. CPPUNIT_ASSERT_EQUAL((time_t)1220714793,
  47. Time::parseHTTPDate
  48. ("Sat, 06 Sep 2008 15:26:33 GMT").getTime());
  49. CPPUNIT_ASSERT_EQUAL((time_t)1220714793,
  50. Time::parseHTTPDate
  51. ("Sat, 06-Sep-2008 15:26:33 GMT").getTime());
  52. CPPUNIT_ASSERT_EQUAL((time_t)1220714793,
  53. Time::parseHTTPDate
  54. ("Sat, 06-Sep-08 15:26:33 GMT").getTime());
  55. CPPUNIT_ASSERT(Time::parseHTTPDate
  56. ("Sat, 2008-09-06 15:26:33 GMT").bad());
  57. }
  58. void TimeTest::testOperatorLess()
  59. {
  60. CPPUNIT_ASSERT(Time(1) < Time(2));
  61. CPPUNIT_ASSERT(!(Time(1) < Time(1)));
  62. CPPUNIT_ASSERT(!(Time(2) < Time(1)));
  63. struct timeval tv1;
  64. tv1.tv_sec = 0;
  65. tv1.tv_usec = 1;
  66. struct timeval tv2;
  67. tv2.tv_sec = 1;
  68. tv2.tv_usec = 0;
  69. CPPUNIT_ASSERT(Time(tv1) < Time(tv2));
  70. tv2.tv_sec = 0;
  71. CPPUNIT_ASSERT(Time(tv2) < Time(tv1));
  72. }
  73. void TimeTest::testToHTTPDate()
  74. {
  75. Time t(1220714793);
  76. CPPUNIT_ASSERT_EQUAL(std::string("Sat, 06 Sep 2008 15:26:33 GMT"),
  77. t.toHTTPDate());
  78. }
  79. void TimeTest::testElapsed()
  80. {
  81. struct timeval now;
  82. gettimeofday(&now, 0);
  83. {
  84. struct timeval tv = now;
  85. CPPUNIT_ASSERT(!Time(tv).elapsed(1));
  86. }
  87. {
  88. struct timeval tv;
  89. suseconds_t usec = now.tv_usec+500000;
  90. if(usec > 999999) {
  91. tv.tv_sec = now.tv_sec+usec/1000000;
  92. tv.tv_usec = usec%1000000;
  93. } else {
  94. tv.tv_sec = now.tv_sec;
  95. tv.tv_usec = usec;
  96. }
  97. CPPUNIT_ASSERT(!Time(tv).elapsed(1));
  98. }
  99. {
  100. struct timeval tv = { now.tv_sec-1, now.tv_usec };
  101. CPPUNIT_ASSERT(Time(tv).elapsed(1));
  102. }
  103. }
  104. } // namespace aria2