66 int testInitialization();
110 bool operator() (
const FFTData& fftd);
116 bool operator() (
const FFTData& fftd);
124 bool operator() (
FFTData& fftd);
130 bool operator() (
const FFTData& left,
const FFTData& right)
const;
136 bool operator() (
const FFTData& left,
const FFTData& right)
const;
149 bool FileFilter_T :: IsEven :: operator() (
const FFTData& fftd)
151 return (0 == (fftd.
value % 2) );
156 bool FileFilter_T :: Above999 :: operator() (
const FFTData& fftd)
158 return (fftd.
value > 999);
163 bool FileFilter_T :: DoubleFives :: operator() (
FFTData& fftd)
165 if (0 == (fftd.
value % 5) )
175 bool FileFilter_T :: LessThan :: operator() (
const FFTData& left,
const FFTData& right)
const
182 bool FileFilter_T :: Equal :: operator() (
const FFTData& left,
const FFTData& right)
const
192 for (
int i = 0; i < 100; ++i)
193 sampleData.push_back(
FFTData(i) );
207 TestUtil tester(
"FileFilter",
"initialization/getDataCount/size/empty", __FILE__, __LINE__ );
212 tester.
assert(
true,
"error creating FileFilter", __LINE__ );
216 tester.
assert( (0 == ff.
size() ),
"data size should be 0", __LINE__ );
218 tester.
assert( ff.
empty(),
"data list should be empty", __LINE__ );
222 tester.
assert(
false,
"error creating FileFilter", __LINE__ );
232 TestUtil tester(
"FileFilter",
"addData/getData/getDataCount/size/empty/clear", __FILE__, __LINE__ );
239 tester.
assert(
true,
"error adding data", __LINE__ );
243 tester.
assert( (0 == ff.
size() ),
"data size should be 0", __LINE__ );
245 tester.
assert( ff.
empty(),
"data list should be empty", __LINE__ );
248 tester.
assert(
true,
"error getting data", __LINE__ );
250 tester.
assert( (0 == got.size() ),
"got data size should be 0", __LINE__ );
253 tester.
assert(
true,
"error clearing data", __LINE__ );
255 tester.
assert( (0 == ff.
getDataCount() ),
"cleared data count should be 0", __LINE__ );
257 tester.
assert( (0 == ff.
size() ),
"cleared data size should be 0", __LINE__ );
259 tester.
assert( ff.
empty(),
"cleared data list should be empty", __LINE__ );
263 tester.
assert(
false,
"error adding data", __LINE__ );
272 tester.
assert(
true,
"error adding data", __LINE__ );
276 tester.
assert( (1 == ff.
size() ),
"data size should be 1", __LINE__ );
278 tester.
assert( !ff.
empty(),
"data list should not be empty", __LINE__ );
281 tester.
assert(
true,
"error getting data", __LINE__ );
283 tester.
assert( (1 == got.size() ),
"got data size should be 1", __LINE__ );
286 tester.
assert(
true,
"error clearing data", __LINE__ );
288 tester.
assert( (0 == ff.
getDataCount() ),
"cleared data count should be 0", __LINE__ );
290 tester.
assert( (0 == ff.
size() ),
"cleared data size should be 0", __LINE__ );
292 tester.
assert( ff.
empty(),
"cleared data list should be empty", __LINE__ );
296 tester.
assert(
false,
"error adding data", __LINE__ );
303 tester.
assert(
true,
"error adding data", __LINE__ );
306 oss << sampleData.size();
309 "data count should be " + oss.str() , __LINE__ );
311 tester.
assert( (sampleData.size() == ff.
size() ),
312 "data size should be " + oss.str(), __LINE__ );
314 tester.
assert( !ff.
empty(),
"data list should not be empty", __LINE__ );
317 tester.
assert(
true,
"error getting data", __LINE__ );
319 tester.
assert( (sampleData.size() == got.size() ),
320 "got data size should be " + oss.str(), __LINE__ );
323 tester.
assert(
true,
"error clearing data", __LINE__ );
325 tester.
assert( (0 == ff.
getDataCount() ),
"cleared data count should be 0", __LINE__ );
327 tester.
assert( (0 == ff.
size() ),
"cleared data size should be 0", __LINE__ );
329 tester.
assert( ff.
empty(),
"cleared data list should be empty", __LINE__ );
333 tester.
assert(
false,
"error adding data", __LINE__ );
343 TestUtil tester(
"FileFilter",
"begin/end", __FILE__, __LINE__ );
349 FFTDataList::iterator bIter = ff.
begin();
350 tester.
assert(
true,
"iterator error", __LINE__ );
352 FFTDataList::iterator eIter = ff.
end();
353 tester.
assert(
true,
"iterator error", __LINE__ );
355 tester.
assert( (bIter == eIter),
"iterator", __LINE__ );
359 tester.
assert(
false,
"iterator error", __LINE__ );
369 FFTDataList::iterator bIter = ff.
begin();
370 tester.
assert(
true,
"iterator error", __LINE__ );
372 FFTDataList::iterator eIter = ff.
end();
373 tester.
assert(
true,
"iterator error", __LINE__ );
375 tester.
assert( (bIter != eIter),
"iterator", __LINE__ );
378 tester.
assert(
true,
"iterator error", __LINE__ );
380 tester.
assert( (bIter == eIter),
"iterator", __LINE__ );
384 tester.
assert(
false,
"iterator error", __LINE__ );
392 FFTDataList::iterator bIter = ff.
begin();
393 tester.
assert(
true,
"iterator error", __LINE__ );
395 FFTDataList::iterator eIter = ff.
end();
396 tester.
assert(
true,
"iterator error", __LINE__ );
398 tester.
assert( (bIter != eIter),
"iterator error", __LINE__ );
401 FFTDataList::const_iterator sampleIter = sampleData.begin();
402 while ( (bIter != eIter) && (sampleIter != sampleData.end() ) )
404 if ( bIter->value != sampleIter->value )
406 tester.
assert(
false,
"iterator error - value mismatch", __LINE__ );
413 tester.
assert( (advances == sampleData.size() ),
"iterator error - premature end", __LINE__ );
415 tester.
assert( (bIter == eIter),
"iterator error - end not reached", __LINE__ );
419 tester.
assert(
false,
"iterator error", __LINE__ );
429 TestUtil tester(
"FileFilter",
"front/back", __FILE__, __LINE__ );
436 tester.
assert(
false,
"expected exception for empty list", __LINE__ );
440 tester.
assert(
true,
"expected exception for empty list", __LINE__ );
448 tester.
assert(
false,
"expected exception for empty list", __LINE__ );
452 tester.
assert(
true,
"expected exception for empty list", __LINE__ );
463 tester.
assert( (fdata.
value == 1),
"error accessing list front", __LINE__ );
466 tester.
assert( (bdata.
value == 1),
"error accessing list back", __LINE__ );
470 tester.
assert(
false,
"error accessing list front/back", __LINE__ );
479 tester.
assert( (fdata.
value == sampleData.front().value),
480 "error accessing list front", __LINE__ );
483 tester.
assert( (bdata.
value == sampleData.back().value),
484 "error accessing list back", __LINE__ );
488 tester.
assert(
false,
"error accessing list front/back", __LINE__ );
498 TestUtil tester(
"FileFilter",
"filter/getFiltered", __FILE__, __LINE__ );
505 "no filtering has occurred", __LINE__ );
508 "empty list expected after filtering", __LINE__ );
512 tester.
assert(
false,
"exception filtering empty list", __LINE__ );
523 "no filtering has occurred", __LINE__ );
526 "expected filtering", __LINE__ );
529 "empty list expected following filtering", __LINE__ );
533 tester.
assert(
false,
"exception filtering non-empty list", __LINE__ );
544 "no filtering has occurred", __LINE__ );
547 "expected no filtering", __LINE__ );
550 "non-empty list expected following filtering", __LINE__ );
554 tester.
assert(
false,
"exception filtering non-empty list", __LINE__ );
563 "no filtering has occurred", __LINE__ );
566 "expected filtering", __LINE__ );
569 "non-empty list expected following filtering", __LINE__ );
573 tester.
assert(
false,
"error accessing list front/back", __LINE__ );
583 TestUtil tester(
"FileFilter",
"sort", __FILE__, __LINE__ );
590 "empty list expected after sorting", __LINE__ );
594 tester.
assert(
false,
"exception sorting empty list", __LINE__ );
605 "one item expected after sorting", __LINE__ );
607 tester.
assert( (2 == ff.
front().value),
"unexpected value", __LINE__ );
611 tester.
assert(
false,
"exception sorting non-empty list", __LINE__ );
623 "two items expected after sorting", __LINE__ );
625 tester.
assert( (1 == ff.
front().value),
"unexpected value", __LINE__ );
626 tester.
assert( (2 == ff.
back().value),
"unexpected value", __LINE__ );
630 tester.
assert(
false,
"exception sorting non-empty list", __LINE__ );
639 "100 items expected after sorting", __LINE__ );
643 FFTDataList::const_iterator ffIter = ff.
begin();
644 for ( ; ffIter != ff.
end(); ++ffIter)
646 if ( (ffIter != ff.
begin()) && (ffIter->value < previous) )
651 previous = ffIter->value;
653 tester.
assert( sorted,
"data list was not sorted", __LINE__ );
658 tester.
assert(
false,
"error accessing list front/back", __LINE__ );
665 reverse(reversedData.begin(), reversedData.end() );
669 "100 items expected after sorting", __LINE__ );
673 FFTDataList::const_iterator ffIter = ff.
begin();
674 for ( ; ffIter != ff.
end(); ++ffIter)
676 if ( (ffIter != ff.
begin()) && (ffIter->value < previous) )
681 previous = ffIter->value;
683 tester.
assert( sorted,
"data list was not sorted", __LINE__ );
688 tester.
assert(
false,
"error accessing list front/back", __LINE__ );
698 TestUtil tester(
"FileFilter",
"merge", __FILE__, __LINE__ );
706 "empty list expected", __LINE__ );
710 tester.
assert(
false,
"exception merging empty lists", __LINE__ );
719 "empty list expected", __LINE__ );
723 tester.
assert(
false,
"exception merging empty lists", __LINE__ );
735 "unexpected element count", __LINE__ );
738 "unexpected value", __LINE__ );
747 tester.
assert(
false,
"exception merging lists", __LINE__ );
759 "unexpected element count", __LINE__ );
762 "unexpected value", __LINE__ );
771 tester.
assert(
false,
"exception merging lists", __LINE__ );
786 "unexpected element count", __LINE__ );
795 tester.
assert(
false,
"exception merging lists", __LINE__ );
812 "unexpected element count", __LINE__ );
817 "unexpected value", __LINE__ );
820 "unexpected value", __LINE__ );
829 tester.
assert(
false,
"exception merging lists", __LINE__ );
839 TestUtil tester(
"FileFilter",
"touch", __FILE__, __LINE__ );
846 "no operation has occurred", __LINE__ );
849 "no operations expected", __LINE__ );
853 tester.
assert(
false,
"exception operating on an empty list", __LINE__ );
864 "no operation has occurred", __LINE__ );
867 "expected a single operation", __LINE__ );
870 "unexpected change to data count", __LINE__ );
874 "operation was not applied", __LINE__ );
878 tester.
assert(
false,
"exception operating on a non-empty list", __LINE__ );
889 "no operation has occurred", __LINE__ );
892 "no operations expected", __LINE__ );
895 "unexpected change to data count", __LINE__ );
899 "operation was erroneously applied", __LINE__ );
903 tester.
assert(
false,
"exception operating on a non-empty list", __LINE__ );
912 "no operation has occurred", __LINE__ );
915 "expected 50 operations", __LINE__ );
918 "unexpected change to data count", __LINE__ );
924 FFTDataList::const_iterator ffIter = ff.
begin();
925 for ( ; ffIter != ff.
end(); ++i, ++ffIter)
927 if ( (0 == (i % 5) ) && (0 != (ffIter->value % 10) ) )
933 tester.
assert( applied,
"operation was not applied to all approriate elments", __LINE__ );
937 tester.
assert(
false,
"exception operating on a non-empty list", __LINE__ );
947 TestUtil tester(
"FileFilter",
"unique", __FILE__, __LINE__ );
956 "empty list expected", __LINE__ );
960 tester.
assert(
false,
"exception for empty list", __LINE__ );
971 "one item expected", __LINE__ );
973 tester.
assert( (2 == ff.
front().value),
"unexpected value", __LINE__ );
977 tester.
assert(
false,
"exception for non-empty list", __LINE__ );
989 "one item expected", __LINE__ );
991 tester.
assert( (2 == ff.
front().value),
"unexpected value", __LINE__ );
995 tester.
assert(
false,
"exception for non-empty list", __LINE__ );
1010 "three items expected", __LINE__ );
1012 tester.
assert( (1 == ff.
front().value),
"unexpected value", __LINE__ );
1013 tester.
assert( (3 == ff.
back().value),
"unexpected value", __LINE__ );
1017 tester.
assert(
false,
"exception for non-empty list", __LINE__ );
1027 TestUtil tester(
"FileFilter",
"diff", __FILE__, __LINE__ );
1034 std::pair< FFTDataList, FFTDataList > results = ff.
diff(ffOther,
LessThan() );
1036 tester.
assert( ( (0 == results.first.size() ) && (0 == results.second.size() ) ),
1037 "empty lists expected", __LINE__ );
1041 tester.
assert(
false,
"exception diffing empty lists", __LINE__ );
1052 std::pair< FFTDataList, FFTDataList > results = ff.
diff(ffOther,
LessThan() );
1054 tester.
assert( ( (0 == results.first.size() ) && (1 == results.second.size() ) ),
1055 "unexpected element count(s)", __LINE__ );
1057 tester.
assert( ( (1 == results.second.size() ) && (1 == results.second.front().value) ),
1058 "unexpected value", __LINE__ );
1062 tester.
assert(
false,
"exception diffing lists", __LINE__ );
1073 std::pair< FFTDataList, FFTDataList > results = ff.
diff(ffOther,
LessThan() );
1075 tester.
assert( ( (1 == results.first.size() ) && (0 == results.second.size() ) ),
1076 "unexpected element count(s)", __LINE__ );
1078 tester.
assert( ( (1 == results.first.size() ) && (1 == results.first.front().value) ),
1079 "unexpected value", __LINE__ );
1083 tester.
assert(
false,
"exception diffing lists", __LINE__ );
1095 std::pair< FFTDataList, FFTDataList > results = ff.
diff(ffOther,
LessThan() );
1097 tester.
assert( ( (0 == results.first.size() ) && (0 == results.second.size() ) ),
1098 "empty lists expected", __LINE__ );
1100 if ( (0 != results.first.size() ) || (0 != results.second.size() ) )
1102 dump(results.first);
1103 dump(results.second);
1108 tester.
assert(
false,
"exception diffing lists", __LINE__ );
1122 std::pair< FFTDataList, FFTDataList > results = ff.
diff(ffOther,
LessThan() );
1124 tester.
assert( ( (1 == results.first.size() ) && (1 == results.second.size() ) ),
1125 "expected element count(s)", __LINE__ );
1127 tester.
assert( ( (1 == results.first.size() ) && (1 == results.first.front().value) ),
1128 "unexpected value", __LINE__ );
1130 tester.
assert( ( (1 == results.second.size() ) && (2 == results.second.front().value) ),
1131 "unexpected value", __LINE__ );
1133 if ( (1 != results.first.size() ) || (1 != results.second.size() ) )
1135 dump(results.first);
1136 dump(results.second);
1141 tester.
assert(
false,
"exception diffing lists", __LINE__ );
1151 TestUtil tester(
"FileFilter",
"findAll", __FILE__, __LINE__ );
1158 tester.
assert( (0 == fftdList.size() ),
1159 "empty list expected", __LINE__ );
1163 tester.
assert(
false,
"exception searching empty list", __LINE__ );
1172 tester.
assert( (0 == fftdList.size() ),
1173 "empty list expected", __LINE__ );
1178 tester.
assert(
false,
"exception searching non-empty list", __LINE__ );
1187 tester.
assert( (50 == fftdList.size() ),
1188 "50 element list expected", __LINE__ );
1192 tester.
assert(
false,
"exception searching non-empty list", __LINE__ );
1202 cout <<
" DATA DUMP:" << endl;
1203 FFTDataList::const_iterator iter =
data.begin();
1204 for ( ; iter !=
data.end(); ++iter)
1205 cout <<
" " << iter->value << endl;
1220 errorTotal += testClass.
testData();
1224 errorTotal += testClass.
testSort();
1228 errorTotal += testClass.
testDiff();
1231 cout <<
"Total Failures for " << __FILE__ <<
": " << errorTotal << endl;