mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
strings, bytes: fix Reader.UnreadRune
UnreadRune should return an error if previous operation is not ReadRune. Fixes #7579. LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://golang.org/cl/77580046
This commit is contained in:
parent
8a908efd74
commit
a509026ff0
4 changed files with 64 additions and 4 deletions
|
|
@ -858,6 +858,33 @@ func TestReadRune(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
var UnreadRuneErrorTests = []struct {
|
||||
name string
|
||||
f func(*Reader)
|
||||
}{
|
||||
{"Read", func(r *Reader) { r.Read([]byte{}) }},
|
||||
{"ReadAt", func(r *Reader) { r.ReadAt([]byte{}, 0) }},
|
||||
{"ReadByte", func(r *Reader) { r.ReadByte() }},
|
||||
{"UnreadRune", func(r *Reader) { r.UnreadRune() }},
|
||||
{"Seek", func(r *Reader) { r.Seek(0, 1) }},
|
||||
{"WriteTo", func(r *Reader) { r.WriteTo(&bytes.Buffer{}) }},
|
||||
}
|
||||
|
||||
func TestUnreadRuneError(t *testing.T) {
|
||||
for _, tt := range UnreadRuneErrorTests {
|
||||
reader := NewReader("0123456789")
|
||||
if _, _, err := reader.ReadRune(); err != nil {
|
||||
// should not happen
|
||||
t.Fatal(err)
|
||||
}
|
||||
tt.f(reader)
|
||||
err := reader.UnreadRune()
|
||||
if err == nil {
|
||||
t.Errorf("Unreading after %s: expected error", tt.name)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var ReplaceTests = []struct {
|
||||
in string
|
||||
old, new string
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue