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 }