Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 5 additions & 8 deletions batch.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,21 +14,18 @@ var Abort = errors.New("done")
// All calls eachFn for all items
// Returns any error from eachFn except for Abort it returns nil.
func All(count, batchSize int, eachFn BatchFunc) error {
i := 0
for i < count {
end := i + batchSize - 1
if end > count-1 {
// passed end, so set to end item
end = count - 1
for i := 0; i < count; i += batchSize {
j := i + batchSize
if j > count {
j = count
}
err := eachFn(i, end)
err := eachFn(i, j)
if err == Abort {
return nil
}
if err != nil {
return err
}
i = end + 1
}
return nil
}
28 changes: 14 additions & 14 deletions batch_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import (
"errors"
"testing"

"github.com/pacedotdev/batch"
"github.com/matryer/is"
"github.com/pacedotdev/batch"
)

func Test(t *testing.T) {
Expand All @@ -26,25 +26,25 @@ func Test(t *testing.T) {

is.Equal(len(ranges), 10)
is.Equal(ranges[0].start, 0)
is.Equal(ranges[0].end, 9)
is.Equal(ranges[0].end, 10)
is.Equal(ranges[1].start, 10)
is.Equal(ranges[1].end, 19)
is.Equal(ranges[1].end, 20)
is.Equal(ranges[2].start, 20)
is.Equal(ranges[2].end, 29)
is.Equal(ranges[2].end, 30)
is.Equal(ranges[3].start, 30)
is.Equal(ranges[3].end, 39)
is.Equal(ranges[3].end, 40)
is.Equal(ranges[4].start, 40)
is.Equal(ranges[4].end, 49)
is.Equal(ranges[4].end, 50)
is.Equal(ranges[5].start, 50)
is.Equal(ranges[5].end, 59)
is.Equal(ranges[5].end, 60)
is.Equal(ranges[6].start, 60)
is.Equal(ranges[6].end, 69)
is.Equal(ranges[6].end, 70)
is.Equal(ranges[7].start, 70)
is.Equal(ranges[7].end, 79)
is.Equal(ranges[7].end, 80)
is.Equal(ranges[8].start, 80)
is.Equal(ranges[8].end, 89)
is.Equal(ranges[8].end, 90)
is.Equal(ranges[9].start, 90)
is.Equal(ranges[9].end, 99)
is.Equal(ranges[9].end, 100)
}

func TestHalfPages(t *testing.T) {
Expand All @@ -64,9 +64,9 @@ func TestHalfPages(t *testing.T) {
is.NoErr(err)
is.Equal(len(ranges), 2)
is.Equal(ranges[0].start, 0)
is.Equal(ranges[0].end, 9)
is.Equal(ranges[0].end, 10)
is.Equal(ranges[1].start, 10)
is.Equal(ranges[1].end, 14) // final index should be trimmed
is.Equal(ranges[1].end, 15) // final index should be trimmed

}

Expand All @@ -87,7 +87,7 @@ func TestTinyPages(t *testing.T) {
is.NoErr(err)
is.Equal(len(ranges), 1)
is.Equal(ranges[0].start, 0)
is.Equal(ranges[0].end, 0)
is.Equal(ranges[0].end, 1)
}

func TestAbort(t *testing.T) {
Expand Down