lib/cache: add Delete and DeletePrefix methods #4811

This commit is contained in:
Nick Craig-Wood 2020-11-30 11:46:06 +00:00
parent 657be2ace5
commit f4750928ee
2 changed files with 76 additions and 0 deletions

View file

@ -28,6 +28,8 @@ func setup(t *testing.T) (*Cache, CreateFunc) {
return "/file.txt", true, errCached
case "/error":
return nil, false, errSentinel
case "/err":
return nil, false, errSentinel
}
panic(fmt.Sprintf("Unknown path %q", path))
}
@ -225,6 +227,53 @@ func TestGetMaybe(t *testing.T) {
assert.Nil(t, value)
}
func TestDelete(t *testing.T) {
c, create := setup(t)
assert.Equal(t, 0, len(c.cache))
_, err := c.Get("/", create)
require.NoError(t, err)
assert.Equal(t, 1, len(c.cache))
assert.Equal(t, false, c.Delete("notfound"))
assert.Equal(t, 1, len(c.cache))
assert.Equal(t, true, c.Delete("/"))
assert.Equal(t, 0, len(c.cache))
assert.Equal(t, false, c.Delete("/"))
assert.Equal(t, 0, len(c.cache))
}
func TestDeletePrefix(t *testing.T) {
create := func(path string) (interface{}, bool, error) {
return path, true, nil
}
c := New()
_, err := c.Get("remote:path", create)
require.NoError(t, err)
_, err = c.Get("remote:path2", create)
require.NoError(t, err)
_, err = c.Get("remote:", create)
require.NoError(t, err)
_, err = c.Get("remote", create)
require.NoError(t, err)
assert.Equal(t, 4, len(c.cache))
assert.Equal(t, 3, c.DeletePrefix("remote:"))
assert.Equal(t, 1, len(c.cache))
assert.Equal(t, 1, c.DeletePrefix(""))
assert.Equal(t, 0, len(c.cache))
assert.Equal(t, 0, c.DeletePrefix(""))
assert.Equal(t, 0, len(c.cache))
}
func TestCacheRename(t *testing.T) {
c := New()
create := func(path string) (interface{}, bool, error) {