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  }