Skip to content

Commit 7e945cc

Browse files
author
Tom Godkin
committed
Remove hand written fake
1 parent e1b95d9 commit 7e945cc

File tree

2 files changed

+149
-36
lines changed

2 files changed

+149
-36
lines changed

internal/fakes/reader.go

Lines changed: 120 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

iter/lines_test.go

Lines changed: 29 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ import (
44
"bytes"
55
"errors"
66
"fmt"
7-
"io"
87
"os"
98
"testing"
109

1110
"github.com/BooleanCat/go-functional/internal/assert"
11+
"github.com/BooleanCat/go-functional/internal/fakes"
1212
"github.com/BooleanCat/go-functional/iter"
1313
"github.com/BooleanCat/go-functional/iter/ops"
1414
"github.com/BooleanCat/go-functional/result"
@@ -52,46 +52,29 @@ func TestLinesEmpty(t *testing.T) {
5252
assert.True(t, lines.Next().IsNone())
5353
}
5454

55-
type readResult struct {
56-
content []byte
57-
err error
58-
}
59-
60-
type fakeReader struct {
61-
results []readResult
62-
index int
63-
}
64-
65-
func newFakeReader(results ...readResult) *fakeReader {
66-
return &fakeReader{results, 0}
67-
}
68-
69-
func (r *fakeReader) Read(b []byte) (int, error) {
70-
r.index += 1
71-
if r.results[r.index-1].err != nil {
72-
return 0, r.results[r.index-1].err
73-
}
74-
n := copy(b, r.results[r.index-1].content)
75-
return n, nil
76-
}
77-
78-
var _ io.Reader = new(fakeReader)
79-
8055
func TestLinesFailure(t *testing.T) {
81-
reader := newFakeReader(readResult{make([]byte, 0), errors.New("oops")})
56+
reader := new(fakes.Reader)
57+
reader.ReadReturns(0, errors.New("oops"))
8258

8359
_, err := iter.Lines(reader).Next().Unwrap().Value()
8460
assert.NotNil(t, err)
8561
assert.Equal(t, err.Error(), "read line: oops")
8662
}
8763

8864
func TestLinesFailureLater(t *testing.T) {
89-
lines := iter.Lines(newFakeReader(
90-
readResult{[]byte("hello\n"), nil},
91-
readResult{make([]byte, 0), errors.New("oops")},
92-
))
65+
reader := new(fakes.Reader)
66+
reader.ReadStub = func(buffer []byte) (int, error) {
67+
copy(buffer, []byte("hello\n"))
68+
return 6, nil
69+
}
70+
71+
lines := iter.Lines(reader)
9372

9473
assert.SliceEqual(t, lines.Next().Unwrap().Unwrap(), []byte("hello"))
74+
75+
reader.ReadStub = nil
76+
reader.ReadReturns(0, errors.New("oops"))
77+
9578
assert.True(t, lines.Next().Unwrap().IsErr())
9679
}
9780

@@ -118,19 +101,29 @@ func TestLinesStringEmpty(t *testing.T) {
118101
}
119102

120103
func TestLinesStringFailure(t *testing.T) {
121-
lines := iter.LinesString(newFakeReader(readResult{make([]byte, 0), errors.New("oops")}))
104+
reader := new(fakes.Reader)
105+
reader.ReadReturns(0, errors.New("oops"))
106+
107+
lines := iter.LinesString(reader)
122108

123109
_, err := lines.Next().Unwrap().Value()
124110
assert.NotNil(t, err)
125111
assert.Equal(t, err.Error(), "read line: oops")
126112
}
127113

128114
func TestLinesStringFailureLater(t *testing.T) {
129-
lines := iter.LinesString(newFakeReader(
130-
readResult{[]byte("hello\n"), nil},
131-
readResult{make([]byte, 0), errors.New("oops")},
132-
))
115+
reader := new(fakes.Reader)
116+
reader.ReadStub = func(buffer []byte) (int, error) {
117+
copy(buffer, []byte("hello\n"))
118+
return 6, nil
119+
}
120+
121+
lines := iter.LinesString(reader)
133122

134123
assert.Equal(t, lines.Next().Unwrap().Unwrap(), "hello")
124+
125+
reader.ReadStub = nil
126+
reader.ReadReturns(0, errors.New("oops"))
127+
135128
assert.True(t, lines.Next().Unwrap().IsErr())
136129
}

0 commit comments

Comments
 (0)