package core import ( "crypto/rand" "testing" "github.com/stretchr/testify/require" ) type testBucket struct { Bucket items []BucketItem } func (s *testBucket) Iterate(f FilterHandler) error { for i := range s.items { if !f(s.items[i].Key, s.items[i].Val) { return ErrIteratingAborted } } return nil } func TestListBucketItems(t *testing.T) { _, err := ListBucketItems(nil, nil) require.EqualError(t, err, errEmptyBucket.Error()) b := new(testBucket) _, err = ListBucketItems(b, nil) require.EqualError(t, err, ErrNilFilterHandler.Error()) var ( count = 10 ln = 10 items = make([]BucketItem, 0, count) ) for i := 0; i < count; i++ { items = append(items, BucketItem{ Key: testData(t, ln), Val: testData(t, ln), }) } b.items = items res, err := ListBucketItems(b, func(key, val []byte) bool { return true }) require.NoError(t, err) require.Equal(t, items, res) res, err = ListBucketItems(b, func(key, val []byte) bool { return false }) require.NoError(t, err) require.Empty(t, res) } func testData(t *testing.T, sz int) []byte { d := make([]byte, sz) _, err := rand.Read(d) require.NoError(t, err) return d }