github.com/MetalBlockchain/metalgo@v1.11.9/pubsub/filter_test.go (about) 1 // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved. 2 // See the file LICENSE for licensing terms. 3 4 package pubsub 5 6 import ( 7 "testing" 8 9 "github.com/stretchr/testify/require" 10 11 "github.com/MetalBlockchain/metalgo/api" 12 "github.com/MetalBlockchain/metalgo/ids" 13 "github.com/MetalBlockchain/metalgo/pubsub/bloom" 14 "github.com/MetalBlockchain/metalgo/utils/constants" 15 "github.com/MetalBlockchain/metalgo/utils/formatting/address" 16 ) 17 18 func TestAddAddressesParseAddresses(t *testing.T) { 19 require := require.New(t) 20 21 chainAlias := "X" 22 hrp := constants.GetHRP(5) 23 24 addrID := ids.ShortID{1} 25 addrStr, err := address.Format(chainAlias, hrp, addrID[:]) 26 require.NoError(err) 27 28 msg := &AddAddresses{JSONAddresses: api.JSONAddresses{ 29 Addresses: []string{ 30 addrStr, 31 }, 32 }} 33 34 require.NoError(msg.parseAddresses()) 35 36 require.Len(msg.addressIds, 1) 37 require.Equal(addrID[:], msg.addressIds[0]) 38 } 39 40 func TestFilterParamUpdateMulti(t *testing.T) { 41 require := require.New(t) 42 43 fp := NewFilterParam() 44 45 addr1 := []byte("abc") 46 addr2 := []byte("def") 47 addr3 := []byte("xyz") 48 49 require.NoError(fp.Add(addr1, addr2, addr3)) 50 require.Len(fp.set, 3) 51 require.Contains(fp.set, string(addr1)) 52 require.Contains(fp.set, string(addr2)) 53 require.Contains(fp.set, string(addr3)) 54 } 55 56 func TestFilterParam(t *testing.T) { 57 require := require.New(t) 58 59 mapFilter := bloom.NewMap() 60 61 fp := NewFilterParam() 62 fp.SetFilter(mapFilter) 63 64 addr := ids.GenerateTestShortID() 65 require.NoError(fp.Add(addr[:])) 66 require.True(fp.Check(addr[:])) 67 delete(fp.set, string(addr[:])) 68 69 mapFilter.Add(addr[:]) 70 require.True(fp.Check(addr[:])) 71 require.False(fp.Check([]byte("bye"))) 72 } 73 74 func TestNewBloom(t *testing.T) { 75 cm := &NewBloom{} 76 require.False(t, cm.IsParamsValid()) 77 }