github.com/hyperledger/burrow@v0.34.5-0.20220512172541-77f09336001d/acm/validator/validators_test.go (about)

     1  package validator
     2  
     3  import (
     4  	"fmt"
     5  	"math/big"
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  func TestDiff(t *testing.T) {
    13  	before := makeSet(
    14  		1, 10,
    15  		2, 20,
    16  		3, 30,
    17  		4, 40,
    18  		5, 50,
    19  	)
    20  	after := makeSet(
    21  		2, 22,
    22  		3, 30,
    23  		4, 40,
    24  		5, 50,
    25  		6, 60,
    26  		7, 70,
    27  	)
    28  	expectedDiff := makeSet(
    29  		1, 0,
    30  		2, 22,
    31  		6, 60,
    32  		7, 70,
    33  	)
    34  	diff, err := Diff(before, after)
    35  	require.NoError(t, err)
    36  	assert.NoError(t, expectedDiff.Equal(diff))
    37  
    38  	// And in reverse
    39  	expectedDiff = makeSet(
    40  		1, 10,
    41  		2, 20,
    42  		6, 0,
    43  		7, 0,
    44  	)
    45  	diff, err = Diff(after, before)
    46  	require.NoError(t, err)
    47  
    48  	assert.NoError(t, expectedDiff.Equal(diff))
    49  	fmt.Println(diff)
    50  }
    51  
    52  func makeSet(keyvals ...int) *Set {
    53  	set := NewSet()
    54  	if len(keyvals)%2 != 0 {
    55  		panic(fmt.Errorf("cannot make set with odd number of keyvals: %d", len(keyvals)))
    56  	}
    57  	for i := 0; i < len(keyvals); i += 2 {
    58  		set.ChangePower(pubKey(keyvals[i]), big.NewInt(int64(keyvals[i+1])))
    59  	}
    60  	return set
    61  }