diff options
| author | Ondřej Surý <ondrej@sury.org> | 2011-06-30 15:34:22 +0200 | 
|---|---|---|
| committer | Ondřej Surý <ondrej@sury.org> | 2011-06-30 15:34:22 +0200 | 
| commit | d39f5aa373a4422f7a5f3ee764fb0f6b0b719d61 (patch) | |
| tree | 1833f8b72a4b3a8f00d0d143b079a8fcad01c6ae /src/pkg/strings/strings_test.go | |
| parent | 8652e6c371b8905498d3d314491d36c58d5f68d5 (diff) | |
| download | golang-d39f5aa373a4422f7a5f3ee764fb0f6b0b719d61.tar.gz | |
Imported Upstream version 58upstream/58
Diffstat (limited to 'src/pkg/strings/strings_test.go')
| -rw-r--r-- | src/pkg/strings/strings_test.go | 65 | 
1 files changed, 64 insertions, 1 deletions
| diff --git a/src/pkg/strings/strings_test.go b/src/pkg/strings/strings_test.go index c45b1485d..a1a635ddd 100644 --- a/src/pkg/strings/strings_test.go +++ b/src/pkg/strings/strings_test.go @@ -5,6 +5,7 @@  package strings_test  import ( +	"bytes"  	"os"  	"reflect"  	"strconv" @@ -751,13 +752,56 @@ func TestRunes(t *testing.T) {  	}  } +func TestReadByte(t *testing.T) { +	testStrings := []string{"", abcd, faces, commas} +	for _, s := range testStrings { +		reader := NewReader(s) +		if e := reader.UnreadByte(); e == nil { +			t.Errorf("Unreading %q at beginning: expected error", s) +		} +		var res bytes.Buffer +		for { +			b, e := reader.ReadByte() +			if e == os.EOF { +				break +			} +			if e != nil { +				t.Errorf("Reading %q: %s", s, e) +				break +			} +			res.WriteByte(b) +			// unread and read again +			e = reader.UnreadByte() +			if e != nil { +				t.Errorf("Unreading %q: %s", s, e) +				break +			} +			b1, e := reader.ReadByte() +			if e != nil { +				t.Errorf("Reading %q after unreading: %s", s, e) +				break +			} +			if b1 != b { +				t.Errorf("Reading %q after unreading: want byte %q, got %q", s, b, b1) +				break +			} +		} +		if res.String() != s { +			t.Errorf("Reader(%q).ReadByte() produced %q", s, res.String()) +		} +	} +} +  func TestReadRune(t *testing.T) {  	testStrings := []string{"", abcd, faces, commas}  	for _, s := range testStrings {  		reader := NewReader(s) +		if e := reader.UnreadRune(); e == nil { +			t.Errorf("Unreading %q at beginning: expected error", s) +		}  		res := ""  		for { -			r, _, e := reader.ReadRune() +			r, z, e := reader.ReadRune()  			if e == os.EOF {  				break  			} @@ -766,6 +810,25 @@ func TestReadRune(t *testing.T) {  				break  			}  			res += string(r) +			// unread and read again +			e = reader.UnreadRune() +			if e != nil { +				t.Errorf("Unreading %q: %s", s, e) +				break +			} +			r1, z1, e := reader.ReadRune() +			if e != nil { +				t.Errorf("Reading %q after unreading: %s", s, e) +				break +			} +			if r1 != r { +				t.Errorf("Reading %q after unreading: want rune %q, got %q", s, r, r1) +				break +			} +			if z1 != z { +				t.Errorf("Reading %q after unreading: want size %d, got %d", s, z, z1) +				break +			}  		}  		if res != s {  			t.Errorf("Reader(%q).ReadRune() produced %q", s, res) | 
