Files
2026-01-10 00:59:50 -08:00

82 lines
1.9 KiB
Go

// Copyright (C) 2019-2025, Lux Industries, Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package beacon
import (
"net/netip"
"testing"
"github.com/stretchr/testify/require"
"github.com/luxfi/ids"
)
func TestSet(t *testing.T) {
require := require.New(t)
id0 := ids.BuildTestNodeID([]byte{0})
id1 := ids.BuildTestNodeID([]byte{1})
id2 := ids.BuildTestNodeID([]byte{2})
ip0 := netip.AddrPortFrom(
netip.IPv4Unspecified(),
0,
)
ip1 := netip.AddrPortFrom(
netip.IPv4Unspecified(),
1,
)
ip2 := netip.AddrPortFrom(
netip.IPv4Unspecified(),
2,
)
b0 := New(id0, ip0)
b1 := New(id1, ip1)
b2 := New(id2, ip2)
s := NewSet()
require.Empty(s.IDsArg())
require.Empty(s.IPsArg())
require.Zero(s.Len())
require.NoError(s.Add(b0))
require.Equal("NodeID-111111111111111111116DBWJs", s.IDsArg())
require.Equal("0.0.0.0:0", s.IPsArg())
require.Equal(1, s.Len())
err := s.Add(b0)
require.ErrorIs(err, errDuplicateID)
require.Equal("NodeID-111111111111111111116DBWJs", s.IDsArg())
require.Equal("0.0.0.0:0", s.IPsArg())
require.Equal(1, s.Len())
require.NoError(s.Add(b1))
require.Equal("NodeID-111111111111111111116DBWJs,NodeID-6HgC8KRBEhXYbF4riJyJFLSHt37UNuRt", s.IDsArg())
require.Equal("0.0.0.0:0,0.0.0.0:1", s.IPsArg())
require.Equal(2, s.Len())
require.NoError(s.Add(b2))
require.Equal("NodeID-111111111111111111116DBWJs,NodeID-6HgC8KRBEhXYbF4riJyJFLSHt37UNuRt,NodeID-BaMPFdqMUQ46BV8iRcwbVfsam55kMqcp", s.IDsArg())
require.Equal("0.0.0.0:0,0.0.0.0:1,0.0.0.0:2", s.IPsArg())
require.Equal(3, s.Len())
require.NoError(s.RemoveByID(b0.ID()))
require.Equal("NodeID-BaMPFdqMUQ46BV8iRcwbVfsam55kMqcp,NodeID-6HgC8KRBEhXYbF4riJyJFLSHt37UNuRt", s.IDsArg())
require.Equal("0.0.0.0:2,0.0.0.0:1", s.IPsArg())
require.Equal(2, s.Len())
require.NoError(s.RemoveByIP(b1.IP()))
require.Equal("NodeID-BaMPFdqMUQ46BV8iRcwbVfsam55kMqcp", s.IDsArg())
require.Equal("0.0.0.0:2", s.IPsArg())
require.Equal(1, s.Len())
}