3 #include <UnitTest++.h>
8 struct LongIntFixtureBlank
11 LongIntFixtureBlank() {}
12 ~LongIntFixtureBlank() {}
16 struct LongIntFixtureGeneric
19 LongIntFixtureGeneric()
22 for(
int i=5; i < 10; ++i )
25 ~LongIntFixtureGeneric() {}
28 typedef LongIntFixtureGeneric<false> LongIntFixture;
29 typedef LongIntFixtureGeneric<true> LongIntFixtureBC;
31 struct LongIntFixtureFill
37 for(
int i=5; i < 10; ++i )
40 ~LongIntFixtureFill() {}
45 for( p=arr.begin(); p != arr.end(); ++p )
56 for(
int i=5; i < 10; ++i )
68 for(
int i=5; i < 10; ++i )
74 struct StructWithConstructorFixture
83 StructWithConstructorFixture()
87 ~StructWithConstructorFixture() {}
90 struct TestAllocFixture
93 ~TestAllocFixture() {}
103 for (
int i=2; i<20; ++i)
113 TEST_FIXTURE(LongIntFixture,TestZero)
116 for(
int i=5; i < 10; ++i )
117 CHECK_EQUAL(0,arr[i]);
122 TEST_FIXTURE(LongIntFixture,TestInvalidate1)
125 for(
int i=5; i < 10; ++i )
126 CHECK_EQUAL(-1,arr[i]);
131 TEST_FIXTURE(RealNumFixture,TestInvalidate2)
134 for(
int i=5; i < 10; ++i )
135 CHECK(
isnan(arr[i]));
140 TEST_FIXTURE(DoubleFixture,TestInvalidate3)
143 for(
int i=5; i < 10; ++i )
144 CHECK(
isnan(arr[i]));
149 TEST_FIXTURE(LongIntFixtureBC,TestAccess1)
151 for(
int i=5; i < 10; ++i )
152 CHECK_EQUAL(i,arr[i]);
153 CHECK_THROW(arr[4],out_of_range);
154 CHECK_THROW(arr[10],out_of_range);
156 for(
int i=5; i < 10; ++i )
157 CHECK_EQUAL(i,(*carr)[i]);
158 CHECK_THROW((*carr)[4],out_of_range);
159 CHECK_THROW((*carr)[10],out_of_range);
162 TEST_FIXTURE(LongIntFixtureBC,TestAccess2)
164 for(
int i=5; i < 10; ++i )
165 CHECK_EQUAL(i,arr[i]);
166 CHECK_THROW(arr[4],out_of_range);
167 CHECK_THROW(arr[10],out_of_range);
169 for(
int i=5; i < 10; ++i )
170 CHECK_EQUAL(i,(*carr)[i]);
171 CHECK_THROW((*carr)[4],out_of_range);
172 CHECK_THROW((*carr)[10],out_of_range);
175 TEST_FIXTURE(LongIntFixture,TestAccess3)
177 for(
int i=5; i < 10; ++i )
178 CHECK_EQUAL(i,*arr.ptr(i));
180 for(
int i=5; i < 10; ++i )
181 CHECK_EQUAL(i,*carr->
ptr(i));
184 TEST_FIXTURE(LongIntFixtureBC,TestAccess4)
186 for(
int i=5; i < 10; ++i )
187 CHECK_EQUAL(i,*arr.ptr(i));
188 CHECK_THROW(*arr.ptr(4),out_of_range);
189 CHECK_THROW(*arr.ptr(10),out_of_range);
191 for(
int i=5; i < 10; ++i )
192 CHECK_EQUAL(i,*carr->ptr(i));
193 CHECK_THROW(*carr->ptr(4),out_of_range);
194 CHECK_THROW(*carr->ptr(10),out_of_range);
197 TEST_FIXTURE(LongIntFixture,TestAccess5)
199 for(
int i=5; i < 10; ++i )
200 CHECK_EQUAL(i,arr.at(i));
201 CHECK_THROW(arr.at(4),out_of_range);
202 CHECK_THROW(arr.at(10),out_of_range);
204 for(
int i=5; i < 10; ++i )
205 CHECK_EQUAL(i,carr->at(i));
206 CHECK_THROW(carr->at(4),out_of_range);
207 CHECK_THROW(carr->at(10),out_of_range);
211 TEST_FIXTURE(LongIntFixture,TestStateDo)
213 const char *fnam =
"tfa.872GqS";
214 FILE *io = fopen( fnam,
"wb" );
216 arr.state_do( io,
false );
219 io = fopen( fnam,
"rb" );
221 arr.state_do( io,
true );
224 CHECK_EQUAL(7,arr[7]);
227 TEST_FIXTURE(LongIntFixtureBC,TestBoundaries)
229 CHECK( arr.begin() == arr.ptr(5) );
230 CHECK( arr.end() == arr.ptr(10) );
231 CHECK( &arr.front() == &arr[5] );
232 CHECK( &arr.back() == &arr[9] );
233 CHECK( arr.data() == &arr[5] );
235 CHECK( carr->begin() == arr.ptr(5) );
236 CHECK( carr->end() == arr.ptr(10) );
237 CHECK( &carr->front() == &arr[5] );
238 CHECK( &carr->back() == &arr[9] );
239 CHECK( carr->data() == &arr[5] );
242 TEST_FIXTURE(LongIntFixtureFill,TestRealloc)
245 for(
int i=5; i < 10; ++i )
246 CHECK_EQUAL( i-4, arr[i] );
247 long *pold = arr.data();
249 long *pnew = arr.data();
250 CHECK( pold != pnew );
251 for(
int i=5; i < 10; ++i )
252 CHECK_EQUAL( i-4, arr[i] );
255 TEST_FIXTURE(LongIntFixtureBlank,TestAllocationWithoutReservation)
257 CHECK_EQUAL(0L,arr.size());
258 CHECK_EQUAL(0L,arr.capacity());
259 CHECK( arr.empty() );
261 CHECK_EQUAL(5L,arr.size());
262 CHECK_EQUAL(5L,arr.capacity());
263 CHECK( !arr.empty() );
265 CHECK_EQUAL(25L,arr.size());
266 CHECK_EQUAL(25L,arr.capacity());
267 CHECK( !arr.empty() );
269 CHECK_EQUAL(5L,arr.size());
270 CHECK_EQUAL(25L,arr.capacity());
271 CHECK( !arr.empty() );
273 CHECK_EQUAL(0L,arr.size());
274 CHECK_EQUAL(25L,arr.capacity());
275 CHECK( arr.empty() );
277 CHECK_EQUAL(0L,arr.size());
278 CHECK_EQUAL(0L,arr.capacity());
279 CHECK( arr.empty() );
281 CHECK_EQUAL(17L,arr.size());
282 CHECK_EQUAL(17L,arr.capacity());
283 CHECK( !arr.empty() );
285 CHECK_EQUAL(0L,arr.size());
286 CHECK_EQUAL(0L,arr.capacity());
287 CHECK( arr.empty() );
289 CHECK_EQUAL(0L,arr.size());
290 CHECK_EQUAL(0L,arr.capacity());
291 CHECK( arr.empty() );
293 CHECK_EQUAL(35L,arr.size());
294 CHECK_EQUAL(35L,arr.capacity());
295 CHECK( !arr.empty() );
298 TEST_FIXTURE(LongIntFixtureBlank,TestAllocationWithReservation)
301 CHECK_EQUAL(0L,arr.size());
302 CHECK_EQUAL(100L,arr.capacity());
303 CHECK( arr.empty() );
305 CHECK_EQUAL(5L,arr.size());
306 CHECK_EQUAL(100L,arr.capacity());
307 CHECK( !arr.empty() );
309 CHECK_EQUAL(25L,arr.size());
310 CHECK_EQUAL(100L,arr.capacity());
311 CHECK( !arr.empty() );
313 CHECK_EQUAL(195L,arr.size());
314 CHECK_EQUAL(195L,arr.capacity());
315 CHECK( !arr.empty() );
317 CHECK_EQUAL(0L,arr.size());
318 CHECK_EQUAL(5L,arr.capacity());
319 CHECK( arr.empty() );
321 CHECK_EQUAL(0L,arr.size());
322 CHECK_EQUAL(5L,arr.capacity());
323 CHECK( arr.empty() );
325 CHECK_EQUAL(0L,arr.size());
326 CHECK_EQUAL(0L,arr.capacity());
327 CHECK( arr.empty() );
329 CHECK_EQUAL(0L,arr.size());
330 CHECK_EQUAL(10L,arr.capacity());
331 CHECK( arr.empty() );
333 CHECK_EQUAL(20L,arr.size());
334 CHECK_EQUAL(20L,arr.capacity());
335 CHECK( !arr.empty() );
338 TEST_FIXTURE(StructWithConstructorFixture,TestAllocationWithConstructor)
340 for(
int i=7; i < 12; ++i )
341 CHECK_EQUAL(23,arr[i].n);
346 TEST_FIXTURE(TestAllocFixture,TestVariantAlloc)
348 CHECK_EQUAL(0,mytest());
351 TEST_FIXTURE(LongIntFixtureBC,TestCopyOperator)
354 CHECK( arr.size() != arr2.size() );
356 CHECK_EQUAL(0,arr2[114]);
358 CHECK( arr.size() == arr2.size() );
360 CHECK( &arr[5] != &arr2[5] );
361 for (
int i=5; i<10; ++i)
362 CHECK_EQUAL(i,arr2[i]);
364 CHECK_THROW(arr2[4],out_of_range);
365 CHECK_THROW(arr2[10],out_of_range);
370 CHECK_EQUAL(9,arr2[9]);
374 CHECK( arr.size() == arr3.
size() );
376 CHECK( &arr[5] != &arr3[5] );
377 for (
int i=5; i<10; ++i)
378 CHECK_EQUAL(i,arr3[i]);
382 CHECK_EQUAL(0L,arr2.size());
pntr - interface class to replace normal pointers
void alloc(size_type begin, size_type end)
iterator ptr(size_type i)