@@ -558,6 +558,61 @@ TEST_CASE("Test OS-specific functions", "[osspecific]")
558558 if (locked)
559559 lock.Unlock ();
560560 };
561+
562+ SECTION (" IP processing" )
563+ {
564+ CHECK (Network::MakeIP (127 , 0 , 0 , 1 ) == 0x7f000001 );
565+ CHECK (Network::MakeIP (216 , 58 , 211 , 174 ) == 0xD83AD3AE );
566+ CHECK (Network::GetIPOctet (Network::MakeIP (216 , 58 , 211 , 174 ), 0 ) == 216 );
567+ CHECK (Network::GetIPOctet (Network::MakeIP (216 , 58 , 211 , 174 ), 1 ) == 58 );
568+ CHECK (Network::GetIPOctet (Network::MakeIP (216 , 58 , 211 , 174 ), 2 ) == 211 );
569+ CHECK (Network::GetIPOctet (Network::MakeIP (216 , 58 , 211 , 174 ), 3 ) == 174 );
570+
571+ CHECK (Network::MatchIPMask (Network::MakeIP (127 , 0 , 0 , 1 ), 0x7f000001 , 0xFFFFFFFF ));
572+ CHECK (Network::MatchIPMask (Network::MakeIP (127 , 0 , 0 , 1 ), 0x7f000000 , 0xFF000000 ));
573+ CHECK (Network::MatchIPMask (Network::MakeIP (127 , 8 , 0 , 1 ), 0x7f000000 , 0xFF000000 ));
574+ CHECK (Network::MatchIPMask (Network::MakeIP (127 , 100 , 22 , 5 ), 0x7f000000 , 0xFF000000 ));
575+ CHECK (Network::MatchIPMask (Network::MakeIP (127 , 66 , 66 , 66 ), 0x7f000000 , 0xFF000000 ));
576+ CHECK_FALSE (Network::MatchIPMask (Network::MakeIP (216 , 58 , 211 , 174 ), 0x80000000 , ~0U ));
577+
578+ uint32_t ip = 0 ;
579+ uint32_t mask = 0 ;
580+ Network::ParseIPRangeCIDR (" foobar" , ip, mask);
581+ CHECK (ip == 0 );
582+ CHECK (mask == 0 );
583+
584+ Network::ParseIPRangeCIDR (" " , ip, mask);
585+ CHECK (ip == 0 );
586+ CHECK (mask == 0 );
587+
588+ Network::ParseIPRangeCIDR (" 1.23/4" , ip, mask);
589+ CHECK (ip == 0 );
590+ CHECK (mask == 0 );
591+
592+ Network::ParseIPRangeCIDR (" 1.23.4.5.6.7/8" , ip, mask);
593+ CHECK (ip == 0 );
594+ CHECK (mask == 0 );
595+
596+ Network::ParseIPRangeCIDR (" 999.888.777.666/555" , ip, mask);
597+ CHECK (ip == 0 );
598+ CHECK (mask == 0 );
599+
600+ Network::ParseIPRangeCIDR (" 216.58,211.174/16" , ip, mask);
601+ CHECK (ip == 0 );
602+ CHECK (mask == 0 );
603+
604+ Network::ParseIPRangeCIDR (" 216.58.211.174/16" , ip, mask);
605+ CHECK (ip == Network::MakeIP (216 , 58 , 211 , 174 ));
606+ CHECK (mask == 0xFFFF0000 );
607+
608+ Network::ParseIPRangeCIDR (" 216.58.211.174/8" , ip, mask);
609+ CHECK (ip == Network::MakeIP (216 , 58 , 211 , 174 ));
610+ CHECK (mask == 0xFF000000 );
611+
612+ Network::ParseIPRangeCIDR (" 216.58.211.174/31" , ip, mask);
613+ CHECK (ip == Network::MakeIP (216 , 58 , 211 , 174 ));
614+ CHECK (mask == 0xFFFFFFFe );
615+ };
561616};
562617
563618#endif // ENABLED(ENABLE_UNIT_TESTS)
0 commit comments