48 #include "build_config.h"
78 unsigned hardCodeTest();
79 unsigned headerExceptionTest();
80 unsigned streamReadWriteTest();
81 unsigned filterOperatorsTest();
83 void toConversionTest();
84 unsigned version2ToVersion3Test();
85 unsigned version3ToVersion2Test();
142 "test_input_rinex2_nav_RinexNavExample.99n";
145 "test_output_rinex2_nav_TestOutput.99n";
147 "test_output_rinex2_nav_TestOutput2.99n";
149 "test_output_rinex2_nav_TestOutput3.99n";
151 "test_output_rinex2_nav_RinexDump.txt";
154 "test_input_rinex2_nav_InvalidLineLength.99n";
156 "test_input_rinex2_nav_NotaNavFile.99n";
158 "test_input_rinex2_nav_UnknownHeaderLabel.99n";
160 "test_input_rinex2_nav_IncompleteHeader.99n";
162 "test_input_rinex2_nav_UnsupportedRinex.99n";
164 "test_input_rinex2_nav_BadHeader.99n";
166 "test_output_rinex2_nav_TestOutputHeader.99n";
169 "test_input_rinex2_nav_FilterTest1.99n";
171 "test_input_rinex2_nav_FilterTest2.99n";
173 "test_input_rinex2_nav_FilterTest3.99n";
175 "test_output_rinex2_nav_FilterOutput.txt";
178 "test_output_rinex2_nav_RinexStore.txt";
189 std::cout<<
"Running tests for Rinex version 3.0"<<std::endl;
196 "test_input_rinex3_nav_RinexNavExample.15n";
199 "test_output_rinex3_nav_TestOutput.15n";
201 "test_output_rinex3_nav_TestOutput2.15n";
203 "test_output_rinex3_nav_TestOutput3.15n";
205 "test_output_rinex3_nav_RinexDump.txt";
208 "test_input_rinex3_nav_InvalidLineLength.15n";
210 "test_input_rinex3_nav_NotaNavFile.15n";
212 "test_input_rinex3_nav_UnknownHeaderLabel.15n";
214 "test_input_rinex3_nav_IncompleteHeader.15n";
216 "test_input_rinex3_nav_UnsupportedRinex.15n";
218 "test_input_rinex3_nav_BadHeader.15n";
220 "test_output_rinex3_nav_TestOutputHeader.15n";
223 "test_input_rinex3_nav_FilterTest1.15n";
225 "test_input_rinex3_nav_FilterTest2.15n";
227 "test_input_rinex3_nav_FilterTest3.15n";
229 "test_output_rinex3_nav_FilterOutput.txt";
232 "test_output_rinex3_nav_RinexStore.txt";
243 "test_input_rinex3_nav_RinexNavExample.15n";
245 "test_input_rinex2_nav_Rinex3NavFile.15n";
248 "test_output_rinex3_nav_Rinex2to3Output.15n";
250 "test_output_rinex2_nav_Rinex3to2Output.15n";
270 double compareVersion;
271 std::string compareFileProgram;
272 std::string compareFileAgency;
273 std::string compareDate;
274 std::string compareComment;
276 TUDEF(
"Rinex3NavStream",
"ostream<<");
286 rinex3NavStream >> rinex3NavHeader;
287 out << rinex3NavHeader;
289 while (rinex3NavStream >> rinex3NavData)
291 out << rinex3NavData;
294 if (rinex3NavHeader.version == 2.1)
296 compareVersion = 2.1;
297 compareFileProgram = (std::string)
"XXRINEXN V3";
298 compareFileAgency = (std::string)
"AIUB";
299 compareDate = (std::string)
"1999-09-02 19:22:36";
300 compareComment = (std::string)
"THIS IS ONE COMMENT";
302 else if (rinex3NavHeader.version == 3.02)
304 compareVersion = 3.02;
305 compareFileProgram = (std::string)
"cnvtToRINEX 2.25.0";
306 compareFileAgency = (std::string)
"convertToRINEX OPR";
307 compareDate = (std::string)
"23-Jan-15 22:34 UTC";
308 compareComment = (std::string)
309 "-----------------------------------------------------------";
313 TUASSERTFE(compareVersion, rinex3NavHeader.version);
314 TUASSERTE(std::string, compareFileProgram, rinex3NavHeader.fileProgram);
315 TUASSERTE(std::string, compareFileAgency, rinex3NavHeader.fileAgency);
316 TUASSERTE(std::string, compareDate, rinex3NavHeader.date);
318 std::vector<std::string>::const_iterator itr1 =
319 rinex3NavHeader.commentList.begin();
320 TUASSERTE(std::string, compareComment, *itr1);
323 TUCMPFILE(inputRinexNavExample, outputTestOutput, 2);
331 rinex3NavStream2 >> rinex3NavHeader2;
332 out2 << rinex3NavHeader2;
334 while (rinex3NavStream2 >> rinex3NavData2)
336 out2 << rinex3NavData2;
344 rinex3NavStream3 >> rinex3NavHeader3;
345 out3 << rinex3NavHeader3;
347 while (rinex3NavStream3 >> rinex3NavData3)
349 out3 << rinex3NavData3;
351 rinex3NavHeader.
dump(dmp);
352 rinex3NavData.
dump(dmp);
354 TUCMPFILE(inputRinexNavExample, outputTestOutput3, 2);
358 TUFAIL(
"test read TestOutput2, unexpected exception");
369 TUDEF(
"rinex3NavStream",
"");
371 std::string msg_test_desc =
" ";
372 std::string msg_expected =
", should throw a gnsstk::Exception";
373 std::string msg_false_pass =
", but threw no exception.";
374 std::string msg_true_fail =
", but instead threw an unknown exception.";
387 invalidLineLength.exceptions( std::fstream::failbit);
388 notaNavFile.exceptions( std::fstream::failbit);
389 unknownHeaderLabel.exceptions(std::fstream::failbit);
390 incompleteHeader.exceptions( std::fstream::failbit);
391 unsupportedRinex.exceptions( std::fstream::failbit);
392 badHeader.exceptions( std::fstream::failbit);
396 msg_test_desc =
"InvalidLineLength test";
399 invalidLineLength >>
header;
400 TUFAIL(msg_test_desc + msg_expected + msg_false_pass);
404 TUPASS(msg_test_desc + msg_expected);
408 TUFAIL( msg_test_desc + msg_expected + msg_true_fail);
412 msg_test_desc =
"NotaNavFile test";
416 TUFAIL(msg_test_desc + msg_expected + msg_false_pass);
420 TUPASS(msg_test_desc + msg_expected);
424 TUFAIL(msg_test_desc + msg_expected + msg_true_fail);
428 msg_test_desc =
"UnknownHeaderLabel test";
431 unknownHeaderLabel >>
header;
432 TUFAIL(msg_test_desc + msg_expected + msg_false_pass);
436 TUPASS(msg_test_desc + msg_expected);
440 TUFAIL(msg_test_desc + msg_expected + msg_true_fail);
444 msg_test_desc =
"IncompleteHeader test";
447 incompleteHeader >>
header;
448 TUFAIL(msg_test_desc + msg_expected + msg_false_pass);
452 TUPASS(msg_test_desc + msg_expected);
456 TUFAIL(msg_test_desc + msg_expected + msg_true_fail);
496 TUFAIL(
"Unknown exception");
509 TUDEF(
"rinex3NavData",
"Redirect");
511 std::string msg_test_desc =
"streamReadWriteTest test";
512 std::string msg_expected =
", compares the output file with the input file";
513 std::string msg_fail_equal =
", files are different!";
514 std::string msg_fail_except =
", unexpectedly threw an exception.";
519 Rinex3NavStream rinexOutputStream(outputRinexStore.c_str(),std::ios::out);
522 rinexInputStream >> streamTool;
524 rinexOutputStream << rinexOutputStream.
header;
527 while (rinexInputStream >>
data)
529 rinexOutputStream <<
data;
531 TUCMPFILE(inputRinexNavExample, outputRinexStore, 9);
535 TUFAIL(msg_test_desc + msg_expected + msg_fail_except);
550 TestUtil test4(
"rinex3NavStream",
"open", __FILE__, __LINE__);
552 std::string msg_test_desc =
"";
553 std::string msg_expected =
", ";
554 std::string msg_fail =
", ";
560 FilterStream1.
open(inputFilterStream1.c_str(), std::ios::in);
573 FilterStream1 >> FilterHeader1;
574 FilterStream2 >> FilterHeader2;
575 FilterStream3 >> FilterHeader3;
577 while (FilterStream1 >> FilterData1)
580 while (FilterStream2 >> FilterData2)
583 while (FilterStream3 >> FilterData3)
588 merged(FilterHeader1);
589 merged(FilterHeader2);
595 "rinex3NavDataOperatorEqualsFull, EqualsFUll FilterData1 FilterData2, fail";
596 test4.
assert(EqualsFull(FilterData1, FilterData2), msg_test_desc,
599 "rinex3NavDataOperatorEqualsFull, FilterData1 not equal FilterData3, fail";
600 test4.
assert(!EqualsFull(FilterData1, FilterData3), msg_test_desc,
606 "rinex3NavDataOperatorLessThanSimple, not LessThanSimple FilterData1 FilterData3, fail";
607 test4.
assert(!LessThanSimple(FilterData1, FilterData2), msg_test_desc,
613 "rinex3NavDataOperatorLessThanFull, not LessThanFull FilterData1 FilterData1, fail";
614 test4.
assert(!LessThanFull(FilterData1, FilterData1), msg_test_desc,
617 std::list<long> list;
620 msg_test_desc =
"rinex3NavDataFilterPRN, FilterPRN FilterData3, fail";
621 test4.
assert(FilterPRN(FilterData3), msg_test_desc, __LINE__);
625 msg_test_desc =
"filterOperatorsTest, threw unexpected exception, fail";
626 test4.
assert(
false, msg_test_desc, __LINE__);
639 TUDEF(
"Rinex3Nav",
"Convert v.3 to v.2");
657 TUCMPFILE(inputRinex2Nav, outputRinex2Nav, 2);
669 TUDEF(
"Rinex3Nav",
"Convert v.2 to v.3");
687 TUCMPFILE(inputRinex3Nav, outputRinex3Nav, 2);
699 unsigned errorTotal = 0;
702 std::cout <<
"Running tests for Rinex version 2.1" << std::endl;
722 std::cout <<
"Total Failures for " << __FILE__ <<
": " << errorTotal