// Copyright (c) 2014, Suryandaru Triandana // All rights reserved. // // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. package leveldb import ( . "github.com/onsi/gomega" "github.com/syndtr/goleveldb/leveldb/iterator" "github.com/syndtr/goleveldb/leveldb/opt" "github.com/syndtr/goleveldb/leveldb/testutil" "github.com/syndtr/goleveldb/leveldb/util" ) type testingDB struct { *DB ro *opt.ReadOptions wo *opt.WriteOptions stor *testutil.Storage } func (t *testingDB) TestPut(key []byte, value []byte) error { return t.Put(key, value, t.wo) } func (t *testingDB) TestDelete(key []byte) error { return t.Delete(key, t.wo) } func (t *testingDB) TestGet(key []byte) (value []byte, err error) { return t.Get(key, t.ro) } func (t *testingDB) TestHas(key []byte) (ret bool, err error) { return t.Has(key, t.ro) } func (t *testingDB) TestNewIterator(slice *util.Range) iterator.Iterator { return t.NewIterator(slice, t.ro) } func (t *testingDB) TestClose() { err := t.Close() ExpectWithOffset(1, err).NotTo(HaveOccurred()) err = t.stor.Close() ExpectWithOffset(1, err).NotTo(HaveOccurred()) } func newTestingDB(o *opt.Options, ro *opt.ReadOptions, wo *opt.WriteOptions) *testingDB { stor := testutil.NewStorage() db, err := Open(stor, o) // FIXME: This may be called from outside It, which may cause panic. Expect(err).NotTo(HaveOccurred()) return &testingDB{ DB: db, ro: ro, wo: wo, stor: stor, } } type testingTransaction struct { *Transaction ro *opt.ReadOptions wo *opt.WriteOptions } func (t *testingTransaction) TestPut(key []byte, value []byte) error { return t.Put(key, value, t.wo) } func (t *testingTransaction) TestDelete(key []byte) error { return t.Delete(key, t.wo) } func (t *testingTransaction) TestGet(key []byte) (value []byte, err error) { return t.Get(key, t.ro) } func (t *testingTransaction) TestHas(key []byte) (ret bool, err error) { return t.Has(key, t.ro) } func (t *testingTransaction) TestNewIterator(slice *util.Range) iterator.Iterator { return t.NewIterator(slice, t.ro) } func (t *testingTransaction) TestClose() {}