1 /* 2 * Copyright (C) 2021 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #include "wifi_ip_tools_test.h" 17 #include <net/if.h> 18 #include "securec.h" 19 #include "ip_tools.h" 20 #include "network_interface.h" 21 22 using namespace testing::ext; 23 24 namespace OHOS { 25 namespace Wifi { 26 HWTEST_F(WifiIpToolsTest, ConvertIpv4AddressTest, TestSize.Level1) 27 { 28 EXPECT_TRUE(IpTools::ConvertIpv4Address(0) == ""); 29 EXPECT_TRUE(IpTools::ConvertIpv4Address(0xc0a80001) == "192.168.0.1"); 30 EXPECT_TRUE(IpTools::ConvertIpv4Address("") == 0); 31 EXPECT_TRUE(IpTools::ConvertIpv4Address("192:168:0:1") == 0); 32 EXPECT_TRUE(IpTools::ConvertIpv4Address("192.168:0.1") == 0); 33 EXPECT_TRUE(IpTools::ConvertIpv4Address("289.168.0.1") == 0); 34 EXPECT_TRUE(IpTools::ConvertIpv4Address("-1.168.0.1") == 0); 35 EXPECT_TRUE(IpTools::ConvertIpv4Address("192.168.0.289") == 0); 36 EXPECT_TRUE(IpTools::ConvertIpv4Address("192.168.0.-1") == 0); 37 EXPECT_TRUE(IpTools::ConvertIpv4Address("192.168.0.1") == 0xc0a80001); 38 } 39 40 HWTEST_F(WifiIpToolsTest, ConvertIpv6AddressTest, TestSize.Level1) 41 { 42 std::vector<unsigned char> tmp; 43 EXPECT_TRUE(IpTools::ConvertIpv6Address(tmp) == ""); 44 // 2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b 45 tmp.push_back(0x20); 46 tmp.push_back(0x01); 47 tmp.push_back(0x0d); 48 tmp.push_back(0xb8); 49 tmp.push_back(0x3c); 50 tmp.push_back(0x4d); 51 tmp.push_back(0x00); 52 tmp.push_back(0x15); 53 tmp.push_back(0x00); 54 tmp.push_back(0x00); 55 tmp.push_back(0x00); 56 tmp.push_back(0x00); 57 tmp.push_back(0x1a); 58 tmp.push_back(0x2f); 59 tmp.push_back(0x1a); 60 EXPECT_TRUE(IpTools::ConvertIpv6Address(tmp) == ""); 61 tmp.push_back(0x2b); 62 EXPECT_TRUE(IpTools::ConvertIpv6Address(tmp) == "2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b"); 63 64 std::vector<unsigned char> addr; 65 IpTools::ConvertIpv6Address("", addr); 66 EXPECT_TRUE(addr.size() == 0); 67 std::string ipv6Str = "2001:0db8:3c4d:15:0000:0000:1a2f:1a2b"; 68 IpTools::ConvertIpv6Address(ipv6Str, addr); 69 EXPECT_TRUE(addr.size() == 0); 70 ipv6Str = "2001:0db8:3c4d:0000:0000:1a2f:1a2b"; 71 IpTools::ConvertIpv6Address(ipv6Str, addr); 72 EXPECT_TRUE(addr.size() == 0); 73 ipv6Str = "2001:0db8:3c4d:0015:0000:0000:1a2f:1"; 74 IpTools::ConvertIpv6Address(ipv6Str, addr); 75 ipv6Str = "2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b"; 76 IpTools::ConvertIpv6Address(ipv6Str, addr); 77 EXPECT_TRUE(addr == tmp); 78 } 79 80 HWTEST_F(WifiIpToolsTest, ConvertIpv4MaskTest, TestSize.Level1) 81 { 82 EXPECT_TRUE(IpTools::ConvertIpv4Mask(-1) == "255.255.255.0"); 83 EXPECT_TRUE(IpTools::ConvertIpv4Mask(33) == "255.255.255.0"); 84 EXPECT_TRUE(IpTools::ConvertIpv4Mask(0) == "255.255.255.0"); 85 EXPECT_TRUE(IpTools::ConvertIpv4Mask(32) == "255.255.255.255"); 86 EXPECT_TRUE(IpTools::ConvertIpv4Mask(11) == "255.224.0.0"); 87 } 88 89 HWTEST_F(WifiIpToolsTest, ConvertIpv6MaskTest, TestSize.Level1) 90 { 91 EXPECT_TRUE(IpTools::ConvertIpv6Mask(-1) == ""); 92 EXPECT_TRUE(IpTools::ConvertIpv6Mask(129) == ""); 93 EXPECT_TRUE(IpTools::ConvertIpv6Mask(0) == "0"); 94 EXPECT_TRUE(IpTools::ConvertIpv6Mask(128) == "128"); 95 } 96 97 HWTEST_F(WifiIpToolsTest, GetMaskLengthTest, TestSize.Level1) 98 { 99 EXPECT_EQ(IpTools::GetMaskLength("255.0.0.0"), 8); 100 } 101 102 HWTEST_F(WifiIpToolsTest, GetIPV6MaskLengthTest, TestSize.Level1) 103 { 104 EXPECT_EQ(IpTools::GetIPV6MaskLength(""), 0); 105 EXPECT_EQ(IpTools::GetIPV6MaskLength("ff00:0000:0000:0000:0000:0000:0000:0000"), 8); 106 EXPECT_EQ(IpTools::GetIPV6MaskLength("fe00:0000:0000:0000:0000:0000:0000:0000"), 7); 107 EXPECT_EQ(IpTools::GetIPV6MaskLength("fc00:0000:0000:0000:0000:0000:0000:0000"), 6); 108 EXPECT_EQ(IpTools::GetIPV6MaskLength("f800:0000:0000:0000:0000:0000:0000:0000"), 5); 109 EXPECT_EQ(IpTools::GetIPV6MaskLength("f000:0000:0000:0000:0000:0000:0000:0000"), 4); 110 EXPECT_EQ(IpTools::GetIPV6MaskLength("e000:0000:0000:0000:0000:0000:0000:0000"), 3); 111 EXPECT_EQ(IpTools::GetIPV6MaskLength("c000:0000:0000:0000:0000:0000:0000:0000"), 2); 112 EXPECT_EQ(IpTools::GetIPV6MaskLength("8000:0000:0000:0000:0000:0000:0000:0000"), 1); 113 EXPECT_EQ(IpTools::GetIPV6MaskLength("0000:0000:0000:0000:0000:0000:0000:0000"), 0); 114 } 115 116 HWTEST_F(WifiIpToolsTest, GetExclusionObjectListTest, TestSize.Level1) 117 { 118 std::string str = "a,b,c"; 119 std::vector<std::string> vec; 120 IpTools::GetExclusionObjectList(str, vec); 121 EXPECT_TRUE(vec.size() == 3); 122 str = "abc"; 123 vec.clear(); 124 IpTools::GetExclusionObjectList(str, vec); 125 EXPECT_TRUE(vec.size() == 1); 126 } 127 } // namespace Wifi 128 } // namespace OHOS