github.com/cellofellow/gopkg@v0.0.0-20140722061823-eec0544a62ad/database/leveldb.chai2010/cache_test.go (about)

     1  // Copyright 2013 <chaishushan{AT}gmail.com>. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package leveldb
     6  
     7  import (
     8  	"bytes"
     9  	"testing"
    10  )
    11  
    12  type testpair struct {
    13  	key, value string
    14  }
    15  
    16  var pairs = []testpair{
    17  	{"", ""},
    18  	{"f", "Zg=="},
    19  	{"fo", "Zm8="},
    20  	{"foo", "Zm9v"},
    21  	{"foob", "Zm9vYg=="},
    22  	{"fooba", "Zm9vYmE="},
    23  	{"foobar", "Zm9vYmFy"},
    24  	{"sure.", "c3VyZS4="},
    25  	{"sure", "c3VyZQ=="},
    26  	{"sur", "c3Vy"},
    27  	{"su", "c3U="},
    28  	{"leasure.", "bGVhc3VyZS4="},
    29  	{"easure.", "ZWFzdXJlLg=="},
    30  	{"asure.", "YXN1cmUu"},
    31  	{"sure.", "c3VyZS4="},
    32  }
    33  
    34  func TestCache(t *testing.T) {
    35  	cache := NewCache(1 << 20)
    36  	defer cache.Release()
    37  
    38  	// empty & lookup fail
    39  	for _, p := range pairs {
    40  		if v := cache.Lookup([]byte(p.key)); v != nil {
    41  			t.Fatalf("%s: expect = nil, got = not nil\n", p.key)
    42  		}
    43  	}
    44  
    45  	// insert & lookup success
    46  	for _, p := range pairs {
    47  		cache.Insert([]byte(p.key), []byte(p.value))
    48  	}
    49  	for _, p := range pairs {
    50  		v := cache.Lookup([]byte(p.key))
    51  		if v == nil {
    52  			t.Fatalf("%s: expect = not nil, got = nil\n", p.key)
    53  		}
    54  		if !bytes.Equal([]byte(p.value), v.Slice()) {
    55  			t.Fatalf("%s: expect = %v, got = %v\n", p.key, p.value, string(v.Slice()))
    56  		}
    57  		v.Release()
    58  	}
    59  
    60  	// erase & lookup fail
    61  	for _, p := range pairs {
    62  		cache.Erase([]byte(p.key))
    63  	}
    64  	for _, p := range pairs {
    65  		if v := cache.Lookup([]byte(p.key)); v != nil {
    66  			t.Fatalf("%s: expect = nil, got = not nil\n", p.key)
    67  		}
    68  	}
    69  }