github.com/AbhinandanKurakure/podman/v3@v3.4.10/libpod/network/subnet_test.go (about)

     1  package network
     2  
     3  import (
     4  	"net"
     5  	"reflect"
     6  	"testing"
     7  )
     8  
     9  func TestNextSubnet(t *testing.T) {
    10  	type args struct {
    11  		subnet *net.IPNet
    12  	}
    13  	tests := []struct {
    14  		name    string
    15  		args    args
    16  		want    *net.IPNet
    17  		wantErr bool
    18  	}{
    19  		{"class b", args{subnet: parseCIDR("192.168.0.0/16")}, parseCIDR("192.169.0.0/16"), false},
    20  		{"class c", args{subnet: parseCIDR("192.168.1.0/24")}, parseCIDR("192.168.2.0/24"), false},
    21  	}
    22  	for _, tt := range tests {
    23  		test := tt
    24  		t.Run(test.name, func(t *testing.T) {
    25  			got, err := NextSubnet(test.args.subnet)
    26  			if (err != nil) != test.wantErr {
    27  				t.Errorf("NextSubnet() error = %v, wantErr %v", err, test.wantErr)
    28  				return
    29  			}
    30  			if !reflect.DeepEqual(got, test.want) {
    31  				t.Errorf("NextSubnet() got = %v, want %v", got, test.want)
    32  			}
    33  		})
    34  	}
    35  }
    36  
    37  func TestFirstIPInSubnet(t *testing.T) {
    38  	tests := []struct {
    39  		name    string
    40  		args    *net.IPNet
    41  		want    net.IP
    42  		wantErr bool
    43  	}{
    44  		{"class b", parseCIDR("192.168.0.0/16"), net.ParseIP("192.168.0.1"), false},
    45  		{"class c", parseCIDR("192.168.1.0/24"), net.ParseIP("192.168.1.1"), false},
    46  		{"cidr /23", parseCIDR("192.168.0.0/23"), net.ParseIP("192.168.0.1"), false},
    47  		{"cidr /25", parseCIDR("192.168.1.0/25"), net.ParseIP("192.168.1.1"), false},
    48  		{"cidr /26", parseCIDR("172.16.1.128/26"), net.ParseIP("172.16.1.129"), false},
    49  		{"class a", parseCIDR("10.0.0.0/8"), net.ParseIP("10.0.0.1"), false},
    50  		{"cidr /32", parseCIDR("192.168.255.4/32"), net.ParseIP("192.168.255.4"), false},
    51  		{"cidr /31", parseCIDR("192.168.255.4/31"), net.ParseIP("192.168.255.5"), false},
    52  	}
    53  	for _, tt := range tests {
    54  		test := tt
    55  		t.Run(test.name, func(t *testing.T) {
    56  			got, err := FirstIPInSubnet(test.args)
    57  			if (err != nil) != test.wantErr {
    58  				t.Errorf("FirstIPInSubnet() error = %v, wantErr %v", err, test.wantErr)
    59  				return
    60  			}
    61  			if !got.Equal(test.want) {
    62  				t.Errorf("FirstIPInSubnet() got = %v, want %v", got, test.want)
    63  			}
    64  		})
    65  	}
    66  }
    67  
    68  func TestLastIPInSubnet(t *testing.T) {
    69  	tests := []struct {
    70  		name    string
    71  		args    *net.IPNet
    72  		want    net.IP
    73  		wantErr bool
    74  	}{
    75  		{"class b", parseCIDR("192.168.0.0/16"), net.ParseIP("192.168.255.255"), false},
    76  		{"class c", parseCIDR("192.168.1.0/24"), net.ParseIP("192.168.1.255"), false},
    77  		{"cidr /23", parseCIDR("192.168.0.0/23"), net.ParseIP("192.168.1.255"), false},
    78  		{"cidr /25", parseCIDR("192.168.1.0/25"), net.ParseIP("192.168.1.127"), false},
    79  		{"cidr /26", parseCIDR("172.16.1.128/26"), net.ParseIP("172.16.1.191"), false},
    80  		{"class a", parseCIDR("10.0.0.0/8"), net.ParseIP("10.255.255.255"), false},
    81  		{"cidr /32", parseCIDR("192.168.255.4/32"), net.ParseIP("192.168.255.4"), false},
    82  		{"cidr /31", parseCIDR("192.168.255.4/31"), net.ParseIP("192.168.255.5"), false},
    83  	}
    84  	for _, tt := range tests {
    85  		test := tt
    86  		t.Run(test.name, func(t *testing.T) {
    87  			got, err := LastIPInSubnet(test.args)
    88  			if (err != nil) != test.wantErr {
    89  				t.Errorf("LastIPInSubnet() error = %v, wantErr %v", err, test.wantErr)
    90  				return
    91  			}
    92  			if !got.Equal(test.want) {
    93  				t.Errorf("LastIPInSubnet() got = %v, want %v", got, test.want)
    94  			}
    95  		})
    96  	}
    97  }