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, cmap.Size(), 10, "overall size should be 10") assert.Equal(t, len(cmap.Keys()), 10, "should be 10 keys") assert.Equal(t, len(cmap.Values()), 10, "should be 10 values") // Iterating Keys, checking for matching Value for _, key := range cmap.Keys() { val := strings.Replace(key, "key", "value", -1) assert.Equal(t, cmap.Get(key), val) } // Test if all keys are within []Keys() keys := cmap.Keys() for i := 1; i <= 10; i++ { assert.True(t, contains(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"), "should contain key1") assert.Equal(t, cmap.Get("key1"), "value1", "key1.value() should be value1") // Test for unknown values assert.False(t, cmap.Has("key2"), "should not contain key2") assert.Nil(t, cmap.Get("key2"), "does not contain key2") } func contains(array []string, value string) (bool) { for _, val := range array { if val == value { return true } } return false }