From 03f1df9ff7894a6d910120c82bba49e6193178ee Mon Sep 17 00:00:00 2001 From: Gordon Sim Date: Thu, 4 Oct 2007 16:06:05 +0000 Subject: Additional tests and fixes git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@581957 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/tests/AccumulatedAckTest.cpp | 37 ++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'cpp/src/tests/AccumulatedAckTest.cpp') diff --git a/cpp/src/tests/AccumulatedAckTest.cpp b/cpp/src/tests/AccumulatedAckTest.cpp index 62245e463b..cbe44e6814 100644 --- a/cpp/src/tests/AccumulatedAckTest.cpp +++ b/cpp/src/tests/AccumulatedAckTest.cpp @@ -32,6 +32,7 @@ class AccumulatedAckTest : public CppUnit::TestCase CPPUNIT_TEST_SUITE(AccumulatedAckTest); CPPUNIT_TEST(testGeneral); CPPUNIT_TEST(testCovers); + CPPUNIT_TEST(testUpdateFromCompletionData); CPPUNIT_TEST(testCase1); CPPUNIT_TEST(testCase2); CPPUNIT_TEST(testCase3); @@ -39,6 +40,7 @@ class AccumulatedAckTest : public CppUnit::TestCase CPPUNIT_TEST(testConsolidation1); CPPUNIT_TEST(testConsolidation2); CPPUNIT_TEST(testConsolidation3); + CPPUNIT_TEST(testConsolidation4); CPPUNIT_TEST_SUITE_END(); public: @@ -97,6 +99,25 @@ public: CPPUNIT_ASSERT(!covers(ack, 10)); } + void testUpdateFromCompletionData() + { + AccumulatedAck ack(0); + SequenceNumber mark(2); + SequenceNumberSet ranges; + ranges.addRange(SequenceNumber(5), SequenceNumber(8)); + ranges.addRange(SequenceNumber(10), SequenceNumber(15)); + ranges.addRange(SequenceNumber(9), SequenceNumber(9)); + ranges.addRange(SequenceNumber(3), SequenceNumber(4)); + + ack.update(mark, ranges); + + for(int i = 0; i <= 15; i++) { + CPPUNIT_ASSERT(covers(ack, i)); + } + CPPUNIT_ASSERT(!covers(ack, 16)); + CPPUNIT_ASSERT_EQUAL((uint32_t) 15, ack.mark.getValue()); + } + void testCase1() { AccumulatedAck ack(3); @@ -205,6 +226,22 @@ public: CPPUNIT_ASSERT_EQUAL((size_t) 0, ack.ranges.size()); } + void testConsolidation4() + { + AccumulatedAck ack(0); + ack.update(SequenceNumber(0), SequenceNumber(2)); + ack.update(SequenceNumber(5), SequenceNumber(8)); + ack.update(SequenceNumber(10), SequenceNumber(15)); + ack.update(SequenceNumber(9), SequenceNumber(9)); + ack.update(SequenceNumber(3), SequenceNumber(4)); + + for(int i = 0; i <= 15; i++) { + CPPUNIT_ASSERT(covers(ack, i)); + } + CPPUNIT_ASSERT(!covers(ack, 16)); + CPPUNIT_ASSERT_EQUAL((uint32_t) 15, ack.mark.getValue()); + } + }; // Make this test suite a plugin. -- cgit v1.2.1