2017-05-15 21:51:50 +00:00
|
|
|
package odb
|
|
|
|
|
|
|
|
import (
|
|
|
|
"bytes"
|
|
|
|
"encoding/hex"
|
|
|
|
"io"
|
|
|
|
"io/ioutil"
|
2017-05-31 20:11:32 +00:00
|
|
|
"os"
|
2017-05-16 21:02:37 +00:00
|
|
|
"strings"
|
2017-05-15 21:51:50 +00:00
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestMemoryStorerIncludesGivenEntries(t *testing.T) {
|
|
|
|
sha := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
|
|
|
hex, err := hex.DecodeString(sha)
|
|
|
|
|
|
|
|
assert.Nil(t, err)
|
|
|
|
|
2017-05-16 21:29:03 +00:00
|
|
|
ms := newMemoryStorer(map[string]io.ReadWriter{
|
2017-05-15 21:51:50 +00:00
|
|
|
sha: bytes.NewBuffer([]byte{0x1}),
|
|
|
|
})
|
|
|
|
|
|
|
|
buf, err := ms.Open(hex)
|
|
|
|
assert.Nil(t, err)
|
|
|
|
|
|
|
|
contents, err := ioutil.ReadAll(buf)
|
|
|
|
assert.Nil(t, err)
|
|
|
|
assert.Equal(t, []byte{0x1}, contents)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestMemoryStorerAcceptsNilEntries(t *testing.T) {
|
2017-05-16 21:29:03 +00:00
|
|
|
ms := newMemoryStorer(nil)
|
2017-05-15 21:51:50 +00:00
|
|
|
|
|
|
|
assert.NotNil(t, ms)
|
|
|
|
assert.Equal(t, 0, len(ms.fs))
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestMemoryStorerDoesntOpenMissingEntries(t *testing.T) {
|
|
|
|
sha := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
|
|
|
|
|
|
|
hex, err := hex.DecodeString(sha)
|
|
|
|
assert.Nil(t, err)
|
|
|
|
|
2017-05-16 21:29:03 +00:00
|
|
|
ms := newMemoryStorer(nil)
|
2017-05-15 21:51:50 +00:00
|
|
|
|
2017-05-31 20:11:32 +00:00
|
|
|
f, err := ms.Open(hex)
|
|
|
|
assert.Equal(t, os.ErrNotExist, err)
|
|
|
|
assert.Nil(t, f)
|
2017-05-15 21:51:50 +00:00
|
|
|
}
|
|
|
|
|
2017-05-16 21:02:37 +00:00
|
|
|
func TestMemoryStorerStoresNewEntries(t *testing.T) {
|
2017-05-15 21:51:50 +00:00
|
|
|
hex, err := hex.DecodeString("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
|
|
|
|
assert.Nil(t, err)
|
|
|
|
|
2017-05-16 21:29:03 +00:00
|
|
|
ms := newMemoryStorer(nil)
|
2017-05-15 21:51:50 +00:00
|
|
|
|
|
|
|
assert.Equal(t, 0, len(ms.fs))
|
|
|
|
|
2017-05-16 21:02:37 +00:00
|
|
|
_, err = ms.Store(hex, strings.NewReader("hello"))
|
2017-05-15 21:51:50 +00:00
|
|
|
assert.Nil(t, err)
|
|
|
|
assert.Equal(t, 1, len(ms.fs))
|
2017-05-16 21:02:37 +00:00
|
|
|
|
|
|
|
got, err := ms.Open(hex)
|
|
|
|
assert.Nil(t, err)
|
|
|
|
|
|
|
|
contents, err := ioutil.ReadAll(got)
|
|
|
|
assert.Nil(t, err)
|
|
|
|
assert.Equal(t, "hello", string(contents))
|
2017-05-15 21:51:50 +00:00
|
|
|
}
|
|
|
|
|
2017-06-06 19:04:38 +00:00
|
|
|
func TestMemoryStorerStoresExistingEntries(t *testing.T) {
|
2017-05-15 21:51:50 +00:00
|
|
|
hex, err := hex.DecodeString("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
|
|
|
|
assert.Nil(t, err)
|
|
|
|
|
2017-05-16 21:29:03 +00:00
|
|
|
ms := newMemoryStorer(nil)
|
2017-05-15 21:51:50 +00:00
|
|
|
|
|
|
|
assert.Equal(t, 0, len(ms.fs))
|
|
|
|
|
2017-05-16 21:02:37 +00:00
|
|
|
_, err = ms.Store(hex, new(bytes.Buffer))
|
2017-05-15 21:51:50 +00:00
|
|
|
assert.Nil(t, err)
|
|
|
|
assert.Equal(t, 1, len(ms.fs))
|
|
|
|
|
2017-06-06 19:04:38 +00:00
|
|
|
n, err := ms.Store(hex, new(bytes.Buffer))
|
|
|
|
assert.Nil(t, err)
|
|
|
|
assert.EqualValues(t, 0, n)
|
2017-05-15 21:51:50 +00:00
|
|
|
}
|