Update contrib.
6 #include "cppunit/cppunit_proxy.h"
8 #if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
15 class RotateTest : public CPPUNIT_NS::TestCase
17 CPPUNIT_TEST_SUITE(RotateTest);
18 CPPUNIT_TEST(rotate0);
19 CPPUNIT_TEST(rotate1);
20 CPPUNIT_TEST(rotcopy0);
21 CPPUNIT_TEST(rotcopy1);
22 CPPUNIT_TEST_SUITE_END();
31 CPPUNIT_TEST_SUITE_REGISTRATION(RotateTest);
34 // tests implementation
36 void RotateTest::rotate0()
38 int numbers[6] = { 0, 1, 2, 3, 4, 5 };
40 rotate((int*)numbers, numbers + 3, numbers + 6);
41 CPPUNIT_ASSERT(numbers[0]==3);
42 CPPUNIT_ASSERT(numbers[1]==4);
43 CPPUNIT_ASSERT(numbers[2]==5);
44 CPPUNIT_ASSERT(numbers[3]==0);
45 CPPUNIT_ASSERT(numbers[4]==1);
46 CPPUNIT_ASSERT(numbers[5]==2);
48 void RotateTest::rotate1()
51 __iota(v1.begin(), v1.end(), 0);
53 rotate(v1.begin(), v1.begin()+1, v1.end());
54 CPPUNIT_ASSERT(v1[0]==1);
55 CPPUNIT_ASSERT(v1[1]==2);
56 CPPUNIT_ASSERT(v1[2]==3);
57 CPPUNIT_ASSERT(v1[3]==4);
58 CPPUNIT_ASSERT(v1[4]==5);
59 CPPUNIT_ASSERT(v1[5]==6);
60 CPPUNIT_ASSERT(v1[6]==7);
61 CPPUNIT_ASSERT(v1[7]==8);
62 CPPUNIT_ASSERT(v1[8]==9);
63 CPPUNIT_ASSERT(v1[9]==0);
65 rotate(v1.begin(), v1.begin()+2, v1.end());
66 CPPUNIT_ASSERT(v1[0]==3);
67 CPPUNIT_ASSERT(v1[1]==4);
68 CPPUNIT_ASSERT(v1[2]==5);
69 CPPUNIT_ASSERT(v1[3]==6);
70 CPPUNIT_ASSERT(v1[4]==7);
71 CPPUNIT_ASSERT(v1[5]==8);
72 CPPUNIT_ASSERT(v1[6]==9);
73 CPPUNIT_ASSERT(v1[7]==0);
74 CPPUNIT_ASSERT(v1[8]==1);
75 CPPUNIT_ASSERT(v1[9]==2);
77 rotate(v1.begin(), v1.begin()+7, v1.end());
78 CPPUNIT_ASSERT(v1[0]==0);
79 CPPUNIT_ASSERT(v1[1]==1);
80 CPPUNIT_ASSERT(v1[2]==2);
81 CPPUNIT_ASSERT(v1[3]==3);
82 CPPUNIT_ASSERT(v1[4]==4);
83 CPPUNIT_ASSERT(v1[5]==5);
84 CPPUNIT_ASSERT(v1[6]==6);
85 CPPUNIT_ASSERT(v1[7]==7);
86 CPPUNIT_ASSERT(v1[8]==8);
87 CPPUNIT_ASSERT(v1[9]==9);
90 void RotateTest::rotcopy0()
92 int numbers[6] = { 0, 1, 2, 3, 4, 5 };
95 rotate_copy((int*)numbers, (int*)numbers + 3, (int*)numbers + 6, (int*)result);
97 CPPUNIT_ASSERT(result[0]==3);
98 CPPUNIT_ASSERT(result[1]==4);
99 CPPUNIT_ASSERT(result[2]==5);
100 CPPUNIT_ASSERT(result[3]==0);
101 CPPUNIT_ASSERT(result[4]==1);
102 CPPUNIT_ASSERT(result[5]==2);
104 void RotateTest::rotcopy1()
107 __iota(v1.begin(), v1.end(), 0);
108 vector <int> v2(v1.size());
110 rotate_copy(v1.begin(), v1.begin()+1, v1.end(), v2.begin());
111 CPPUNIT_ASSERT(v2[0]==1);
112 CPPUNIT_ASSERT(v2[1]==2);
113 CPPUNIT_ASSERT(v2[2]==3);
114 CPPUNIT_ASSERT(v2[3]==4);
115 CPPUNIT_ASSERT(v2[4]==5);
116 CPPUNIT_ASSERT(v2[5]==6);
117 CPPUNIT_ASSERT(v2[6]==7);
118 CPPUNIT_ASSERT(v2[7]==8);
119 CPPUNIT_ASSERT(v2[8]==9);
120 CPPUNIT_ASSERT(v2[9]==0);
122 rotate_copy(v1.begin(), v1.begin()+3, v1.end(), v2.begin());
123 CPPUNIT_ASSERT(v2[0]==3);
124 CPPUNIT_ASSERT(v2[1]==4);
125 CPPUNIT_ASSERT(v2[2]==5);
126 CPPUNIT_ASSERT(v2[3]==6);
127 CPPUNIT_ASSERT(v2[4]==7);
128 CPPUNIT_ASSERT(v2[5]==8);
129 CPPUNIT_ASSERT(v2[6]==9);
130 CPPUNIT_ASSERT(v2[7]==0);
131 CPPUNIT_ASSERT(v2[8]==1);
132 CPPUNIT_ASSERT(v2[9]==2);