package network import ( "sort" "testing" "github.com/stretchr/testify/require" ) func TestAddressGroup_FromStringSlice(t *testing.T) { addrs := []string{ "/dns4/node1.frostfs/tcp/8080", "/dns4/node2.frostfs/tcp/1234/tls", } expected := make(AddressGroup, len(addrs)) for i := range addrs { expected[i] = Address{buildMultiaddr(addrs[i], t)} } var ag AddressGroup t.Run("empty", func(t *testing.T) { require.Error(t, ag.FromStringSlice(nil)) }) require.NoError(t, ag.FromStringSlice(addrs)) require.Equal(t, expected, ag) t.Run("error is returned, group is unchanged", func(t *testing.T) { require.Error(t, ag.FromStringSlice([]string{"invalid"})) require.Equal(t, expected, ag) }) } func TestAddressGroup_FromIterator(t *testing.T) { addrs := testIterator{ "/dns4/node1.frostfs/tcp/8080", "/dns4/node2.frostfs/tcp/1234/tls", } expected := make(AddressGroup, len(addrs)) for i := range addrs { expected[i] = Address{buildMultiaddr(addrs[i], t)} } sort.Sort(expected) var ag AddressGroup t.Run("empty", func(t *testing.T) { require.Error(t, ag.FromIterator(testIterator{})) }) require.NoError(t, ag.FromIterator(addrs)) require.Equal(t, expected, ag) t.Run("error is returned, group is unchanged", func(t *testing.T) { require.Error(t, ag.FromIterator(testIterator{"invalid"})) require.Equal(t, expected, ag) }) } type testIterator []string func (t testIterator) IterateAddresses(f func(string) bool) { for i := range t { f(t[i]) } } func (t testIterator) NumberOfAddresses() int { return len(t) }