mirror of
https://github.com/golang/go
synced 2024-11-18 23:44:43 -07:00
55 lines
1.2 KiB
Go
55 lines
1.2 KiB
Go
|
// Copyright 2020 The Go Authors. All rights reserved.
|
||
|
// Use of this source code is governed by a BSD-style
|
||
|
// license that can be found in the LICENSE file.
|
||
|
|
||
|
package debug
|
||
|
|
||
|
import "testing"
|
||
|
|
||
|
type fakeCache struct {
|
||
|
Cache
|
||
|
|
||
|
id string
|
||
|
}
|
||
|
|
||
|
func (c fakeCache) ID() string {
|
||
|
return c.id
|
||
|
}
|
||
|
|
||
|
func TestState(t *testing.T) {
|
||
|
c1 := fakeCache{id: "1"}
|
||
|
c2 := fakeCache{id: "2"}
|
||
|
c3 := fakeCache{id: "3"}
|
||
|
|
||
|
var s State
|
||
|
s.AddCache(c1)
|
||
|
s.AddCache(c2)
|
||
|
s.AddCache(c3)
|
||
|
|
||
|
compareCaches := func(desc string, want []fakeCache) {
|
||
|
t.Run(desc, func(t *testing.T) {
|
||
|
caches := s.Caches()
|
||
|
if gotLen, wantLen := len(caches), len(want); gotLen != wantLen {
|
||
|
t.Fatalf("len(Caches) = %d, want %d", gotLen, wantLen)
|
||
|
}
|
||
|
for i, got := range caches {
|
||
|
if got != want[i] {
|
||
|
t.Errorf("Caches[%d] = %v, want %v", i, got, want[i])
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
compareCaches("initial load", []fakeCache{c1, c2, c3})
|
||
|
s.DropCache(c2)
|
||
|
compareCaches("dropped cache 2", []fakeCache{c1, c3})
|
||
|
s.DropCache(c2)
|
||
|
compareCaches("duplicate drop", []fakeCache{c1, c3})
|
||
|
s.AddCache(c2)
|
||
|
compareCaches("re-add cache 2", []fakeCache{c1, c3, c2})
|
||
|
s.DropCache(c1)
|
||
|
s.DropCache(c2)
|
||
|
s.DropCache(c3)
|
||
|
compareCaches("drop all", []fakeCache{})
|
||
|
}
|