package common import ( "fmt" "strings" "testing" "github.com/stretchr/testify/assert" ) func TestIterateKeysWithValues(t *testing.T) { cmap := NewCMap() for i := 1; i <= 10; i++ { cmap.Set(fmt.Sprintf("key%d", i), fmt.Sprintf("value%d", i)) } // Testing size assert.Equal(t, 10, cmap.Size()) assert.Equal(t, 10, len(cmap.Keys())) assert.Equal(t, 10, len(cmap.Values())) // Iterating Keys, checking for matching Value for _, key := range cmap.Keys() { val := strings.Replace(key, "key", "value", -1) assert.Equal(t, val, cmap.Get(key)) } // Test if all keys are within []Keys() keys := cmap.Keys() for i := 1; i <= 10; i++ { assert.Contains(t, keys, fmt.Sprintf("key%d", i), "cmap.Keys() should contain key") } // Delete 1 Key cmap.Delete("key1") assert.NotEqual( t, len(keys), len(cmap.Keys()), "[]keys and []Keys() should not be equal, they are copies, one item was removed", ) } func TestContains(t *testing.T) { cmap := NewCMap() cmap.Set("key1", "value1") // Test for known values assert.True(t, cmap.Has("key1")) assert.Equal(t, "value1", cmap.Get("key1")) // Test for unknown values assert.False(t, cmap.Has("key2")) assert.Nil(t, cmap.Get("key2")) } func BenchmarkCMapHas(b *testing.B) { m := NewCMap() for i := 0; i < 1000; i++ { m.Set(string(i), i) } b.ResetTimer() for i := 0; i < b.N; i++ { m.Has(string(i)) } }