github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/libraries/syndtr/goleveldb/leveldb/storage/mem_storage_test.go (about) 1 // Copyright (c) 2013, Suryandaru Triandana <syndtr@gmail.com> 2 // All rights reserved. 3 // 4 // Use of this source code is governed by a BSD-style license that can be 5 // found in the LICENSE file. 6 7 package storage 8 9 import ( 10 "bytes" 11 "testing" 12 ) 13 14 func TestMemStorage(t *testing.T) { 15 m := NewMemStorage() 16 17 l, err := m.Lock() 18 if err != nil { 19 t.Fatal("storage lock failed(1): ", err) 20 } 21 _, err = m.Lock() 22 if err == nil { 23 t.Fatal("expect error for second storage lock attempt") 24 } else { 25 t.Logf("storage lock got error: %s (expected)", err) 26 } 27 l.Release() 28 _, err = m.Lock() 29 if err != nil { 30 t.Fatal("storage lock failed(2): ", err) 31 } 32 33 w, err := m.Create(FileDesc{TypeTable, 1}) 34 if err != nil { 35 t.Fatal("Storage.Create: ", err) 36 } 37 w.Write([]byte("abc")) 38 w.Close() 39 if fds, _ := m.List(TypeAll); len(fds) != 1 { 40 t.Fatal("invalid GetFiles len") 41 } 42 buf := new(bytes.Buffer) 43 r, err := m.Open(FileDesc{TypeTable, 1}) 44 if err != nil { 45 t.Fatal("Open: got error: ", err) 46 } 47 buf.ReadFrom(r) 48 r.Close() 49 if got := buf.String(); got != "abc" { 50 t.Fatalf("Read: invalid value, want=abc got=%s", got) 51 } 52 if _, err := m.Open(FileDesc{TypeTable, 1}); err != nil { 53 t.Fatal("Open: got error: ", err) 54 } 55 if _, err := m.Open(FileDesc{TypeTable, 1}); err == nil { 56 t.Fatal("expecting error") 57 } 58 m.Remove(FileDesc{TypeTable, 1}) 59 if fds, _ := m.List(TypeAll); len(fds) != 0 { 60 t.Fatal("invalid GetFiles len", len(fds)) 61 } 62 if _, err := m.Open(FileDesc{TypeTable, 1}); err == nil { 63 t.Fatal("expecting error") 64 } 65 }