OSDN Git Service

503e361f1c0e1877577d10bfeb4e6f027bd137a6
[bytom/vapor.git] / database / leveldb / mem_db_test.go
1 package db
2
3 import (
4         "testing"
5
6         "github.com/stretchr/testify/assert"
7         "github.com/stretchr/testify/require"
8 )
9
10 func TestMemDbIterator(t *testing.T) {
11         db := NewMemDB()
12         keys := make([][]byte, 100)
13         for i := 0; i < 100; i++ {
14                 keys[i] = []byte{byte(i)}
15         }
16
17         value := []byte{5}
18         for _, k := range keys {
19                 db.Set(k, value)
20         }
21
22         iter := db.Iterator()
23         i := 0
24         for iter.Next() {
25                 assert.Equal(t, db.Get(iter.Key()), iter.Value(), "values dont match for key")
26                 i += 1
27         }
28         assert.Equal(t, i, len(db.db), "iterator didnt cover whole db")
29 }
30
31 func TestMemDBClose(t *testing.T) {
32         db := NewMemDB()
33         copyDB := func(orig map[string][]byte) map[string][]byte {
34                 copy := make(map[string][]byte)
35                 for k, v := range orig {
36                         copy[k] = v
37                 }
38                 return copy
39         }
40         k, v := []byte("foo"), []byte("bar")
41         db.Set(k, v)
42         require.Equal(t, db.Get(k), v, "expecting a successful get")
43         copyBefore := copyDB(db.db)
44         db.Close()
45         require.Equal(t, db.Get(k), v, "Close is a noop, expecting a successful get")
46         copyAfter := copyDB(db.db)
47         require.Equal(t, copyBefore, copyAfter, "Close is a noop and shouldn't modify any internal data")
48 }