diff options
author | Joe Tsai <joetsai@digital-static.net> | 2024-04-23 15:42:22 -0700 |
---|---|---|
committer | Gopher Robot <gobot@golang.org> | 2024-04-24 13:36:51 +0000 |
commit | 62dfa43101ce0abe5c919b4c996a9ba157e6a5e0 (patch) | |
tree | 9ad8440c6ef1cf71007cc509145ef7034f9e7dff | |
parent | fc6a5ea88c913cbeb9af432c1ec16b4c72f4b4ba (diff) | |
download | go-62dfa43101ce0abe5c919b4c996a9ba157e6a5e0.tar.gz go-62dfa43101ce0abe5c919b4c996a9ba157e6a5e0.zip |
bytes: add test to ensure shallow copy of NewBuffer does not allocate
At present, there is no API to reset the underlying []byte
of an existing Buffer struct, except to shallow copy
the entire Buffer struct.
Updates #67004
Change-Id: I08998f7a95ae5bde0897d86247d47f23cd784583
Reviewed-on: https://go-review.googlesource.com/c/go/+/581297
Auto-Submit: Joseph Tsai <joetsai@digital-static.net>
Reviewed-by: Joedian Reid <joedian@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@google.com>
Run-TryBot: Joseph Tsai <joetsai@digital-static.net>
Reviewed-by: Keith Randall <khr@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
-rw-r--r-- | src/bytes/buffer_test.go | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/bytes/buffer_test.go b/src/bytes/buffer_test.go index 845e5e2209..322e7367c7 100644 --- a/src/bytes/buffer_test.go +++ b/src/bytes/buffer_test.go @@ -94,6 +94,21 @@ func TestNewBuffer(t *testing.T) { check(t, "NewBuffer", buf, testString) } +var buf Buffer + +// Calling NewBuffer and immediately shallow copying the Buffer struct +// should not result in any allocations. +// This can be used to reset the underlying []byte of an existing Buffer. +func TestNewBufferShallow(t *testing.T) { + n := testing.AllocsPerRun(1000, func() { + buf = *NewBuffer(testBytes) + }) + if n > 0 { + t.Errorf("allocations occurred while shallow copying") + } + check(t, "NewBuffer", &buf, testString) +} + func TestNewBufferString(t *testing.T) { buf := NewBufferString(testString) check(t, "NewBufferString", buf, testString) |