@@ -594,4 +594,98 @@ mod test {
594594
595595 assert_eq ! ( serialize( & addresses) , raw) ;
596596 }
597+
598+ #[ test]
599+ fn socketaddr_to_addrv2_ipv4 ( ) {
600+ let socket = SocketAddr :: V4 ( SocketAddrV4 :: new ( Ipv4Addr :: new ( 192 , 168 , 1 , 1 ) , 8333 ) ) ;
601+ let addr = AddrV2 :: from ( socket) ;
602+
603+ assert_eq ! ( addr, AddrV2 :: Ipv4 ( Ipv4Addr :: new( 192 , 168 , 1 , 1 ) ) ) ;
604+ }
605+
606+ #[ test]
607+ fn socketaddr_to_addrv2_ipv6 ( ) {
608+ let socket = SocketAddr :: V6 ( SocketAddrV6 :: new (
609+ Ipv6Addr :: new ( 0x2001 , 0xdb8 , 0 , 0 , 0 , 0 , 0 , 1 ) ,
610+ 8333 ,
611+ 0 ,
612+ 0 ,
613+ ) ) ;
614+ let addr = AddrV2 :: from ( socket) ;
615+
616+ assert_eq ! ( addr, AddrV2 :: Ipv6 ( Ipv6Addr :: new( 0x2001 , 0xdb8 , 0 , 0 , 0 , 0 , 0 , 1 ) ) ) ;
617+ }
618+
619+ #[ test]
620+ fn socketaddr_to_addrv2_cjdns ( ) {
621+ let socket = SocketAddr :: V6 ( SocketAddrV6 :: new (
622+ Ipv6Addr :: new ( 0xfc00 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ) ,
623+ 8333 ,
624+ 0 ,
625+ 0 ,
626+ ) ) ;
627+ let addr = AddrV2 :: from ( socket) ;
628+
629+ assert_eq ! ( addr, AddrV2 :: Cjdns ( Ipv6Addr :: new( 0xfc00 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ) ) ) ;
630+ }
631+
632+ #[ test]
633+ fn addrv2_to_socketaddr_ipv4 ( ) {
634+ let addr = AddrV2 :: Ipv4 ( Ipv4Addr :: new ( 192 , 168 , 1 , 1 ) ) ;
635+ let socket = SocketAddr :: try_from ( addr) . unwrap ( ) ;
636+
637+ assert_eq ! ( socket, SocketAddr :: V4 ( SocketAddrV4 :: new( Ipv4Addr :: new( 192 , 168 , 1 , 1 ) , 0 ) ) ) ;
638+ }
639+
640+ #[ test]
641+ fn addrv2_to_socketaddr_ipv6 ( ) {
642+ let addr = AddrV2 :: Ipv6 ( Ipv6Addr :: new ( 0x2001 , 0xdb8 , 0 , 0 , 0 , 0 , 0 , 1 ) ) ;
643+ let socket = SocketAddr :: try_from ( addr) . unwrap ( ) ;
644+
645+ assert_eq ! (
646+ socket,
647+ SocketAddr :: V6 ( SocketAddrV6 :: new(
648+ Ipv6Addr :: new( 0x2001 , 0xdb8 , 0 , 0 , 0 , 0 , 0 , 1 ) ,
649+ 0 ,
650+ 0 ,
651+ 0
652+ ) )
653+ ) ;
654+ }
655+
656+ #[ test]
657+ fn addrv2_to_socketaddr_cjdns ( ) {
658+ let addr = AddrV2 :: Cjdns ( Ipv6Addr :: new ( 0xfc00 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ) ) ;
659+ let result = SocketAddr :: try_from ( addr) ;
660+
661+ assert ! ( result. is_err( ) ) ;
662+ assert_eq ! ( result. unwrap_err( ) , AddrV2ConversionError :: CjdnsNotRecommended ) ;
663+ }
664+
665+ #[ test]
666+ fn addrv2_to_socketaddr_torv3 ( ) {
667+ let addr = AddrV2 :: TorV3 ( [ 0 ; 32 ] ) ;
668+ let result = SocketAddr :: try_from ( addr) ;
669+
670+ assert ! ( result. is_err( ) ) ;
671+ assert_eq ! ( result. unwrap_err( ) , AddrV2ConversionError :: TorV3NotSupported ) ;
672+ }
673+
674+ #[ test]
675+ fn addrv2_to_socketaddr_i2p ( ) {
676+ let addr = AddrV2 :: I2p ( [ 0 ; 32 ] ) ;
677+ let result = SocketAddr :: try_from ( addr) ;
678+
679+ assert ! ( result. is_err( ) ) ;
680+ assert_eq ! ( result. unwrap_err( ) , AddrV2ConversionError :: I2pNotSupported ) ;
681+ }
682+
683+ #[ test]
684+ fn addrv2_to_socketaddr_unknown ( ) {
685+ let addr = AddrV2 :: Unknown ( 42 , vec ! [ 1 , 2 , 3 , 4 ] ) ;
686+ let result = SocketAddr :: try_from ( addr) ;
687+
688+ assert ! ( result. is_err( ) ) ;
689+ assert_eq ! ( result. unwrap_err( ) , AddrV2ConversionError :: UnknownNotSupported ) ;
690+ }
597691}
0 commit comments