From ca56a274bda79ca6367eac339e837c8042385c1e Mon Sep 17 00:00:00 2001 From: Jae Kwon Date: Tue, 19 Dec 2017 20:33:34 -0800 Subject: [PATCH] Nil bytes are OK for Get/Set etc And s/Release/Close/g --- db/backend_test.go | 15 ++++++++------- db/c_level_db.go | 18 +++++++++--------- db/mem_db.go | 4 ++-- 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/db/backend_test.go b/db/backend_test.go index e103843d..0f4346f2 100644 --- a/db/backend_test.go +++ b/db/backend_test.go @@ -21,27 +21,27 @@ func testBackendGetSetDelete(t *testing.T, backend string) { defer dir.Close() db := NewDB("testdb", backend, dirname) - // A nonexistent key should return nil, even if the key is empty. + // A nonexistent key should return nil, even if the key is empty require.Nil(t, db.Get([]byte(""))) - // A nonexistent key should return nil, even if the key is nil. + // A nonexistent key should return nil, even if the key is nil require.Nil(t, db.Get(nil)) // A nonexistent key should return nil. key := []byte("abc") require.Nil(t, db.Get(key)) - // Set empty ("") + // Set empty value. db.Set(key, []byte("")) require.NotNil(t, db.Get(key)) require.Empty(t, db.Get(key)) - // Set empty (nil) + // Set nil value. db.Set(key, nil) require.NotNil(t, db.Get(key)) require.Empty(t, db.Get(key)) - // Delete + // Delete. db.Delete(key) require.Nil(t, db.Get(key)) } @@ -62,12 +62,13 @@ func withDB(t *testing.T, creator dbCreator, fn func(DB)) { } func TestBackendsNilKeys(t *testing.T) { - // test all backends. - // nil keys are treated as the empty key for most operations. + + // Test all backends. for dbType, creator := range backends { withDB(t, creator, func(db DB) { t.Run(fmt.Sprintf("Testing %s", dbType), func(t *testing.T) { + // Nil keys are treated as the empty key for most operations. expect := func(key, value []byte) { if len(key) == 0 { // nil or empty assert.Equal(t, db.Get(nil), db.Get([]byte(""))) diff --git a/db/c_level_db.go b/db/c_level_db.go index c9f8d419..7910628b 100644 --- a/db/c_level_db.go +++ b/db/c_level_db.go @@ -199,12 +199,12 @@ func newCLevelDBIterator(source *levigo.Iterator, start, end []byte, isReverse b } } -func (itr *cLevelDBIterator) Domain() ([]byte, []byte) { +func (itr cLevelDBIterator) Domain() ([]byte, []byte) { return itr.start, itr.end } -func (itr *cLevelDBIterator) Valid() bool { - +func (itr cLevelDBIterator) Valid() bool { + // Once invalid, forever invalid. if itr.isInvalid { return false @@ -227,33 +227,33 @@ func (itr *cLevelDBIterator) Valid() bool { return false } - // Valid + // It's valid. return true } -func (itr *cLevelDBIterator) Key() []byte { +func (itr cLevelDBIterator) Key() []byte { itr.assertNoError() itr.assertIsValid() return itr.source.Key() } -func (itr *cLevelDBIterator) Value() []byte { +func (itr cLevelDBIterator) Value() []byte { itr.assertNoError() itr.assertIsValid() return itr.source.Value() } -func (itr *cLevelDBIterator) Next() { +func (itr cLevelDBIterator) Next() { itr.assertNoError() itr.assertIsValid() itr.source.Next() } -func (itr *cLevelDBIterator) Close() { +func (itr cLevelDBIterator) Close() { itr.source.Close() } -func (itr *cLevelDBIterator) assertNoError() { +func (itr cLevelDBIterator) assertNoError() { if err := itr.source.GetError(); err != nil { panic(err) } diff --git a/db/mem_db.go b/db/mem_db.go index e9d9174d..e2470d7f 100644 --- a/db/mem_db.go +++ b/db/mem_db.go @@ -30,7 +30,7 @@ func (db *MemDB) Get(key []byte) []byte { db.mtx.Lock() defer db.mtx.Unlock() key = nonNilBytes(key) - + return db.db[string(key)] } @@ -215,4 +215,4 @@ func (itr *memDBIterator) assertIsValid() { if !itr.Valid() { panic("memDBIterator is invalid") } -} +} \ No newline at end of file