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 }