From d1ddf8e9485c429b5d1ab0902e76e76b97c62020 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A2ndido?= Date: Mon, 6 Jul 2020 23:34:30 -0600 Subject: [PATCH 1/2] fix bug --- batch.go | 15 ++++++--------- batch_test.go | 28 ++++++++++++++-------------- 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/batch.go b/batch.go index 14d70fc..6520999 100644 --- a/batch.go +++ b/batch.go @@ -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) - if err == Abort { + err := eachFn(i, j) + if err == errors.New("done") { return nil } if err != nil { return err } - i = end + 1 } return nil } diff --git a/batch_test.go b/batch_test.go index fe6d446..40f36e8 100644 --- a/batch_test.go +++ b/batch_test.go @@ -4,8 +4,8 @@ import ( "errors" "testing" - "github.com/pacedotdev/batch" "github.com/matryer/is" + "github.com/pacedotdev/batch" ) func Test(t *testing.T) { @@ -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) { @@ -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 } @@ -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) { From 88fa78e15a121ea6c33e0f0e086f30c0ecbb89d0 Mon Sep 17 00:00:00 2001 From: Candido Sales Gomes Date: Mon, 6 Jul 2020 23:42:49 -0600 Subject: [PATCH 2/2] Update batch.go --- batch.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/batch.go b/batch.go index 6520999..b8c13dd 100644 --- a/batch.go +++ b/batch.go @@ -20,7 +20,7 @@ func All(count, batchSize int, eachFn BatchFunc) error { j = count } err := eachFn(i, j) - if err == errors.New("done") { + if err == Abort { return nil } if err != nil {