radiance/pkg/compactindex/query_test.go

59 lines
1.2 KiB
Go

package compactindex
import (
"bytes"
"errors"
"math/rand"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
type failReader struct{ err error }
func (rd failReader) ReadAt([]byte, int64) (int, error) {
return 0, rd.err
}
func TestOpen_ReadFail(t *testing.T) {
err := errors.New("oh no!")
db, dbErr := Open(failReader{err})
require.Nil(t, db)
require.Same(t, err, dbErr)
}
func TestOpen_InvalidMagic(t *testing.T) {
var buf [32]byte
rand.Read(buf[:])
buf[1] = '.' // make test deterministic
db, dbErr := Open(bytes.NewReader(buf[:]))
require.Nil(t, db)
require.EqualError(t, dbErr, "not a radiance compactindex file")
}
func TestOpen_HeaderOnly(t *testing.T) {
buf := [32]byte{
// Magic
'r', 'd', 'c', 'e', 'c', 'i', 'd', 'x',
// FileSize
0x37, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// NumBuckets
0x42, 0x00, 0x00, 0x00,
// Padding
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
}
db, dbErr := Open(bytes.NewReader(buf[:]))
require.NotNil(t, db)
require.NoError(t, dbErr)
assert.NotNil(t, db.Stream)
assert.Equal(t, Header{
FileSize: 0x1337,
NumBuckets: 0x42,
}, db.Header)
}