mirror of
https://github.com/rclone/rclone.git
synced 2024-11-30 04:15:26 +01:00
56 lines
1.0 KiB
Go
56 lines
1.0 KiB
Go
|
package restic
|
||
|
|
||
|
import (
|
||
|
"sort"
|
||
|
"strings"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/rclone/rclone/fstest/mockobject"
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
)
|
||
|
|
||
|
func (c *cache) String() string {
|
||
|
keys := []string{}
|
||
|
c.mu.Lock()
|
||
|
for k := range c.items {
|
||
|
keys = append(keys, k)
|
||
|
}
|
||
|
c.mu.Unlock()
|
||
|
sort.Strings(keys)
|
||
|
return strings.Join(keys, ",")
|
||
|
}
|
||
|
|
||
|
func TestCacheCRUD(t *testing.T) {
|
||
|
c := newCache()
|
||
|
assert.Equal(t, "", c.String())
|
||
|
assert.Nil(t, c.find("potato"))
|
||
|
o := mockobject.New("potato")
|
||
|
c.add(o.Remote(), o)
|
||
|
assert.Equal(t, "potato", c.String())
|
||
|
assert.Equal(t, o, c.find("potato"))
|
||
|
c.remove("potato")
|
||
|
assert.Equal(t, "", c.String())
|
||
|
assert.Nil(t, c.find("potato"))
|
||
|
c.remove("notfound")
|
||
|
}
|
||
|
|
||
|
func TestCacheRemovePrefix(t *testing.T) {
|
||
|
c := newCache()
|
||
|
for _, remote := range []string{
|
||
|
"a",
|
||
|
"b",
|
||
|
"b/1",
|
||
|
"b/2/3",
|
||
|
"b/2/4",
|
||
|
"b/2",
|
||
|
"c",
|
||
|
} {
|
||
|
c.add(remote, mockobject.New(remote))
|
||
|
}
|
||
|
assert.Equal(t, "a,b,b/1,b/2,b/2/3,b/2/4,c", c.String())
|
||
|
c.removePrefix("b")
|
||
|
assert.Equal(t, "a,b,c", c.String())
|
||
|
c.removePrefix("/")
|
||
|
assert.Equal(t, "", c.String())
|
||
|
}
|