github.com/filecoin-project/specs-actors/v4@v4.0.2/actors/builtin/miner/bitfield_test.go (about) 1 package miner_test 2 3 import ( 4 "testing" 5 6 "github.com/filecoin-project/go-bitfield" 7 rlepluslazy "github.com/filecoin-project/go-bitfield/rle" 8 "github.com/stretchr/testify/assert" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func assertBitfieldsEqual(t *testing.T, expected bitfield.BitField, actual bitfield.BitField) { 13 const maxDiff = 100 14 15 missing, err := bitfield.SubtractBitField(expected, actual) 16 require.NoError(t, err) 17 unexpected, err := bitfield.SubtractBitField(actual, expected) 18 require.NoError(t, err) 19 20 missingSet, err := missing.All(maxDiff) 21 require.NoError(t, err, "more than %d missing bits expected", maxDiff) 22 assert.Empty(t, missingSet, "expected missing bits") 23 24 unexpectedSet, err := unexpected.All(maxDiff) 25 require.NoError(t, err, "more than %d unexpected bits", maxDiff) 26 assert.Empty(t, unexpectedSet, "unexpected bits set") 27 } 28 29 func assertBitfieldEquals(t *testing.T, actual bitfield.BitField, expected ...uint64) { 30 assertBitfieldsEqual(t, actual, bf(expected...)) 31 } 32 33 func assertBitfieldEmpty(t *testing.T, bf bitfield.BitField) { 34 empty, err := bf.IsEmpty() 35 require.NoError(t, err) 36 assert.True(t, empty) 37 } 38 39 // Create a bitfield with count bits set, starting at "start". 40 func seq(t *testing.T, start, count uint64) bitfield.BitField { 41 var runs []rlepluslazy.Run 42 if start > 0 { 43 runs = append(runs, rlepluslazy.Run{Val: false, Len: start}) 44 } 45 runs = append(runs, rlepluslazy.Run{Val: true, Len: count}) 46 bf, err := bitfield.NewFromIter(&rlepluslazy.RunSliceIterator{Runs: runs}) 47 require.NoError(t, err) 48 return bf 49 }