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  }