github.com/GuanceCloud/cliutils@v1.1.21/pipeline/ptinput/ipdb/ipdb_test.go (about) 1 // Unless explicitly stated otherwise all files in this repository are licensed 2 // under the MIT License. 3 // This product includes software developed at Guance Cloud (https://www.guance.com/). 4 // Copyright 2021-present Guance, Inc. 5 6 package ipdb 7 8 import ( 9 "testing" 10 11 "github.com/stretchr/testify/assert" 12 ) 13 14 func TestParseIPCIDR(t *testing.T) { 15 cases := []struct { 16 title string 17 cidr string 18 expected string 19 isValidCidr bool 20 }{ 21 { 22 title: "correct cidr", 23 cidr: "1.0.0.0/24", 24 expected: "000000010000000000000000", 25 isValidCidr: true, 26 }, 27 { 28 title: "correct cidr", 29 cidr: "1.0.0.0/26", 30 expected: "00000001000000000000000000", 31 isValidCidr: true, 32 }, 33 { 34 title: "invalid ip length", 35 cidr: "1.0.0.0.0/24", 36 expected: "000000010000000000000000", 37 isValidCidr: false, 38 }, 39 { 40 title: "invalid cidr", 41 cidr: "256.0.0.0/24", 42 expected: "", 43 isValidCidr: false, 44 }, 45 { 46 title: "invalid ip", 47 cidr: "a.0.0.0/24", 48 expected: "", 49 isValidCidr: false, 50 }, 51 { 52 title: "invalid mask", 53 cidr: "1.0.0.0/b", 54 expected: "", 55 isValidCidr: false, 56 }, 57 } 58 59 for _, item := range cases { 60 ip, err := ParseIPCIDR(item.cidr) 61 if !item.isValidCidr { 62 assert.Error(t, err) 63 } else { 64 assert.Equal(t, ip, item.expected) 65 } 66 } 67 }