#include <vector> #include <list> #include <algorithm> #include "cppunit/cppunit_proxy.h" #if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES) using namespace std; #endif // // TestCase class // class ReviterTest : public CPPUNIT_NS::TestCase { CPPUNIT_TEST_SUITE(ReviterTest); CPPUNIT_TEST(reviter1); CPPUNIT_TEST(reviter2); CPPUNIT_TEST(revbit1); CPPUNIT_TEST_SUITE_END(); protected: void reviter1(); void reviter2(); void revbit1(); }; CPPUNIT_TEST_SUITE_REGISTRATION(ReviterTest); // // tests implementation // void ReviterTest::reviter1() { int array [] = { 1, 5, 2, 3 }; vector<int> v(array, array + 4); typedef vector<int>::reverse_iterator reviter; reviter r(v.rend()); r--; CPPUNIT_ASSERT(*r-- == 1); CPPUNIT_ASSERT(*r-- == 5); CPPUNIT_ASSERT(*r-- == 2); CPPUNIT_ASSERT(*r == 3); CPPUNIT_ASSERT(r==v.rbegin()); } void ReviterTest::reviter2() { int array [] = { 1, 5, 2, 3 }; vector<int> v(array, array + 4); vector<int>::reverse_iterator r; r = v.rbegin(); CPPUNIT_ASSERT(*r++ == 3); CPPUNIT_ASSERT(*r++ == 2); CPPUNIT_ASSERT(*r++ == 5); CPPUNIT_ASSERT(*r++ == 1); CPPUNIT_ASSERT(r==v.rend()); } void ReviterTest::revbit1() { int array [] = { 1, 5, 2, 3 }; list<int> v(array, array + 4); list<int>::reverse_iterator r(v.rbegin()); CPPUNIT_ASSERT(*r++ == 3); CPPUNIT_ASSERT(*r++ == 2); CPPUNIT_ASSERT(*r++ == 5); CPPUNIT_ASSERT(*r++ == 1); CPPUNIT_ASSERT(r==v.rend()); }