42 lines
1,018 B
Go
42 lines
1,018 B
Go
|
package ipfunc
|
||
|
|
||
|
import (
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestNewIPSubnet(t *testing.T) {
|
||
|
ipnet, err := NewIPSubnet("10.0.0.0/24")
|
||
|
assert.Nil(t, err, "Should be able to create IPSubnet")
|
||
|
|
||
|
assert.Equal(t, 254, len(ipnet.freeIPs))
|
||
|
}
|
||
|
|
||
|
func TestRemoveIPFromSubnet(t *testing.T) {
|
||
|
ipnet, err := NewIPSubnet("10.0.0.0/24")
|
||
|
assert.Nil(t, err, "Should be able to create IPSubnet")
|
||
|
|
||
|
ipnet.Remove("10.0.0.43")
|
||
|
assert.Equal(t, 253, len(ipnet.freeIPs))
|
||
|
|
||
|
ipnet.Remove("10.0.0.47")
|
||
|
|
||
|
assert.Equal(t, 252, len(ipnet.freeIPs))
|
||
|
}
|
||
|
|
||
|
func TestGetNextFreeIP(t *testing.T) {
|
||
|
ipnet, err := NewIPSubnet("10.0.0.0/28")
|
||
|
assert.Nil(t, err, "Should be able to create IPSubnet")
|
||
|
|
||
|
ip, err := ipnet.GetNextFreeIP()
|
||
|
assert.Nil(t, err, "schould not return an error")
|
||
|
|
||
|
assert.Equalf(t, "10.0.0.1", ip, "should return next ip")
|
||
|
|
||
|
ip, err = ipnet.GetNextFreeIP()
|
||
|
assert.Nil(t, err, "schould not return an error")
|
||
|
|
||
|
assert.Equalf(t, "10.0.0.2", ip, "should return next ip")
|
||
|
|
||
|
assert.Equal(t, 12, len(ipnet.freeIPs))
|
||
|
}
|