Skip to content

Commit 7644ef8

Browse files
committed
Rollup merge of #24480 - achanda:move_test, r=alexcrichton
- Also move common functions to test.rs - Leaves out Socket address related tests in addr.rs
2 parents 438011d + 63e5848 commit 7644ef8

File tree

3 files changed

+270
-259
lines changed

3 files changed

+270
-259
lines changed

src/libstd/net/addr.rs

+1-258
Original file line numberDiff line numberDiff line change
@@ -461,264 +461,7 @@ mod tests {
461461
use io;
462462
use net::*;
463463
use net::Ipv6MulticastScope::*;
464-
465-
#[test]
466-
fn test_from_str_ipv4() {
467-
assert_eq!(Ok(Ipv4Addr::new(127, 0, 0, 1)), "127.0.0.1".parse());
468-
assert_eq!(Ok(Ipv4Addr::new(255, 255, 255, 255)), "255.255.255.255".parse());
469-
assert_eq!(Ok(Ipv4Addr::new(0, 0, 0, 0)), "0.0.0.0".parse());
470-
471-
// out of range
472-
let none: Option<Ipv4Addr> = "256.0.0.1".parse().ok();
473-
assert_eq!(None, none);
474-
// too short
475-
let none: Option<Ipv4Addr> = "255.0.0".parse().ok();
476-
assert_eq!(None, none);
477-
// too long
478-
let none: Option<Ipv4Addr> = "255.0.0.1.2".parse().ok();
479-
assert_eq!(None, none);
480-
// no number between dots
481-
let none: Option<Ipv4Addr> = "255.0..1".parse().ok();
482-
assert_eq!(None, none);
483-
}
484-
485-
#[test]
486-
fn test_from_str_ipv6() {
487-
assert_eq!(Ok(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0)), "0:0:0:0:0:0:0:0".parse());
488-
assert_eq!(Ok(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1)), "0:0:0:0:0:0:0:1".parse());
489-
490-
assert_eq!(Ok(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1)), "::1".parse());
491-
assert_eq!(Ok(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0)), "::".parse());
492-
493-
assert_eq!(Ok(Ipv6Addr::new(0x2a02, 0x6b8, 0, 0, 0, 0, 0x11, 0x11)),
494-
"2a02:6b8::11:11".parse());
495-
496-
// too long group
497-
let none: Option<Ipv6Addr> = "::00000".parse().ok();
498-
assert_eq!(None, none);
499-
// too short
500-
let none: Option<Ipv6Addr> = "1:2:3:4:5:6:7".parse().ok();
501-
assert_eq!(None, none);
502-
// too long
503-
let none: Option<Ipv6Addr> = "1:2:3:4:5:6:7:8:9".parse().ok();
504-
assert_eq!(None, none);
505-
// triple colon
506-
let none: Option<Ipv6Addr> = "1:2:::6:7:8".parse().ok();
507-
assert_eq!(None, none);
508-
// two double colons
509-
let none: Option<Ipv6Addr> = "1:2::6::8".parse().ok();
510-
assert_eq!(None, none);
511-
}
512-
513-
#[test]
514-
fn test_from_str_ipv4_in_ipv6() {
515-
assert_eq!(Ok(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 49152, 545)),
516-
"::192.0.2.33".parse());
517-
assert_eq!(Ok(Ipv6Addr::new(0, 0, 0, 0, 0, 0xFFFF, 49152, 545)),
518-
"::FFFF:192.0.2.33".parse());
519-
assert_eq!(Ok(Ipv6Addr::new(0x64, 0xff9b, 0, 0, 0, 0, 49152, 545)),
520-
"64:ff9b::192.0.2.33".parse());
521-
assert_eq!(Ok(Ipv6Addr::new(0x2001, 0xdb8, 0x122, 0xc000, 0x2, 0x2100, 49152, 545)),
522-
"2001:db8:122:c000:2:2100:192.0.2.33".parse());
523-
524-
// colon after v4
525-
let none: Option<Ipv4Addr> = "::127.0.0.1:".parse().ok();
526-
assert_eq!(None, none);
527-
// not enough groups
528-
let none: Option<Ipv6Addr> = "1.2.3.4.5:127.0.0.1".parse().ok();
529-
assert_eq!(None, none);
530-
// too many groups
531-
let none: Option<Ipv6Addr> = "1.2.3.4.5:6:7:127.0.0.1".parse().ok();
532-
assert_eq!(None, none);
533-
}
534-
535-
#[test]
536-
fn test_from_str_socket_addr() {
537-
assert_eq!(Ok(sa4(Ipv4Addr::new(77, 88, 21, 11), 80)),
538-
"77.88.21.11:80".parse());
539-
assert_eq!(Ok(sa6(Ipv6Addr::new(0x2a02, 0x6b8, 0, 1, 0, 0, 0, 1), 53)),
540-
"[2a02:6b8:0:1::1]:53".parse());
541-
assert_eq!(Ok(sa6(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0x7F00, 1), 22)),
542-
"[::127.0.0.1]:22".parse());
543-
544-
// without port
545-
let none: Option<SocketAddr> = "127.0.0.1".parse().ok();
546-
assert_eq!(None, none);
547-
// without port
548-
let none: Option<SocketAddr> = "127.0.0.1:".parse().ok();
549-
assert_eq!(None, none);
550-
// wrong brackets around v4
551-
let none: Option<SocketAddr> = "[127.0.0.1]:22".parse().ok();
552-
assert_eq!(None, none);
553-
// port out of range
554-
let none: Option<SocketAddr> = "127.0.0.1:123456".parse().ok();
555-
assert_eq!(None, none);
556-
}
557-
558-
#[test]
559-
fn ipv6_addr_to_string() {
560-
// ipv4-mapped address
561-
let a1 = Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc000, 0x280);
562-
assert_eq!(a1.to_string(), "::ffff:192.0.2.128");
563-
564-
// ipv4-compatible address
565-
let a1 = Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0xc000, 0x280);
566-
assert_eq!(a1.to_string(), "::192.0.2.128");
567-
568-
// v6 address with no zero segments
569-
assert_eq!(Ipv6Addr::new(8, 9, 10, 11, 12, 13, 14, 15).to_string(),
570-
"8:9:a:b:c:d:e:f");
571-
572-
// reduce a single run of zeros
573-
assert_eq!("ae::ffff:102:304",
574-
Ipv6Addr::new(0xae, 0, 0, 0, 0, 0xffff, 0x0102, 0x0304).to_string());
575-
576-
// don't reduce just a single zero segment
577-
assert_eq!("1:2:3:4:5:6:0:8",
578-
Ipv6Addr::new(1, 2, 3, 4, 5, 6, 0, 8).to_string());
579-
580-
// 'any' address
581-
assert_eq!("::", Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0).to_string());
582-
583-
// loopback address
584-
assert_eq!("::1", Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1).to_string());
585-
586-
// ends in zeros
587-
assert_eq!("1::", Ipv6Addr::new(1, 0, 0, 0, 0, 0, 0, 0).to_string());
588-
589-
// two runs of zeros, second one is longer
590-
assert_eq!("1:0:0:4::8", Ipv6Addr::new(1, 0, 0, 4, 0, 0, 0, 8).to_string());
591-
592-
// two runs of zeros, equal length
593-
assert_eq!("1::4:5:0:0:8", Ipv6Addr::new(1, 0, 0, 4, 5, 0, 0, 8).to_string());
594-
}
595-
596-
#[test]
597-
fn ipv4_to_ipv6() {
598-
assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0x1234, 0x5678),
599-
Ipv4Addr::new(0x12, 0x34, 0x56, 0x78).to_ipv6_mapped());
600-
assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0x1234, 0x5678),
601-
Ipv4Addr::new(0x12, 0x34, 0x56, 0x78).to_ipv6_compatible());
602-
}
603-
604-
#[test]
605-
fn ipv6_to_ipv4() {
606-
assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0x1234, 0x5678).to_ipv4(),
607-
Some(Ipv4Addr::new(0x12, 0x34, 0x56, 0x78)));
608-
assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0x1234, 0x5678).to_ipv4(),
609-
Some(Ipv4Addr::new(0x12, 0x34, 0x56, 0x78)));
610-
assert_eq!(Ipv6Addr::new(0, 0, 1, 0, 0, 0, 0x1234, 0x5678).to_ipv4(),
611-
None);
612-
}
613-
614-
#[test]
615-
fn ipv4_properties() {
616-
fn check(octets: &[u8; 4], unspec: bool, loopback: bool,
617-
private: bool, link_local: bool, global: bool,
618-
multicast: bool, broadcast: bool, documentation: bool) {
619-
let ip = Ipv4Addr::new(octets[0], octets[1], octets[2], octets[3]);
620-
assert_eq!(octets, &ip.octets());
621-
622-
assert_eq!(ip.is_unspecified(), unspec);
623-
assert_eq!(ip.is_loopback(), loopback);
624-
assert_eq!(ip.is_private(), private);
625-
assert_eq!(ip.is_link_local(), link_local);
626-
assert_eq!(ip.is_global(), global);
627-
assert_eq!(ip.is_multicast(), multicast);
628-
assert_eq!(ip.is_broadcast(), broadcast);
629-
assert_eq!(ip.is_documentation(), documentation);
630-
}
631-
632-
// address unspec loopbk privt linloc global multicast brdcast doc
633-
check(&[0, 0, 0, 0], true, false, false, false, true, false, false, false);
634-
check(&[0, 0, 0, 1], false, false, false, false, true, false, false, false);
635-
check(&[1, 0, 0, 0], false, false, false, false, true, false, false, false);
636-
check(&[10, 9, 8, 7], false, false, true, false, false, false, false, false);
637-
check(&[127, 1, 2, 3], false, true, false, false, false, false, false, false);
638-
check(&[172, 31, 254, 253], false, false, true, false, false, false, false, false);
639-
check(&[169, 254, 253, 242], false, false, false, true, false, false, false, false);
640-
check(&[192, 168, 254, 253], false, false, true, false, false, false, false, false);
641-
check(&[224, 0, 0, 0], false, false, false, false, true, true, false, false);
642-
check(&[239, 255, 255, 255], false, false, false, false, true, true, false, false);
643-
check(&[255, 255, 255, 255], false, false, false, false, false, false, true, false);
644-
check(&[198, 51, 100, 0], false, false, false, false, false, false, false, true);
645-
}
646-
647-
#[test]
648-
fn ipv6_properties() {
649-
fn check(str_addr: &str, unspec: bool, loopback: bool,
650-
unique_local: bool, global: bool,
651-
u_link_local: bool, u_site_local: bool, u_global: bool,
652-
m_scope: Option<Ipv6MulticastScope>) {
653-
let ip: Ipv6Addr = str_addr.parse().unwrap();
654-
assert_eq!(str_addr, ip.to_string());
655-
656-
assert_eq!(ip.is_unspecified(), unspec);
657-
assert_eq!(ip.is_loopback(), loopback);
658-
assert_eq!(ip.is_unique_local(), unique_local);
659-
assert_eq!(ip.is_global(), global);
660-
assert_eq!(ip.is_unicast_link_local(), u_link_local);
661-
assert_eq!(ip.is_unicast_site_local(), u_site_local);
662-
assert_eq!(ip.is_unicast_global(), u_global);
663-
assert_eq!(ip.multicast_scope(), m_scope);
664-
assert_eq!(ip.is_multicast(), m_scope.is_some());
665-
}
666-
667-
// unspec loopbk uniqlo global unill unisl uniglo mscope
668-
check("::",
669-
true, false, false, true, false, false, true, None);
670-
check("::1",
671-
false, true, false, false, false, false, false, None);
672-
check("::0.0.0.2",
673-
false, false, false, true, false, false, true, None);
674-
check("1::",
675-
false, false, false, true, false, false, true, None);
676-
check("fc00::",
677-
false, false, true, false, false, false, false, None);
678-
check("fdff:ffff::",
679-
false, false, true, false, false, false, false, None);
680-
check("fe80:ffff::",
681-
false, false, false, false, true, false, false, None);
682-
check("febf:ffff::",
683-
false, false, false, false, true, false, false, None);
684-
check("fec0::",
685-
false, false, false, false, false, true, false, None);
686-
check("ff01::",
687-
false, false, false, false, false, false, false, Some(InterfaceLocal));
688-
check("ff02::",
689-
false, false, false, false, false, false, false, Some(LinkLocal));
690-
check("ff03::",
691-
false, false, false, false, false, false, false, Some(RealmLocal));
692-
check("ff04::",
693-
false, false, false, false, false, false, false, Some(AdminLocal));
694-
check("ff05::",
695-
false, false, false, false, false, false, false, Some(SiteLocal));
696-
check("ff08::",
697-
false, false, false, false, false, false, false, Some(OrganizationLocal));
698-
check("ff0e::",
699-
false, false, false, true, false, false, false, Some(Global));
700-
}
701-
702-
fn tsa<A: ToSocketAddrs>(a: A) -> Result<Vec<SocketAddr>, String> {
703-
match a.to_socket_addrs() {
704-
Ok(a) => Ok(a.collect()),
705-
Err(e) => Err(e.to_string()),
706-
}
707-
}
708-
709-
#[test]
710-
fn to_socket_addr_socketaddr() {
711-
let a = sa4(Ipv4Addr::new(77, 88, 21, 11), 12345);
712-
assert_eq!(Ok(vec![a]), tsa(a));
713-
}
714-
715-
fn sa4(a: Ipv4Addr, p: u16) -> SocketAddr {
716-
SocketAddr::V4(SocketAddrV4::new(a, p))
717-
}
718-
719-
fn sa6(a: Ipv6Addr, p: u16) -> SocketAddr {
720-
SocketAddr::V6(SocketAddrV6::new(a, p, 0, 0))
721-
}
464+
use net::test::{tsa, sa6, sa4};
722465

723466
#[test]
724467
fn to_socket_addr_ipaddr_u16() {

0 commit comments

Comments
 (0)