shithub: furgit

ref: 0587025b7d48bae29b0843c2c4ab691b99f82752
dir: /buffers_test.go/

View raw version
package furgit

import "testing"

func TestBorrowBodyResizeAndAppend(t *testing.T) {
	b := borrowBody(1)
	defer b.Release()

	if cap(b.buf) < defaultBodyCap {
		t.Fatalf("expected capacity >= %d, got %d", defaultBodyCap, cap(b.buf))
	}

	b.Append([]byte("alpha"))
	b.Append([]byte("beta"))
	if got := string(b.Bytes()); got != "alphabeta" {
		t.Fatalf("unexpected contents: %q", got)
	}

	b.Resize(3)
	if got := string(b.Bytes()); got != "alp" {
		t.Fatalf("resize shrink mismatch: %q", got)
	}

	b.Resize(8)
	if len(b.Bytes()) != 8 {
		t.Fatalf("expected len 8 after grow, got %d", len(b.Bytes()))
	}
	if prefix := string(b.Bytes()[:3]); prefix != "alp" {
		t.Fatalf("prefix lost after grow: %q", prefix)
	}
}

func TestBorrowBodyRelease(t *testing.T) {
	b := borrowBody(defaultBodyCap / 2)
	b.Append([]byte("data"))
	b.Release()
	if b.buf != nil {
		t.Fatal("expected buffer cleared after release")
	}
}