mirror of
https://github.com/golang/go
synced 2024-11-21 17:14:45 -07:00
add additional test case
Change-Id: I56767015384d06cae6f0c4cea62a9f286bfe4743
This commit is contained in:
parent
338a31d721
commit
1a6ff2fcc6
@ -614,7 +614,7 @@ func TestDecoderMoreWithToken(t *testing.T) {
|
||||
dec := NewDecoder(&decoderMoreWithTokenFailingReader{t: t, err: notIgnoredError})
|
||||
|
||||
if val, err := dec.Token(); err != nil || val != Delim('{') {
|
||||
t.Fatalf("(*Decoder).Token() = (%v, %v); want = ([, <nil>)", val, err)
|
||||
t.Fatalf("(*Decoder).Token() = (%v, %v); want = ({, <nil>)", val, err)
|
||||
}
|
||||
|
||||
if !dec.More() {
|
||||
@ -633,3 +633,63 @@ func TestDecoderMoreWithToken(t *testing.T) {
|
||||
t.Fatalf("(*Decoder).Token() = (%v, %v); want = (<nil>, %v)", val, err, io.EOF)
|
||||
}
|
||||
}
|
||||
|
||||
type moreWithErrorsTestReader struct {
|
||||
t *testing.T
|
||||
i int
|
||||
err error
|
||||
}
|
||||
|
||||
func (c *moreWithErrorsTestReader) Read(b []byte) (n int, err error) {
|
||||
i := c.i
|
||||
c.i++
|
||||
|
||||
defer func() {
|
||||
// Decoder always passes a buffer with size that has at least 512 Bytes. This test
|
||||
// depends on that behaviour, so that the reader does not get unnecessarily complicated.
|
||||
if len(b) == n {
|
||||
c.t.Fatal("small buffer passed to Read")
|
||||
}
|
||||
}()
|
||||
|
||||
switch i {
|
||||
case 0:
|
||||
return copy(b, `[{ "test": 1 }`), nil
|
||||
case 1:
|
||||
return 0, c.err
|
||||
case 2:
|
||||
return copy(b, `, {"test": 2}]`), nil
|
||||
default:
|
||||
return 0, io.EOF
|
||||
}
|
||||
}
|
||||
|
||||
func TestMoreWithErrors(t *testing.T) {
|
||||
notIgnoredError := errors.New("not ignored error")
|
||||
dec := NewDecoder(&moreWithErrorsTestReader{t: t, err: notIgnoredError})
|
||||
|
||||
if val, err := dec.Token(); err != nil || val != Delim('[') {
|
||||
t.Fatalf("(*Decoder).Token() = (%v, %v); want = ([, <nil>)", val, err)
|
||||
}
|
||||
|
||||
second := false
|
||||
for dec.More() {
|
||||
var msg struct{ Test int }
|
||||
err := dec.Decode(&msg)
|
||||
var expectErr error = nil
|
||||
if second {
|
||||
expectErr = notIgnoredError
|
||||
}
|
||||
if err != expectErr {
|
||||
t.Fatalf("(*Decoder).Decode() = %v; want = %v", err, expectErr)
|
||||
}
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
second = true
|
||||
}
|
||||
|
||||
if val, err := dec.Token(); err != nil || val != Delim(']') {
|
||||
t.Fatalf("(*Decoder).Token() = (%v, %v); want = (], <nil>)", val, err)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user