SequenceTest.cc 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #include "Sequence.h"
  2. #include <cppunit/extensions/HelperMacros.h>
  3. namespace aria2 {
  4. class SequenceTest:public CppUnit::TestFixture {
  5. CPPUNIT_TEST_SUITE(SequenceTest);
  6. CPPUNIT_TEST(testParseAndNext);
  7. CPPUNIT_TEST(testParseAndNext2);
  8. CPPUNIT_TEST(testFlush);
  9. CPPUNIT_TEST_SUITE_END();
  10. public:
  11. void testParseAndNext();
  12. void testParseAndNext2();
  13. void testFlush();
  14. };
  15. CPPUNIT_TEST_SUITE_REGISTRATION(SequenceTest);
  16. typedef Sequence<int> IntSequence;
  17. void SequenceTest::testParseAndNext()
  18. {
  19. IntSequence::Value params[] = {
  20. IntSequence::Value(1, 2),
  21. IntSequence::Value(3, 9),
  22. IntSequence::Value(10, 11),
  23. };
  24. IntSequence seq = IntSequence(IntSequence::Values(&params[0], &params[3]));
  25. CPPUNIT_ASSERT(seq.hasNext());
  26. CPPUNIT_ASSERT_EQUAL(1, seq.next());
  27. CPPUNIT_ASSERT(seq.hasNext());
  28. CPPUNIT_ASSERT_EQUAL(3, seq.next());
  29. CPPUNIT_ASSERT(seq.hasNext());
  30. CPPUNIT_ASSERT_EQUAL(4, seq.next());
  31. CPPUNIT_ASSERT(seq.hasNext());
  32. CPPUNIT_ASSERT_EQUAL(5, seq.next());
  33. CPPUNIT_ASSERT(seq.hasNext());
  34. CPPUNIT_ASSERT_EQUAL(6, seq.next());
  35. CPPUNIT_ASSERT(seq.hasNext());
  36. CPPUNIT_ASSERT_EQUAL(7, seq.next());
  37. CPPUNIT_ASSERT(seq.hasNext());
  38. CPPUNIT_ASSERT_EQUAL(8, seq.next());
  39. CPPUNIT_ASSERT(seq.hasNext());
  40. CPPUNIT_ASSERT_EQUAL(10, seq.next());
  41. CPPUNIT_ASSERT(!seq.hasNext());
  42. CPPUNIT_ASSERT_EQUAL(0, seq.next());
  43. }
  44. void SequenceTest::testParseAndNext2()
  45. {
  46. IntSequence::Value params[] = {
  47. IntSequence::Value(1, 2),
  48. };
  49. IntSequence seq = IntSequence(IntSequence::Values(&params[0], &params[1]));
  50. CPPUNIT_ASSERT(seq.hasNext());
  51. CPPUNIT_ASSERT_EQUAL(1, seq.next());
  52. CPPUNIT_ASSERT(!seq.hasNext());
  53. CPPUNIT_ASSERT_EQUAL(0, seq.next());
  54. }
  55. void SequenceTest::testFlush()
  56. {
  57. IntSequence::Value params[] = {
  58. IntSequence::Value(1, 2),
  59. IntSequence::Value(3, 9),
  60. IntSequence::Value(10, 11),
  61. };
  62. IntSequence seq = IntSequence(IntSequence::Values(&params[0], &params[3]));
  63. std::vector<int> r = seq.flush();
  64. int answers[] = { 1, 3, 4, 5, 6, 7, 8, 10 };
  65. CPPUNIT_ASSERT(std::equal(r.begin(), r.end(), &answers[0]));
  66. }
  67. } // namespace aria2