go.charczuk.com@v0.0.0-20240327042549-bc490516bd1a/sdk/netutil/cidr_test.go (about)

     1  /*
     2  
     3  Copyright (c) 2023 - Present. Will Charczuk. All rights reserved.
     4  Use of this source code is governed by a MIT license that can be found in the LICENSE file at the root of the repository.
     5  
     6  */
     7  
     8  package netutil
     9  
    10  import (
    11  	"testing"
    12  
    13  	"go.charczuk.com/sdk/assert"
    14  )
    15  
    16  func Test_IPNet_Next(t *testing.T) {
    17  	_, current, err := ParseCIDR("192.168.0.0/24")
    18  	assert.ItsNil(t, err)
    19  	assert.ItsEqual(t, "192.168.0.0/24", current.String())
    20  
    21  	next, ok := current.Next()
    22  	assert.ItsTrue(t, ok)
    23  	assert.ItsEqual(t, "192.168.1.0/24", next.String())
    24  }
    25  
    26  func Test_IPNet_Next_invalid(t *testing.T) {
    27  	_, current, err := ParseCIDR("255.255.255.0/24")
    28  	assert.ItsNil(t, err)
    29  	assert.ItsEqual(t, "255.255.255.0/24", current.String())
    30  
    31  	next, ok := current.Next()
    32  	assert.ItsFalse(t, ok)
    33  	assert.ItsNil(t, next)
    34  }
    35  
    36  func Test_IPNet_Range(t *testing.T) {
    37  	_, current, err := ParseCIDR("192.168.0.127/24")
    38  	assert.ItsNil(t, err)
    39  
    40  	first, last := current.Range()
    41  	assert.ItsEqual(t, "192.168.0.0", first.String())
    42  	assert.ItsEqual(t, "192.168.0.255", last.String())
    43  }