about summary refs log tree commit diff
path: root/src/libstd/net
diff options
context:
space:
mode:
authorCorentin Henry <corentinhenry@gmail.com>2019-04-22 15:27:14 +0200
committerCorentin Henry <corentinhenry@gmail.com>2019-04-22 17:41:32 +0200
commit40d0127a091dbf3eb55ef57de5facc4983ee472d (patch)
tree3c479a7392990e6624a174c4b145358b24091b92 /src/libstd/net
parent99d9bb640f0ea95ae6a7346c82a61008b2363c16 (diff)
downloadrust-40d0127a091dbf3eb55ef57de5facc4983ee472d.tar.gz
rust-40d0127a091dbf3eb55ef57de5facc4983ee472d.zip
std::net: tests for Ipv6addr::is_unicast_link_local{_strict}()
Diffstat (limited to 'src/libstd/net')
-rw-r--r--src/libstd/net/ip.rs69
1 files changed, 49 insertions, 20 deletions
diff --git a/src/libstd/net/ip.rs b/src/libstd/net/ip.rs
index 6f39575da2c..7ce8974e09f 100644
--- a/src/libstd/net/ip.rs
+++ b/src/libstd/net/ip.rs
@@ -2164,16 +2164,17 @@ mod tests {
                 let unique_local: u16 = 1 << 2;
                 let global: u16 = 1 << 3;
                 let unicast_link_local: u16 = 1 << 4;
-                let unicast_site_local: u16 = 1 << 5;
-                let unicast_global: u16 = 1 << 6;
-                let documentation: u16 = 1 << 7;
-                let multicast_interface_local: u16 = 1 << 8;
-                let multicast_link_local: u16 = 1 << 9;
-                let multicast_realm_local: u16 = 1 << 10;
-                let multicast_admin_local: u16 = 1 << 11;
-                let multicast_site_local: u16 = 1 << 12;
-                let multicast_organization_local: u16 = 1 << 13;
-                let multicast_global: u16 = 1 << 14;
+                let unicast_link_local_strict: u16 = 1 << 5;
+                let unicast_site_local: u16 = 1 << 6;
+                let unicast_global: u16 = 1 << 7;
+                let documentation: u16 = 1 << 8;
+                let multicast_interface_local: u16 = 1 << 9;
+                let multicast_link_local: u16 = 1 << 10;
+                let multicast_realm_local: u16 = 1 << 11;
+                let multicast_admin_local: u16 = 1 << 12;
+                let multicast_site_local: u16 = 1 << 13;
+                let multicast_organization_local: u16 = 1 << 14;
+                let multicast_global: u16 = 1 << 15;
                 let multicast: u16 = multicast_interface_local
                     | multicast_admin_local
                     | multicast_global
@@ -2207,6 +2208,11 @@ mod tests {
                 } else {
                     assert!(!ip!($s).is_unicast_link_local());
                 }
+                if ($mask & unicast_link_local_strict) == unicast_link_local_strict {
+                    assert!(ip!($s).is_unicast_link_local_strict());
+                } else {
+                    assert!(!ip!($s).is_unicast_link_local_strict());
+                }
                 if ($mask & unicast_site_local) == unicast_site_local {
                     assert!(ip!($s).is_unicast_site_local());
                 } else {
@@ -2265,16 +2271,17 @@ mod tests {
         let unique_local: u16 = 1 << 2;
         let global: u16 = 1 << 3;
         let unicast_link_local: u16 = 1 << 4;
-        let unicast_site_local: u16 = 1 << 5;
-        let unicast_global: u16 = 1 << 6;
-        let documentation: u16 = 1 << 7;
-        let multicast_interface_local: u16 = 1 << 8;
-        let multicast_link_local: u16 = 1 << 9;
-        let multicast_realm_local: u16 = 1 << 10;
-        let multicast_admin_local: u16 = 1 << 11;
-        let multicast_site_local: u16 = 1 << 12;
-        let multicast_organization_local: u16 = 1 << 13;
-        let multicast_global: u16 = 1 << 14;
+        let unicast_link_local_strict: u16 = 1 << 5;
+        let unicast_site_local: u16 = 1 << 6;
+        let unicast_global: u16 = 1 << 7;
+        let documentation: u16 = 1 << 8;
+        let multicast_interface_local: u16 = 1 << 9;
+        let multicast_link_local: u16 = 1 << 10;
+        let multicast_realm_local: u16 = 1 << 11;
+        let multicast_admin_local: u16 = 1 << 12;
+        let multicast_site_local: u16 = 1 << 13;
+        let multicast_organization_local: u16 = 1 << 14;
+        let multicast_global: u16 = 1 << 15;
 
         check!("::",
                &[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
@@ -2304,10 +2311,32 @@ mod tests {
                &[0xfe, 0x80, 0xff, 0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
                unicast_link_local);
 
+        check!("fe80::",
+               &[0xfe, 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+               unicast_link_local|unicast_link_local_strict);
+
         check!("febf:ffff::",
                &[0xfe, 0xbf, 0xff, 0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
                unicast_link_local);
 
+        check!("febf::",
+               &[0xfe, 0xbf, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+               unicast_link_local);
+
+        check!("febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff",
+               &[0xfe, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff],
+               unicast_link_local);
+
+        check!("fe80::ffff:ffff:ffff:ffff",
+               &[0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff],
+               unicast_link_local|unicast_link_local_strict);
+
+        check!("fe80:0:0:1::",
+               &[0xfe, 0x80, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
+               unicast_link_local);
+
         check!("fec0::",
                &[0xfe, 0xc0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
                unicast_site_local|unicast_global|global);