68 int doPrimitiveTests();
101 T getSemiRandomValue(
int seed);
105 string mismatchMsg(T actual, T expected);
117 char BinexUpdateExtract_T :: getSemiRandomValue<char>(
int seed)
119 char val = ( (seed * 23) % 256) - 127;
125 short BinexUpdateExtract_T :: getSemiRandomValue<short>(
int seed)
127 short val = ( (seed * 189) % 0xFFFF) - 0xFFFE;
133 long BinexUpdateExtract_T :: getSemiRandomValue<long>(
int seed)
135 long val = ( (seed * 12377) % 0xFFFFFFFF) - 0xFFFFFFFE;
141 BinexData::UBNXI BinexUpdateExtract_T :: getSemiRandomValue<BinexData::UBNXI>
151 BinexData::MGFZI BinexUpdateExtract_T :: getSemiRandomValue<BinexData::MGFZI>
161 string BinexUpdateExtract_T :: mismatchMsg<char>(
char actual,
char expected)
164 oss <<
"value mismatch: actual = " << (short)actual
165 <<
" ; expected = " << (
short)expected;
173 oss <<
"value mismatch: actual = " << actual <<
" ; expected = " << expected;
181 const type_info& typeInfo =
typeid(T);
182 std::string testName(
"Update/Extract (");
183 testName += typeInfo.name();
185 TUDEF(
"BinexData", testName );
189 for (
int recSize = 1; recSize < 240; recSize += recStep)
195 size_t expectedOffset = 0;
198 for (
int i = 0; i < recSize; ++i)
202 T value = getSemiRandomValue<T>(i);
204 expectedOffset = offset +
sizeof(T);
206 data.push_back(value);
208 TUASSERTE(
size_t, expectedOffset, offset);
214 oss <<
"exception updating record: " << e;
221 for (
int i = 0; i <
data.size(); ++i)
233 oss <<
"exception extracting from record: " << e;
241 return testFramework.countFails();
247 TUDEF(
"BinexData",
"Update/Extract (UBNXI)" );
251 for (
int recSize = 1; recSize < 240; recSize += recStep)
253 std::vector<BinexData::UBNXI>
data;
257 size_t expectedOffset = 0;
260 for (
int i = 0; i < recSize; ++i)
266 expectedOffset = offset + value.
getSize();
268 data.push_back(value);
270 testFramework.assert( ( (offset == expectedOffset)
272 "incorrect offset", __LINE__ );
277 oss <<
"exception updating record: " << e;
278 testFramework.assert(
false, oss.str(), __LINE__ );
284 for (
int i = 0; i <
data.size(); ++i)
291 testFramework.assert( (value ==
data[i]), mismatchMsg(value,
data[i]), __LINE__ );
296 oss <<
"exception extracting from record: " << e;
297 testFramework.assert(
false, oss.str(), __LINE__ );
304 return testFramework.countFails();
310 TUDEF(
"BinexData",
"Update/Extract (MGFZI)" );
314 for (
int recSize = 1; recSize < 240; recSize += recStep)
316 std::vector<BinexData::MGFZI>
data;
320 size_t expectedOffset = 0;
323 for (
int i = 0; i < recSize; ++i)
329 expectedOffset = offset + value.
getSize();
331 data.push_back(value);
333 testFramework.assert ( ( (offset == expectedOffset)
335 "incorrect offset", __LINE__ );
340 oss <<
"exception updating record: " << e;
341 testFramework.assert(
false, oss.str(), __LINE__ );
347 for (
int i = 0; i <
data.size(); ++i)
354 testFramework.assert( (value ==
data[i]), mismatchMsg(value,
data[i]), __LINE__ );
359 oss <<
"exception extracting from record: " << e;
360 testFramework.assert(
false, oss.str(), __LINE__ );
367 return testFramework.countFails();
373 TUDEF(
"BinexData",
"Update/Extract (Mixed A)" );
435 testFramework.assert( (vs1 == s1), mismatchMsg(vs1, s1), __LINE__ );
439 testFramework.assert( (vu1 == u1), mismatchMsg(vu1, u1), __LINE__ );
443 testFramework.assert( (vu2 == u2), mismatchMsg(vu2, u2), __LINE__ );
447 testFramework.assert( (vm1 == m1), mismatchMsg(vm1, m1), __LINE__ );
451 testFramework.assert( (vc1 == c1), mismatchMsg(vc1, c1), __LINE__ );
455 testFramework.assert( (vl1 == l1), mismatchMsg(vl1, l1), __LINE__ );
459 testFramework.assert( (vl2 == l2), mismatchMsg(vl2, l2), __LINE__ );
463 testFramework.assert( (vs2 == s2), mismatchMsg(vs2, s2), __LINE__ );
467 testFramework.assert( (vc2 == c2), mismatchMsg(vc2, c2), __LINE__ );
471 testFramework.assert( (vc3 == c3), mismatchMsg(vc3, c3), __LINE__ );
475 testFramework.assert( (vm2 == m2), mismatchMsg(vm2, m2), __LINE__ );
479 testFramework.assert( (vm3 == m3), mismatchMsg(vm3, m3), __LINE__ );
483 testFramework.assert( (vu3 == u3), mismatchMsg(vu3, u3), __LINE__ );
487 testFramework.assert( (vl3 == l3), mismatchMsg(vl3, l3), __LINE__ );
491 testFramework.assert( (vs3 == s3), mismatchMsg(vs3, s3), __LINE__ );
493 return testFramework.countFails();
499 TUDEF(
"BinexData",
"Update/Extract (Mixed B)" );
561 testFramework.assert( (vm1 == m1), mismatchMsg(vm1, m1), __LINE__ );
565 testFramework.assert( (vl1 == l1), mismatchMsg(vl1, l1), __LINE__ );
569 testFramework.assert( (vs1 == s1), mismatchMsg(vs1, s1), __LINE__ );
573 testFramework.assert( (vs2 == s2), mismatchMsg(vs2, s2), __LINE__ );
577 testFramework.assert( (vu1 == u1), mismatchMsg(vu1, u1), __LINE__ );
581 testFramework.assert( (vc1 == c1), mismatchMsg(vc1, c1), __LINE__ );
585 testFramework.assert( (vu2 == u2), mismatchMsg(vu2, u2), __LINE__ );
589 testFramework.assert( (vl2 == l2), mismatchMsg(vl2, l2), __LINE__ );
593 testFramework.assert( (vm2 == m2), mismatchMsg(vm2, m2), __LINE__ );
597 testFramework.assert( (vs3 == s3), mismatchMsg(vs3, s3), __LINE__ );
601 testFramework.assert( (vc2 == c2), mismatchMsg(vc2, c2), __LINE__ );
605 testFramework.assert( (vl3 == l3), mismatchMsg(vl3, l3), __LINE__ );
609 testFramework.assert( (vm3 == m3), mismatchMsg(vm3, m3), __LINE__ );
613 testFramework.assert( (vu3 == u3), mismatchMsg(vu3, u3), __LINE__ );
617 testFramework.assert( (vc3 == c3), mismatchMsg(vc3, c3), __LINE__ );
619 return testFramework.countFails();
625 TUDEF(
"BinexData",
"Update/Extract (Mixed C)" );
686 testFramework.assert( (vc1 == c1), mismatchMsg(vc1, c1), __LINE__ );
690 testFramework.assert( (vm1 == m1), mismatchMsg(vm1, m1), __LINE__ );
694 testFramework.assert( (vu1 == u1), mismatchMsg(vu1, u1), __LINE__ );
698 testFramework.assert( (vl1 == l1), mismatchMsg(vl1, l1), __LINE__ );
702 testFramework.assert( (vs1 == s1), mismatchMsg(vs1, s1), __LINE__ );
706 testFramework.assert( (vs2 == s2), mismatchMsg(vs2, s2), __LINE__ );
710 testFramework.assert( (vs3 == s3), mismatchMsg(vs3, s3), __LINE__ );
714 testFramework.assert( (vm2 == m2), mismatchMsg(vm2, m2), __LINE__ );
718 testFramework.assert( (vc2 == c2), mismatchMsg(vc2, c2), __LINE__ );
722 testFramework.assert( (vl2 == l2), mismatchMsg(vl2, l2), __LINE__ );
726 testFramework.assert( (vu2 == u2), mismatchMsg(vu2, u2), __LINE__ );
730 testFramework.assert( (vu3 == u3), mismatchMsg(vu3, u3), __LINE__ );
734 testFramework.assert( (vl3 == l3), mismatchMsg(vl3, l3), __LINE__ );
738 testFramework.assert( (vc3 == c3), mismatchMsg(vc3, c3), __LINE__ );
742 testFramework.assert( (vm3 == m3), mismatchMsg(vm3, m3), __LINE__ );
744 return testFramework.countFails();
752 int main(
int argc,
char *argv[])
774 return( errorTotal );