OSDN Git Service

new repo
[bytom/vapor.git] / vendor / github.com / tendermint / tmlibs / common / cmap_test.go
1 package common
2
3 import (
4         "fmt"
5         "strings"
6         "testing"
7
8         "github.com/stretchr/testify/assert"
9 )
10
11 func TestIterateKeysWithValues(t *testing.T) {
12         cmap := NewCMap()
13
14         for i := 1; i <= 10; i++ {
15                 cmap.Set(fmt.Sprintf("key%d", i), fmt.Sprintf("value%d", i))
16         }
17
18         // Testing size
19         assert.Equal(t, 10, cmap.Size())
20         assert.Equal(t, 10, len(cmap.Keys()))
21         assert.Equal(t, 10, len(cmap.Values()))
22
23         // Iterating Keys, checking for matching Value
24         for _, key := range cmap.Keys() {
25                 val := strings.Replace(key, "key", "value", -1)
26                 assert.Equal(t, val, cmap.Get(key))
27         }
28
29         // Test if all keys are within []Keys()
30         keys := cmap.Keys()
31         for i := 1; i <= 10; i++ {
32                 assert.Contains(t, keys, fmt.Sprintf("key%d", i), "cmap.Keys() should contain key")
33         }
34
35         // Delete 1 Key
36         cmap.Delete("key1")
37
38         assert.NotEqual(t, len(keys), len(cmap.Keys()), "[]keys and []Keys() should not be equal, they are copies, one item was removed")
39 }
40
41 func TestContains(t *testing.T) {
42         cmap := NewCMap()
43
44         cmap.Set("key1", "value1")
45
46         // Test for known values
47         assert.True(t, cmap.Has("key1"))
48         assert.Equal(t, "value1", cmap.Get("key1"))
49
50         // Test for unknown values
51         assert.False(t, cmap.Has("key2"))
52         assert.Nil(t, cmap.Get("key2"))
53 }