Skip to content

Commit ad7b011

Browse files
committed
add tests
1 parent fa900d5 commit ad7b011

File tree

2 files changed

+144
-2
lines changed

2 files changed

+144
-2
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
ench
21
*~
32
*.swp
43
.bin
4+
*.gc*
5+
coverage.txt

test/test.cpp

Lines changed: 142 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,48 @@
1111

1212
using namespace gfx;
1313

14+
BOOST_AUTO_TEST_CASE( simple0 ) {
15+
std::vector<int> a;
16+
17+
timsort(a.begin(), a.end(), std::less<int>());
18+
19+
BOOST_CHECK_EQUAL( a.size(), 0 );
20+
}
21+
22+
BOOST_AUTO_TEST_CASE( simple1 ) {
23+
std::vector<int> a;
24+
25+
a.push_back(42);
26+
27+
timsort(a.begin(), a.end(), std::less<int>());
28+
29+
BOOST_CHECK_EQUAL( a.size(), 1 );
30+
BOOST_CHECK_EQUAL( a[0], 42 );
31+
}
32+
33+
BOOST_AUTO_TEST_CASE( simple2 ) {
34+
std::vector<int> a;
35+
36+
a.push_back(10);
37+
a.push_back(20);
38+
39+
timsort(a.begin(), a.end(), std::less<int>());
40+
41+
BOOST_CHECK_EQUAL( a.size(), 2 );
42+
BOOST_CHECK_EQUAL( a[0], 10);
43+
BOOST_CHECK_EQUAL( a[1], 20 );
44+
45+
a.clear();
46+
a.push_back(20);
47+
a.push_back(10);
48+
49+
timsort(a.begin(), a.end(), std::less<int>());
50+
51+
BOOST_CHECK_EQUAL( a.size(), 2 );
52+
BOOST_CHECK_EQUAL( a[0], 10);
53+
BOOST_CHECK_EQUAL( a[1], 20 );
54+
}
55+
1456
BOOST_AUTO_TEST_CASE( simple10 ) {
1557
std::vector<int> a;
1658
a.push_back(60);
@@ -65,6 +107,7 @@ BOOST_AUTO_TEST_CASE( shuffle30 ) {
65107

66108
timsort(a.begin(), a.end(), std::less<int>());
67109

110+
BOOST_CHECK_EQUAL(a.size(), size);
68111
for(int i = 0; i < size; ++i) {
69112
BOOST_CHECK_EQUAL( a[i], (i+1) * 10 );
70113
}
@@ -82,6 +125,7 @@ BOOST_AUTO_TEST_CASE( shuffle31 ) {
82125

83126
timsort(a.begin(), a.end(), std::less<int>());
84127

128+
BOOST_CHECK_EQUAL(a.size(), size);
85129
for(int i = 0; i < size; ++i) {
86130
BOOST_CHECK_EQUAL( a[i], (i+1) * 10 );
87131
}
@@ -98,6 +142,7 @@ BOOST_AUTO_TEST_CASE( shuffle32 ) {
98142

99143
timsort(a.begin(), a.end(), std::less<int>());
100144

145+
BOOST_CHECK_EQUAL(a.size(), size);
101146
for(int i = 0; i < size; ++i) {
102147
BOOST_CHECK_EQUAL( a[i], (i+1) * 10 );
103148
}
@@ -114,13 +159,33 @@ BOOST_AUTO_TEST_CASE( shuffle128 ) {
114159

115160
timsort(a.begin(), a.end(), std::less<int>());
116161

162+
BOOST_CHECK_EQUAL(a.size(), size);
117163
for(int i = 0; i < size; ++i) {
118164
BOOST_CHECK_EQUAL( a[i], (i+1) * 10 );
119165
}
120166
}
121167

168+
BOOST_AUTO_TEST_CASE( shuffle1023 ) {
169+
const int size = 1023; // odd number of elements
170+
171+
std::vector<int> a;
172+
for(int i = 0; i < size; ++i) {
173+
a.push_back((i+1) * 10);
174+
}
175+
176+
for(int n = 0; n < 100; ++n) {
177+
std::random_shuffle(a.begin(), a.end());
178+
179+
timsort(a.begin(), a.end(), std::less<int>());
180+
181+
for(int i = 0; i < size; ++i) {
182+
BOOST_CHECK_EQUAL( a[i], (i+1) * 10 );
183+
}
184+
}
185+
}
186+
122187
BOOST_AUTO_TEST_CASE( shuffle1024 ) {
123-
const int size = 1024;
188+
const int size = 1024; // even number of elements
124189

125190
std::vector<int> a;
126191
for(int i = 0; i < size; ++i) {
@@ -138,6 +203,44 @@ BOOST_AUTO_TEST_CASE( shuffle1024 ) {
138203
}
139204
}
140205

206+
BOOST_AUTO_TEST_CASE( partial_shuffle1023 ) {
207+
const int size = 1023;
208+
209+
std::vector<int> a;
210+
for(int i = 0; i < size; ++i) {
211+
a.push_back((i+1) * 10);
212+
}
213+
214+
for(int n = 0; n < 100; ++n) {
215+
std::random_shuffle(a.begin(), a.begin() + (size / 2));
216+
217+
timsort(a.begin(), a.end(), std::less<int>());
218+
219+
for(int i = 0; i < size; ++i) {
220+
BOOST_CHECK_EQUAL( a[i], (i+1) * 10 );
221+
}
222+
}
223+
}
224+
225+
BOOST_AUTO_TEST_CASE( partial_shuffle1024 ) {
226+
const int size = 1024;
227+
228+
std::vector<int> a;
229+
for(int i = 0; i < size; ++i) {
230+
a.push_back((i+1) * 10);
231+
}
232+
233+
for(int n = 0; n < 100; ++n) {
234+
std::random_shuffle(a.begin(), a.begin() + (size / 2));
235+
236+
timsort(a.begin(), a.end(), std::less<int>());
237+
238+
for(int i = 0; i < size; ++i) {
239+
BOOST_CHECK_EQUAL( a[i], (i+1) * 10 );
240+
}
241+
}
242+
}
243+
141244
BOOST_AUTO_TEST_CASE( shuffle1024r ) {
142245
const int size = 1024;
143246

@@ -158,6 +261,44 @@ BOOST_AUTO_TEST_CASE( shuffle1024r ) {
158261
}
159262
}
160263

264+
BOOST_AUTO_TEST_CASE( partial_reversed1023 ) {
265+
const int size = 1023;
266+
267+
std::vector<int> a;
268+
for(int i = 0; i < size; ++i) {
269+
a.push_back((i+1) * 10);
270+
}
271+
272+
for(int n = 0; n < 100; ++n) {
273+
std::reverse(a.begin(), a.begin() + (size / 2)); // partial reversed
274+
275+
timsort(a.begin(), a.end(), std::less<int>());
276+
277+
for(int i = 0; i < size; ++i) {
278+
BOOST_CHECK_EQUAL( a[i], (i+1) * 10 );
279+
}
280+
}
281+
}
282+
283+
BOOST_AUTO_TEST_CASE( partial_reversed1024 ) {
284+
const int size = 1024;
285+
286+
std::vector<int> a;
287+
for(int i = 0; i < size; ++i) {
288+
a.push_back((i+1) * 10);
289+
}
290+
291+
for(int n = 0; n < 100; ++n) {
292+
std::reverse(a.begin(), a.begin() + (size / 2)); // partial reversed
293+
294+
timsort(a.begin(), a.end(), std::less<int>());
295+
296+
for(int i = 0; i < size; ++i) {
297+
BOOST_CHECK_EQUAL( a[i], (i+1) * 10 );
298+
}
299+
}
300+
}
301+
161302
BOOST_AUTO_TEST_CASE( c_array ) {
162303
int a[] = { 7, 1, 5, 3, 9 };
163304

0 commit comments

Comments
 (0)