SegListTest.cc 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #include "SegList.h"
  2. #include <cppunit/extensions/HelperMacros.h>
  3. namespace aria2 {
  4. class SegListTest:public CppUnit::TestFixture {
  5. CPPUNIT_TEST_SUITE(SegListTest);
  6. CPPUNIT_TEST(testNext);
  7. CPPUNIT_TEST(testPeek);
  8. CPPUNIT_TEST(testClear);
  9. CPPUNIT_TEST(testNormalize);
  10. CPPUNIT_TEST_SUITE_END();
  11. public:
  12. void testNext();
  13. void testPeek();
  14. void testClear();
  15. void testNormalize();
  16. };
  17. CPPUNIT_TEST_SUITE_REGISTRATION(SegListTest);
  18. void SegListTest::testNext()
  19. {
  20. SegList<int> sgl;
  21. sgl.add(-500, -498);
  22. sgl.add(5, 10);
  23. sgl.add(1, 5);
  24. for(int i = -500; i < -498; ++i) {
  25. CPPUNIT_ASSERT(sgl.hasNext());
  26. CPPUNIT_ASSERT_EQUAL(i, sgl.next());
  27. }
  28. for(int i = 5; i < 10; ++i) {
  29. CPPUNIT_ASSERT(sgl.hasNext());
  30. CPPUNIT_ASSERT_EQUAL(i, sgl.next());
  31. }
  32. for(int i = 1; i < 5; ++i) {
  33. CPPUNIT_ASSERT(sgl.hasNext());
  34. CPPUNIT_ASSERT_EQUAL(i, sgl.next());
  35. }
  36. CPPUNIT_ASSERT(!sgl.hasNext());
  37. CPPUNIT_ASSERT_EQUAL(0, sgl.next());
  38. }
  39. void SegListTest::testPeek()
  40. {
  41. SegList<int> sgl;
  42. sgl.add(1, 3);
  43. sgl.add(4, 5);
  44. CPPUNIT_ASSERT_EQUAL(1, sgl.peek());
  45. CPPUNIT_ASSERT_EQUAL(1, sgl.peek());
  46. CPPUNIT_ASSERT_EQUAL(1, sgl.next());
  47. CPPUNIT_ASSERT_EQUAL(2, sgl.peek());
  48. CPPUNIT_ASSERT_EQUAL(2, sgl.next());
  49. CPPUNIT_ASSERT_EQUAL(4, sgl.peek());
  50. CPPUNIT_ASSERT_EQUAL(4, sgl.next());
  51. CPPUNIT_ASSERT(!sgl.hasNext());
  52. }
  53. void SegListTest::testClear()
  54. {
  55. SegList<int> sgl;
  56. sgl.add(1, 3);
  57. CPPUNIT_ASSERT_EQUAL(1, sgl.next());
  58. sgl.clear();
  59. CPPUNIT_ASSERT(!sgl.hasNext());
  60. sgl.add(2, 3);
  61. CPPUNIT_ASSERT_EQUAL(2, sgl.next());
  62. }
  63. void SegListTest::testNormalize()
  64. {
  65. SegList<int> sgl;
  66. sgl.add(10, 15);
  67. sgl.add(0, 1);
  68. sgl.add(1, 5);
  69. sgl.add(14, 16);
  70. sgl.add(2, 4);
  71. sgl.add(20, 21);
  72. sgl.normalize();
  73. for(int i = 0; i < 5; ++i) {
  74. CPPUNIT_ASSERT(sgl.hasNext());
  75. CPPUNIT_ASSERT_EQUAL(i, sgl.next());
  76. }
  77. for(int i = 10; i < 16; ++i) {
  78. CPPUNIT_ASSERT(sgl.hasNext());
  79. CPPUNIT_ASSERT_EQUAL(i, sgl.next());
  80. }
  81. CPPUNIT_ASSERT(sgl.hasNext());
  82. CPPUNIT_ASSERT_EQUAL(20, sgl.next());
  83. CPPUNIT_ASSERT(!sgl.hasNext());
  84. }
  85. } // namespace aria2