SequenceTest.cc 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #include "Sequence.h"
  2. #include <cppunit/extensions/HelperMacros.h>
  3. using namespace std;
  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<int32_t> 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((int32_t)1, seq.next());
  27. CPPUNIT_ASSERT(seq.hasNext());
  28. CPPUNIT_ASSERT_EQUAL((int32_t)3, seq.next());
  29. CPPUNIT_ASSERT(seq.hasNext());
  30. CPPUNIT_ASSERT_EQUAL((int32_t)4, seq.next());
  31. CPPUNIT_ASSERT(seq.hasNext());
  32. CPPUNIT_ASSERT_EQUAL((int32_t)5, seq.next());
  33. CPPUNIT_ASSERT(seq.hasNext());
  34. CPPUNIT_ASSERT_EQUAL((int32_t)6, seq.next());
  35. CPPUNIT_ASSERT(seq.hasNext());
  36. CPPUNIT_ASSERT_EQUAL((int32_t)7, seq.next());
  37. CPPUNIT_ASSERT(seq.hasNext());
  38. CPPUNIT_ASSERT_EQUAL((int32_t)8, seq.next());
  39. CPPUNIT_ASSERT(seq.hasNext());
  40. CPPUNIT_ASSERT_EQUAL((int32_t)10, seq.next());
  41. CPPUNIT_ASSERT(!seq.hasNext());
  42. CPPUNIT_ASSERT_EQUAL((int32_t)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((int32_t)1, seq.next());
  52. CPPUNIT_ASSERT(!seq.hasNext());
  53. CPPUNIT_ASSERT_EQUAL((int32_t)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. deque<int32_t> r = seq.flush();
  64. int32_t answers[] = { 1, 3, 4, 5, 6, 7, 8, 10 };
  65. CPPUNIT_ASSERT(equal(r.begin(), r.end(), &answers[0]));
  66. }