go-cache/async_cache_test.go

122 lines
2.2 KiB
Go

package cache
import (
"sync"
"testing"
)
func Test_keyStatus_Set(t *testing.T) {
type fields struct {
keyMap map[string]status
mu *sync.RWMutex
}
type args struct {
key string
status status
}
tests := []struct {
name string
fields fields
args args
wantStatus status
}{
{
name: "With Valid key and state",
fields: fields(*NewKeyStatus()),
args: args{
key: "prof_123",
status: STATUS_INPROCESS,
},
wantStatus: STATUS_INPROCESS,
},
{
name: "With InValid key and state",
fields: fields(*NewKeyStatus()),
args: args{
key: "",
status: STATUS_INPROCESS,
},
wantStatus: STATUS_INVALID_KEY,
},
}
for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) {
ks := NewKeyStatus()
t.Parallel()
ks.Set(tt.args.key, tt.args.status)
if ks.Get(tt.args.key) != tt.wantStatus {
t.Log(tt.fields.keyMap)
t.Errorf("KeyStatys.Set() sets status %v, want status %v", tt.args.status, tt.wantStatus)
}
})
}
}
func Test_keyStatus_Get(t *testing.T) {
type args struct {
key string
}
tests := []struct {
name string
KeyS keyStatus
args args
want status
}{
{
name: "With Valid key and state as DONE",
KeyS: func() keyStatus {
ks := NewKeyStatus()
ks.Set("prof_123", STATUS_DONE)
return *ks
}(),
args: args{
key: "prof_123",
},
want: STATUS_DONE,
},
{
name: "With Valid key and state as INPROCESS",
KeyS: func() keyStatus {
ks := NewKeyStatus()
ks.Set("prof_123", STATUS_INPROCESS)
return *ks
}(),
args: args{
key: "prof_123",
},
want: STATUS_INPROCESS,
},
{
name: "With Valid key but not present in keyMap",
KeyS: *NewKeyStatus(),
args: args{
key: "getAdUnit_5890",
},
want: STATUS_NOTPRESENT,
},
{
name: "With Invalid key and state as INPROCESS",
KeyS: *NewKeyStatus(),
args: args{
key: "",
},
want: STATUS_INVALID_KEY,
},
}
for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) {
ks := NewKeyStatus()
ks.keyMap = tt.KeyS.keyMap
t.Parallel()
if got := ks.Get(tt.args.key); got != tt.want {
t.Errorf("keyStatus.Get() = %v, want %v", got, tt.want)
}
})
}
}