github.com/elastos/Elastos.ELA.SideChain.ETH@v0.2.2/chainbridge-core/chains/evm/aribiters/arbiterManager_test.go (about) 1 package aribiters 2 3 import ( 4 "github.com/elastos/Elastos.ELA/dpos/p2p/peer" 5 "github.com/stretchr/testify/assert" 6 "math/rand" 7 "testing" 8 ) 9 10 func TestArbiterManager_RemoveArbiter(t *testing.T) { 11 manager := CreateArbiterManager() 12 count := 10 13 for i := 0; i < count; i++ { 14 arbiter := [33]byte{} 15 _, err := rand.Read(arbiter[:]) 16 if err != nil { 17 continue 18 } 19 manager.AddArbiter(arbiter, arbiter[:]) 20 } 21 list := manager.GetArbiterList() 22 23 list1 := manager.GetArbiterList() 24 assert.Equal(t, len(list1), count) 25 manager.RemoveArbiter(list1[count-1]) 26 27 data := manager.FilterArbiters(list) 28 assert.Equal(t, len(data), 1) 29 30 for i := 0; i < count; i++ { 31 manager.RemoveArbiter(list1[count-i-1]) 32 } 33 34 list2 := manager.GetArbiterList() 35 assert.Equal(t, len(list2), 0) 36 37 data = manager.FilterArbiters(list) 38 assert.Equal(t, len(data), count) 39 } 40 41 func TestArbiterManager_FilterSignatures(t *testing.T) { 42 manager := CreateArbiterManager() 43 count := 3 44 signatures := make([]peer.PID, 0) 45 for i := 0; i < count; i++ { 46 sig := [33]byte{} 47 _, err := rand.Read(sig[:]) 48 if err != nil { 49 continue 50 } 51 manager.AddSignature(sig, sig[:]) 52 var pid peer.PID 53 copy(pid[:], sig[:]) 54 signatures = append(signatures, pid) 55 } 56 list1 := manager.GetSignatures() 57 assert.Equal(t, len(list1), count) 58 59 list := make([][]byte, 0) 60 for _, sig := range list1 { 61 list = append(list, sig) 62 } 63 64 data := manager.FilterSignatures(list) 65 assert.Equal(t, len(data), 0) 66 67 delete(manager.signatures, signatures[0]) 68 data = manager.FilterSignatures(list) 69 assert.Equal(t, len(data), 1) 70 71 delete(manager.signatures, signatures[1]) 72 data = manager.FilterSignatures(list) 73 assert.Equal(t, len(data), 2) 74 75 delete(manager.signatures, signatures[2]) 76 data = manager.FilterSignatures(list) 77 assert.Equal(t, len(data), 3) 78 79 }