package slog import ( "testing" "golang.org/x/exp/slices" ) func TestList(t *testing.T) { var l list[int] for i := 0; i < 10; i++ { l = l.append(i) } l = l.normalize() var got, want []int for i := 0; i < l.len(); i++ { want = append(want, i) got = append(got, l.at(i)) } if !slices.Equal(got, want) { t.Errorf("got %v, want %v", got, want) } } func TestListAlloc(t *testing.T) { for n := 1; n < 100; n++ { got := testing.AllocsPerRun(1, func() { var l list[int] for i := 0; i < n; i++ { l = l.append(i) } }) want := 1.5 * float64(n) if got > want { t.Fatalf("n=%d: got %f allocations, want <= %f", n, got, want) } } }