67 unsigned noFilterTest();
69 unsigned testCNavCook();
71 unsigned testCNavParity();
73 unsigned testCNavEmpty();
75 unsigned testCNavTOW();
77 unsigned testCNavCombined();
79 unsigned testCNavCrossSource();
101 for (
auto& mli : messageList)
112 static const int MSG_COUNT_CNAV = 12;
115 "365,12/31/2015,00:00:00,1877,345600,1,63,10, 0x8B04A708, 0x10EAA60A, 0x6A49007A, 0x2E3FFDAE, 0x42EEB000, 0x81B983C7, 0x9A881433, 0x89C04F25, 0xB9F60DD4, 0xED600000",
116 "365,12/31/2015,00:00:12,1877,345612,1,63,11, 0x8B04B708, 0x22490999, 0x6E1AC9D0, 0xF0CB205F, 0xFFEE3FFA, 0xBFFC9FF7, 0x94201BB3, 0x6022E5FF, 0x8B9802D4, 0xA5600000",
117 "365,12/31/2015,00:00:24,1877,345624,1,63,30, 0x8B05E708, 0x320A6A79, 0x240214AC, 0x80084000, 0x0B0FFB7E, 0x5019E0D4, 0x0DFFFF02, 0x39F1FF11, 0x5500081A, 0x33500000",
118 "365,12/31/2015,00:00:36,1877,345636,1,63,33, 0x8B061708, 0x420A6A79, 0x240214AC, 0x80084001, 0xFFCE0000, 0x02298EE7, 0x5539D988, 0x80000000, 0x00000486, 0xBF400000",
119 "365,12/31/2015,02:00:00,1877,352800,1,63,10, 0x8B04A72D, 0x90EAA60A, 0x6A550077, 0x2A400140, 0xF2F62FFF, 0xC4FC3082, 0x7A701435, 0xE9084F1E, 0xA9CA02EF, 0x1B800000",
120 "365,12/31/2015,02:00:12,1877,352812,1,63,11, 0x8B04B72D, 0xA2550999, 0x22EA09D0, 0xF0770055, 0x8FA57FED, 0xA007DFF6, 0x9B001BF7, 0xA0224CFF, 0x7D980CAA, 0xA4200000",
121 "365,12/31/2015,02:00:24,1877,352824,1,63,30, 0x8B05E72D, 0xB20A6A79, 0x54021520, 0x80084000, 0x0B0FFB7E, 0x5019E0D4, 0x0DFFFF02, 0x39F1FF11, 0x55000016, 0xEC400000",
122 "365,12/31/2015,02:00:36,1877,352836,1,63,33, 0x8B06172D, 0xC20A6A79, 0x54021520, 0x80084001, 0xFFCE0000, 0x02298EE7, 0x5539D988, 0x80000000, 0x00000C8A, 0x60500000",
123 "365,12/31/2015,04:00:00,1877,360000,1,63,10, 0x8B04A753, 0x10EAA60A, 0x6A610078, 0xE17FFE9C, 0xA30F7800, 0x64BEDD4C, 0xDBB81434, 0x9B6C4F13, 0x67480568, 0xC7C00000",
124 "365,12/31/2015,04:00:12,1877,360012,1,63,11, 0x8B04B753, 0x22610998, 0xD6B2C9D0, 0xEF01800F, 0xFF5EE007, 0xA00B3FF5, 0xEA001B8B, 0xE022CCFF, 0x755807EB, 0xB3300000",
125 "365,12/31/2015,04:00:24,1877,360024,1,63,30, 0x8B05E753, 0x320A6A79, 0x84021595, 0x00084000, 0x0B0FFB7E, 0x5019E0D4, 0x0DFFFF02, 0x39F1FF11, 0x55000411, 0xB1F00000",
126 "365,12/31/2015,04:00:36,1877,360036,1,63,33, 0x8B061753, 0x420A6A79, 0x84021595, 0x00084001, 0xFFCE0000, 0x02298EE7, 0x5539D988, 0x80000000, 0x0000088D, 0x3DE00000"
128 static const string sv50_CNAV[] =
130 "365,12/31/2015,00:00:00,1877,345600,5,50,10, 0x8B14A708, 0x10EAA605, 0xEA4900F8, 0x87BFFFCF, 0xE33EE000, 0x0DD1110C, 0x796012CA, 0x8EB84F34, 0xC1F0049B, 0x24900000",
131 "365,12/31/2015,00:00:12,1877,345612,5,50,11, 0x8B14B708, 0x22491E9A, 0xBFDBC9A2, 0xACF8E007, 0xC0DE000E, 0xC002C003, 0x510016F7, 0x4028AB00, 0x2FF00D9E, 0x66400000",
132 "365,12/31/2015,00:00:24,1877,345624,5,50,30, 0x8B15E708, 0x3205E5F9, 0x25D6111F, 0x801FB001, 0xE90FFC83, 0x1E001000, 0x0DFFFF02, 0x39F1FF11, 0x55000952, 0x83B00000",
133 "365,12/31/2015,00:00:36,1877,345636,5,50,33, 0x8B161708, 0x4205E5F9, 0x25D6111F, 0x801FB001, 0xFFCE0000, 0x022979C7, 0x5539D988, 0x80000000, 0x00000F0F, 0x80A00000",
134 "365,12/31/2015,02:00:00,1877,352800,5,50,10, 0x8B14A72D, 0x90EAA605, 0xEA5500F1, 0x10800003, 0x134AF000, 0x16E3BDCD, 0x7D8012C9, 0x8F304F2A, 0xDF9A0CA4, 0xD5A00000",
135 "365,12/31/2015,02:00:12,1877,352812,5,50,11, 0x8B14B72D, 0xA2551E9A, 0x72C749A2, 0xAE352013, 0x70829FFF, 0xFFF80002, 0xEE80181B, 0x0026F400, 0x28580984, 0x56000000",
136 "365,12/31/2015,02:00:24,1877,352824,5,50,30, 0x8B15E72D, 0xB205E5F9, 0x55D612DD, 0x001FB001, 0xE90FFC83, 0x1E001000, 0x0DFFFF02, 0x39F1FF11, 0x550008B6, 0x7E600000",
137 "365,12/31/2015,02:00:36,1877,352836,5,50,33, 0x8B16172D, 0xC205E5F9, 0x55D612DD, 0x001FB001, 0xFFCE0000, 0x022979C7, 0x5539D988, 0x80000000, 0x00000EEB, 0x7D700000",
138 "365,12/31/2015,04:00:00,1877,360000,5,50,10, 0x8B14A753, 0x10EAA605, 0xEA6100F8, 0x27400088, 0x334447FF, 0xE2966A43, 0x63D812C8, 0xAE484F33, 0xD3FC0C2A, 0x5C400000",
139 "365,12/31/2015,04:00:12,1877,360012,5,50,11, 0x8B14B753, 0x22611E9A, 0x24C149A2, 0xAF354020, 0x8088FFF9, 0xFFFB4001, 0xF5601886, 0x6026A800, 0x1A800B07, 0xF9800000",
140 "365,12/31/2015,04:00:24,1877,360024,5,50,30, 0x8B15E753, 0x3205E5F9, 0x85D6149A, 0x801FA801, 0xE90FFC83, 0x1E001000, 0x0DFFFF02, 0x39F1FF11, 0x55000781, 0x8FB00000",
141 "365,12/31/2015,04:00:36,1877,360036,5,50,33, 0x8B161753, 0x4205E5F9, 0x85D6149A, 0x801FA801, 0xFFCE0000, 0x022979C7, 0x5539D988, 0x80000000, 0x000001DC, 0x8CA00000"
145 for (
int i1=0; i1<MSG_COUNT_CNAV; i1++)
147 vector<string>
words;
148 for (
int i2=0; i2<2; i2++)
161 SatID sid(prn, SatelliteSystem::GPS);
163 string rxString =
"unk";
173 for (
int i=0; i<10; i++)
175 int ndx = i + offset;
177 string::size_type n = hexStr.find(
"x");
178 hexStr = hexStr.substr(n+1);
189 messageList.push_back(pnb);
192 cNavList.push_back(cnavFilt);
203 TUDEF(
"CNav NoFilter",
"validate");
206 unsigned long count = 0;
208 list<CNavFilterData>::iterator it;
209 for (it=cNavList.begin(); it!=cNavList.end(); it++)
217 int expected = cNavList.size();
218 TUASSERTE(
unsigned long, expected, count);
228 TUDEF(
"CNavCookFilter",
"validate");
231 unsigned long count = 0;
236 list<CNavFilterData>::iterator it;
237 for (it=cNavList.begin(); it!=cNavList.end(); it++)
245 int expected = cNavList.size();
246 TUASSERTE(
unsigned long, expected, count);
254 for (it=cNavList.begin(); it!=cNavList.end(); it++)
268 TUASSERTE(
unsigned long, expected, count);
276 TUDEF(
"CNavParityFilter",
"validate");
279 unsigned long rejectCount = 0;
280 unsigned long acceptCount = 0;
286 list<CNavFilterData>::iterator it;
287 for (it=cNavList.begin(); it!=cNavList.end(); it++)
291 gnsstk::NavFilter::NavMsgList::const_iterator nmli;
293 acceptCount += l.size();
294 rejectCount += filtParity.
rejected.size();
296 int expected = cNavList.size();
297 TUASSERTE(
unsigned long, expected, acceptCount);
298 TUASSERTE(
unsigned long, 0, rejectCount);
304 list<PackedNavBits*>::iterator it2 = messageList.begin();
307 unsigned long zeroes = 0x00000000;
311 acceptCount = l.size();
312 rejectCount = filtParity.
rejected.size();
313 TUASSERTE(
unsigned long, 0, acceptCount);
314 TUASSERTE(
unsigned long, 1, rejectCount);
323 TUDEF(
"CNavEmptyFilter",
"validate");
326 unsigned long rejectCount = 0;
327 unsigned long acceptCount = 0;
332 list<CNavFilterData>::iterator it;
333 for (it=cNavList.begin(); it!=cNavList.end(); it++)
337 acceptCount += l.size();
338 rejectCount += filtEmpty.
rejected.size();
340 int expected = cNavList.size();
341 TUASSERTE(
unsigned long, expected, acceptCount);
342 TUASSERTE(
unsigned long, 0, rejectCount);
355 list<PackedNavBits*>::iterator it2 = messageList.begin();
362 unsigned long alternating = 0xAAAAAAAA;
393 unsigned long allZero = 0x00000000;
411 acceptCount += l.size();
412 rejectCount += filtEmpty.
rejected.size();
417 unsigned long alt01 = 0x55555555;
418 int startBit = 39 - 1;
419 int nBitsPerWord = 32;
421 int lastPossibleStartBit = endBit - nBitsPerWord;
423 while (startBit < lastPossibleStartBit)
428 int lastNBits = endBit - startBit;
429 alt01 >>= (32 - lastNBits);
434 acceptCount += l.size();
435 rejectCount += filtEmpty.
rejected.size();
438 TUASSERTE(
unsigned long, 0, acceptCount);
439 TUASSERTE(
unsigned long, 2, rejectCount);
447 TUDEF(
"CNavTOWFilter",
"validate");
450 unsigned long rejectCount = 0;
451 unsigned long acceptCount = 0;
456 list<CNavFilterData>::iterator it;
457 for (it=cNavList.begin(); it!=cNavList.end(); it++)
461 rejectCount += filtTOW.
rejected.size();
462 acceptCount += l.size();
464 int expected = cNavList.size();
465 TUASSERTE(
unsigned long, expected, acceptCount);
466 TUASSERTE(
unsigned long, 0, rejectCount);
474 list<PackedNavBits*>::iterator it2 = messageList.begin();
479 unsigned long badTOW = 604800;
484 unsigned long badPre = 0;
491 rejectCount += filtTOW.
rejected.size();
492 acceptCount += l.size();
496 rejectCount += filtTOW.
rejected.size();
497 acceptCount += l.size();
501 unsigned long badMT[] = { 9, 16, 29, 40};
504 for (
int i=0; i<badMTCount; i++)
509 rejectCount += filtTOW.
rejected.size();
510 acceptCount += l.size();
514 delete pnbBadPreamble;
516 unsigned long expReject = 2 + badMTCount;
517 TUASSERTE(
unsigned long, 0, acceptCount);
518 TUASSERTE(
unsigned long, expReject, rejectCount);
527 TUDEF(
"CNavFilter-Combined",
"validate");
530 unsigned long rejectCount = 0;
539 list<CNavFilterData>::iterator it;
540 for (it=cNavList.begin(); it!=cNavList.end(); it++)
545 rejectCount += l.empty();
547 int expected = cNavList.size();
548 TUASSERTE(
unsigned long, 0, rejectCount);
556 TUDEF(
"CNavCrossSource",
"validate");
559 unsigned long acceptCount = 0;
560 unsigned long rejectCount = 0;
561 unsigned long expReject = 0;
581 unsigned short cnt = 0;
583 NavFilterMgr::FilterSet::const_iterator fsi;
584 NavFilter::NavMsgList::const_iterator nmli;
585 list<CNavFilterData>::iterator it;
595 for (it=cNavList.begin(); it!=cNavList.end(); it++)
598 for (
int n=0; n<2; n++)
603 acceptCount += l.size();
608 for (nmli=(*fsi)->rejected.begin();
609 nmli!=(*fsi)->rejected.end();nmli++)
623 acceptCount += l.size();
626 for (nmli=(*fsi)->rejected.begin();
627 nmli!=(*fsi)->rejected.end();nmli++)
636 int expected = cNavList.size() * 2;
637 TUASSERTE(
unsigned long, expected, acceptCount);
638 TUASSERTE(
unsigned long, 0, rejectCount);
654 for (it=cNavList.begin(); it!=cNavList.end(); it++)
657 for (
int n=0; n<3; n++)
667 fd.
code = TrackingCode::L2CM;
676 acceptCount += l.size();
681 for (nmli=(*fsi)->rejected.begin();
682 nmli!=(*fsi)->rejected.end();nmli++)
695 acceptCount += l.size();
698 for (nmli=(*fsi)->rejected.begin();
699 nmli!=(*fsi)->rejected.end();nmli++)
712 expected = cNavList.size() * 3;
714 TUASSERTE(
unsigned long, expected, acceptCount);
715 TUASSERTE(
unsigned long, expReject, rejectCount);
723 unsigned long zeroes = 0x00000000;
727 for (it=cNavList.begin(); it!=cNavList.end(); it++)
730 for (
int n=0; n<3; n++)
744 acceptCount += l.size();
749 for (nmli=(*fsi)->rejected.begin();
750 nmli!=(*fsi)->rejected.end();nmli++)
764 acceptCount += l.size();
767 for (nmli=(*fsi)->rejected.begin();
768 nmli!=(*fsi)->rejected.end();nmli++)
777 expected = cNavList.size() * 2;
778 expReject = cNavList.size();
779 TUASSERTE(
unsigned long, expected, acceptCount);
780 TUASSERTE(
unsigned long, expReject, rejectCount);
788 unsigned errorTotal = 0;
801 cout <<
"Total Failures for " << __FILE__ <<
": " << errorTotal << endl;