PPysolate SpineREAD THE CODE · UNDERSTAND THE SYSTEM
课程与章节
源码索引 / CURRENT IMPLEMENTATION

learning/go-patterns/patterns/ownership/ownership_test.go

34 行 · 点击行号可定位;函数链接随声明位置更新,不手填行号。

跳到函数 / 声明
package ownership

import "testing"

func TestDrainTransfersItemsAndEmptiesQueue(t *testing.T) {
	var queue Queue
	queue.Push("first")
	queue.Push("second")

	items := queue.Drain()
	if got, want := len(items), 2; got != want {
		t.Fatalf("len(Drain()) = %d, want %d", got, want)
	}
	if got := queue.Len(); got != 0 {
		t.Fatalf("Len() after Drain() = %d, want 0", got)
	}

	items[0] = "changed"
	queue.Push("third")
	if got := queue.Drain(); len(got) != 1 || got[0] != "third" {
		t.Fatalf("queue after ownership transfer = %#v, want [third]", got)
	}
}

func TestZeroValueQueueIsReadyToUse(t *testing.T) {
	var queue Queue
	if got := queue.Len(); got != 0 {
		t.Fatalf("zero-value Len() = %d, want 0", got)
	}
	queue.Push("ready")
	if got := queue.Drain(); len(got) != 1 || got[0] != "ready" {
		t.Fatalf("zero-value queue contents = %#v, want [ready]", got)
	}
}