aboutsummaryrefslogtreecommitdiff
path: root/src/bufio
diff options
context:
space:
mode:
authorBrad Fitzpatrick <bradfitz@golang.org>2017-11-01 19:00:05 +0000
committerBrad Fitzpatrick <bradfitz@golang.org>2017-11-02 17:17:44 +0000
commit6128ff84f1106af4944f50f74070566e87f2cb35 (patch)
tree19f4190f9b21681e268988d41a475a9eef01904b /src/bufio
parent2da1446bb11cdfaac1f86d7c2134c36487dd2d66 (diff)
downloadgo-6128ff84f1106af4944f50f74070566e87f2cb35.tar.gz
go-6128ff84f1106af4944f50f74070566e87f2cb35.zip
bufio: add Reader.Size and Writer.Size accessors
Fixes #21343 Change-Id: I3582fced902592fe12bfa29acf7b40b6e5e554a7 Reviewed-on: https://go-review.googlesource.com/75150 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Robert Griesemer <gri@golang.org>
Diffstat (limited to 'src/bufio')
-rw-r--r--src/bufio/bufio.go6
-rw-r--r--src/bufio/bufio_test.go18
-rw-r--r--src/bufio/export_test.go2
3 files changed, 26 insertions, 0 deletions
diff --git a/src/bufio/bufio.go b/src/bufio/bufio.go
index da94a2503f..ad9c9f5ddf 100644
--- a/src/bufio/bufio.go
+++ b/src/bufio/bufio.go
@@ -62,6 +62,9 @@ func NewReader(rd io.Reader) *Reader {
return NewReaderSize(rd, defaultBufSize)
}
+// Size returns the size of the underlying buffer in bytes.
+func (r *Reader) Size() int { return len(r.buf) }
+
// Reset discards any buffered data, resets all state, and switches
// the buffered reader to read from r.
func (b *Reader) Reset(r io.Reader) {
@@ -548,6 +551,9 @@ func NewWriter(w io.Writer) *Writer {
return NewWriterSize(w, defaultBufSize)
}
+// Size returns the size of the underlying buffer in bytes.
+func (b *Writer) Size() int { return len(b.buf) }
+
// Reset discards any unflushed buffered data, clears any error, and
// resets b to write its output to w.
func (b *Writer) Reset(w io.Writer) {
diff --git a/src/bufio/bufio_test.go b/src/bufio/bufio_test.go
index ef0f6c834e..c829d2b064 100644
--- a/src/bufio/bufio_test.go
+++ b/src/bufio/bufio_test.go
@@ -1418,6 +1418,24 @@ func TestReaderDiscard(t *testing.T) {
}
+func TestReaderSize(t *testing.T) {
+ if got, want := NewReader(nil).Size(), DefaultBufSize; got != want {
+ t.Errorf("NewReader's Reader.Size = %d; want %d", got, want)
+ }
+ if got, want := NewReaderSize(nil, 1234).Size(), 1234; got != want {
+ t.Errorf("NewReaderSize's Reader.Size = %d; want %d", got, want)
+ }
+}
+
+func TestWriterSize(t *testing.T) {
+ if got, want := NewWriter(nil).Size(), DefaultBufSize; got != want {
+ t.Errorf("NewWriter's Writer.Size = %d; want %d", got, want)
+ }
+ if got, want := NewWriterSize(nil, 1234).Size(), 1234; got != want {
+ t.Errorf("NewWriterSize's Writer.Size = %d; want %d", got, want)
+ }
+}
+
// An onlyReader only implements io.Reader, no matter what other methods the underlying implementation may have.
type onlyReader struct {
io.Reader
diff --git a/src/bufio/export_test.go b/src/bufio/export_test.go
index 3d3bb27d8d..1667f01a84 100644
--- a/src/bufio/export_test.go
+++ b/src/bufio/export_test.go
@@ -11,6 +11,8 @@ import (
var IsSpace = isSpace
+const DefaultBufSize = defaultBufSize
+
func (s *Scanner) MaxTokenSize(n int) {
if n < utf8.UTFMax || n > 1e9 {
panic("bad max token size")