mirror of
https://github.com/reactos/reactos.git
synced 2024-11-01 20:32:36 +00:00
73 lines
1.4 KiB
C++
73 lines
1.4 KiB
C++
#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());
|
|
}
|