@@ -327,6 +327,65 @@ void ipv6NonRoutable() {
327327 assertThat (filter ).doesNotMatch ("::" );
328328 }
329329
330+ @ Test
331+ void ipv4CurrentLocalThisNetwork () {
332+ InetAddressFilter filter = InetAddressFilter .externalAddresses ();
333+ assertThat (filter ).doesNotMatch ("0.0.0.4" );
334+ }
335+
336+ @ Test
337+ void ipv4Subnet () {
338+ InetAddressFilter filter = InetAddressFilter .externalAddresses ();
339+ assertThat (filter ).doesNotMatch ("169.254.0.1" );
340+ assertThat (filter ).doesNotMatch ("255.255.255.255" );
341+ }
342+
343+ @ Test
344+ void ipv4Documentation () {
345+ InetAddressFilter filter = InetAddressFilter .externalAddresses ();
346+ assertThat (filter ).doesNotMatch ("192.0.2.1" );
347+ assertThat (filter ).doesNotMatch ("203.0.113.1" );
348+ }
349+
350+ @ Test
351+ void ipv4Multicast () {
352+ InetAddressFilter filter = InetAddressFilter .externalAddresses ();
353+ assertThat (filter ).doesNotMatch ("224.0.0.1" );
354+ }
355+
356+ @ Test
357+ void ipv4ReservedForFutureUse () {
358+ InetAddressFilter filter = InetAddressFilter .externalAddresses ();
359+ assertThat (filter ).doesNotMatch ("240.0.0.1" );
360+ }
361+
362+ @ Test
363+ void ipv4SharedAddressSpace () {
364+ InetAddressFilter filter = InetAddressFilter .externalAddresses ();
365+ assertThat (filter ).doesNotMatch ("100.64.0.1" );
366+ assertThat (filter ).doesNotMatch ("100.127.255.254" );
367+ }
368+
369+ @ Test
370+ void ipv4PerformanceBenchmarking () {
371+ InetAddressFilter filter = InetAddressFilter .externalAddresses ();
372+ assertThat (filter ).doesNotMatch ("198.18.0.1" );
373+ assertThat (filter ).doesNotMatch ("198.19.255.255" );
374+ }
375+
376+ @ Test
377+ void ipv4AllHostsMulticastGroup () {
378+ InetAddressFilter filter = InetAddressFilter .externalAddresses ();
379+ assertThat (filter ).doesNotMatch ("224.0.0.1" );
380+ assertThat (filter ).doesNotMatch ("239.255.255.250" );
381+ }
382+
383+ @ Test
384+ void ipv6NodeLinkMulticastAddress () {
385+ InetAddressFilter filter = InetAddressFilter .externalAddresses ();
386+ assertThat (filter ).doesNotMatch ("ff02::1" );
387+ }
388+
330389 }
331390
332391 @ Nested
@@ -521,6 +580,163 @@ void routable() {
521580
522581 }
523582
583+ @ Nested
584+ class Multicast {
585+
586+ @ Test
587+ void multicast () {
588+ InetAddressFilter filter = InetAddressFilter .multicast ();
589+ assertThat (filter ).matches ("239.255.255.255" );
590+ assertThat (filter ).matches ("FF00:0000:0000:0000:0000:0000:0000:0001" );
591+ }
592+
593+ }
594+
595+ @ Nested
596+ class SpecialPurpose {
597+
598+ @ Test
599+ void publicAddress () {
600+ InetAddressFilter filter = InetAddressFilter .specialPurpose ();
601+ assertThat (filter ).doesNotMatch ("8.8.8.8" );
602+ }
603+
604+ @ Test
605+ void thisHostNetwork () {
606+ InetAddressFilter filter = InetAddressFilter .specialPurpose ();
607+ assertThat (filter ).matches ("0.0.0.1" );
608+ }
609+
610+ @ Test
611+ void privateUseNetwork () {
612+ InetAddressFilter filter = InetAddressFilter .specialPurpose ();
613+ assertThat (filter ).matches ("10.0.0.1" );
614+ assertThat (filter ).matches ("172.16.0.1" );
615+ assertThat (filter ).matches ("192.168.0.1" );
616+ }
617+
618+ @ Test
619+ void sharedAddressSpace () {
620+ InetAddressFilter filter = InetAddressFilter .specialPurpose ();
621+ assertThat (filter ).matches ("100.64.0.1" );
622+ }
623+
624+ @ Test
625+ void loopback () {
626+ InetAddressFilter filter = InetAddressFilter .specialPurpose ();
627+ assertThat (filter ).matches ("127.0.0.0" );
628+ assertThat (filter ).matches ("::1" );
629+ }
630+
631+ @ Test
632+ void linkLocal () {
633+ InetAddressFilter filter = InetAddressFilter .specialPurpose ();
634+ assertThat (filter ).matches ("169.254.0.1" );
635+ }
636+
637+ @ Test
638+ void protocolAssignments () {
639+ InetAddressFilter filter = InetAddressFilter .specialPurpose ();
640+ assertThat (filter ).matches ("192.0.0.1" );
641+ assertThat (filter ).matches ("2001:0000:0000:0000:0000:0000:0000:0001" );
642+ }
643+
644+ @ Test
645+ void dsLite () {
646+ InetAddressFilter filter = InetAddressFilter .specialPurpose ();
647+ assertThat (filter ).matches ("192.0.0.1" );
648+ }
649+
650+ @ Test
651+ void documentation () {
652+ InetAddressFilter filter = InetAddressFilter .specialPurpose ();
653+ assertThat (filter ).matches ("192.0.2.1" );
654+ assertThat (filter ).matches ("198.51.100.1" );
655+ assertThat (filter ).matches ("203.0.113.1" );
656+ assertThat (filter ).matches ("2001:0db8:0000:0000:0000:0000:0000:0001" );
657+ }
658+
659+ @ Test
660+ void SixToFourRelay () {
661+ InetAddressFilter filter = InetAddressFilter .specialPurpose ();
662+ assertThat (filter ).matches ("192.88.99.1" );
663+ }
664+
665+ @ Test
666+ void deviceBenchmarking () {
667+ InetAddressFilter filter = InetAddressFilter .specialPurpose ();
668+ assertThat (filter ).matches ("198.18.0.1" );
669+ assertThat (filter ).matches ("2001:0002:0000:0000:0000:0000:0000:0001" );
670+ }
671+
672+ @ Test
673+ void futureUse () {
674+ InetAddressFilter filter = InetAddressFilter .specialPurpose ();
675+ assertThat (filter ).matches ("240.0.0.1" );
676+ }
677+
678+ @ Test
679+ void limitedBroadcast () {
680+ InetAddressFilter filter = InetAddressFilter .specialPurpose ();
681+ assertThat (filter ).matches ("255.255.255.255" );
682+ }
683+
684+ @ Test
685+ void unspecifiedAddress () {
686+ InetAddressFilter filter = InetAddressFilter .specialPurpose ();
687+ assertThat (filter ).matches ("0000:0000:0000:0000:0000:0000:0000:0001" );
688+ }
689+
690+ @ Test
691+ void ipv4ToIpv6AddressTranslation () {
692+ InetAddressFilter filter = InetAddressFilter .specialPurpose ();
693+ assertThat (filter ).matches ("0064:ff9b:0000:0000:0000:0000:0000:0001" );
694+ }
695+
696+ @ Test
697+ void ipv4MappedAddress () {
698+ InetAddressFilter filter = InetAddressFilter .specialPurpose ();
699+ assertThat (filter ).matches ("0000:0000:0000:0000:0000:ffff:0000:0001" );
700+ }
701+
702+ @ Test
703+ void discardOnly () {
704+ InetAddressFilter filter = InetAddressFilter .specialPurpose ();
705+ assertThat (filter ).matches ("0100:0000:0000:0000:0000:0000:0000:0001" );
706+ }
707+
708+ @ Test
709+ void teredo () {
710+ InetAddressFilter filter = InetAddressFilter .specialPurpose ();
711+ assertThat (filter ).matches ("2001:0000:0000:0000:0000:0000:0000:0001" );
712+ }
713+
714+ @ Test
715+ void orchid () {
716+ InetAddressFilter filter = InetAddressFilter .specialPurpose ();
717+ assertThat (filter ).matches ("2001:10:0000:0000:0000:0000:0000:0001" );
718+ }
719+
720+ @ Test
721+ void sixToFour () {
722+ InetAddressFilter filter = InetAddressFilter .specialPurpose ();
723+ assertThat (filter ).matches ("2002:0000:0000:0000:0000:0000:0000:0001" );
724+ }
725+
726+ @ Test
727+ void uniqueLocal () {
728+ InetAddressFilter filter = InetAddressFilter .specialPurpose ();
729+ assertThat (filter ).matches ("fc00:0000:0000:0000:0000:0000:0000:0001" );
730+ }
731+
732+ @ Test
733+ void linkedScopedUnicast () {
734+ InetAddressFilter filter = InetAddressFilter .specialPurpose ();
735+ assertThat (filter ).matches ("fe80:0000:0000:0000:0000:0000:0000:0001" );
736+ }
737+
738+ }
739+
524740 @ Nested
525741 class NotTests {
526742
0 commit comments