go-cache/async_cache_test.go

267 lines
4.8 KiB
Go

package cache
import (
"sync"
"testing"
)
func Test_keyStates_Set(t *testing.T) {
type fields struct {
keyState map[string]state
mu *sync.RWMutex
}
type args struct {
key string
status state
}
tests := []struct {
name string
fields fields
args args
want bool
wantStatus state
wantErr error
}{
{
name: "With Valid key and state",
fields: fields{
keyState: map[string]state{},
mu: &sync.RWMutex{},
},
args: args{
key: "prof_123",
status: INPROCESS,
},
want: true,
wantStatus: INPROCESS,
wantErr: nil,
},
{
name: "With InValid key and state",
fields: fields{
keyState: map[string]state{},
mu: &sync.RWMutex{},
},
args: args{
key: "",
status: INPROCESS,
},
want: false,
wantErr: ErrInvalidKey,
},
{
name: "nil check for keystateSet",
fields: fields{
keyState: nil,
mu: &sync.RWMutex{},
},
args: args{
key: "",
status: INPROCESS,
},
want: false,
wantErr: ErrKeyStateNotPresent,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
ks := &keyStates{
keyState: tt.fields.keyState,
mu: tt.fields.mu,
}
got, err := ks.Set(tt.args.key, tt.args.status)
if got != tt.want {
t.Errorf("keyStates.Set() = %v, want %v", got, tt.want)
}
if err != tt.wantErr {
t.Errorf("keyStates.Set() Error = %v, want %v", err, tt.wantErr)
}
})
}
}
func Test_keyStates_set(t *testing.T) {
type fields struct {
keyState map[string]state
mu *sync.RWMutex
}
type args struct {
k string
s state
}
tests := []struct {
name string
fields fields
args args
want bool
}{
{
name: "With Valid key and state",
fields: fields{
keyState: map[string]state{},
},
args: args{
k: "prof_123",
s: INPROCESS,
},
want: true,
},
{
name: "With Invalid key and valid state",
fields: fields{
keyState: map[string]state{},
},
args: args{
k: "",
s: INPROCESS,
},
want: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
ks := &keyStates{
keyState: tt.fields.keyState,
mu: tt.fields.mu,
}
if got := ks.set(tt.args.k, tt.args.s); got != tt.want {
t.Errorf("keyStates.set() = %v, want %v", got, tt.want)
}
})
}
}
func Test_keyStates_get(t *testing.T) {
type fields struct {
keyState map[string]state
mu *sync.RWMutex
}
type args struct {
k string
}
tests := []struct {
name string
fields fields
args args
want state
want1 bool
}{
{
name: "With Valid key and valid state",
fields: fields{
keyState: map[string]state{"prof_123": DONE},
},
args: args{
k: "prof_123",
},
want: DONE,
want1: true,
},
{
name: "With InValid key and invalid state ",
fields: fields{
keyState: map[string]state{},
},
args: args{
k: "",
},
want: NOPRESENT,
want1: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
ks := &keyStates{
keyState: tt.fields.keyState,
mu: tt.fields.mu,
}
got, got1 := ks.get(tt.args.k)
if got != tt.want {
t.Errorf("keyStates.get() got = %v, want %v", got, tt.want)
}
if got1 != tt.want1 {
t.Errorf("keyStates.get() got1 = %v, want %v", got1, tt.want1)
}
})
}
}
func Test_keyStates_Get(t *testing.T) {
type fields struct {
keyState map[string]state
mu *sync.RWMutex
}
type args struct {
key string
}
tests := []struct {
name string
fields fields
args args
want state
wantErr error
}{
{
name: "With Valid key and state as DONE",
fields: fields{
keyState: map[string]state{"prof_123": DONE},
},
args: args{
key: "prof_123",
},
want: DONE,
wantErr: nil,
},
{
name: "With InValid key and state",
fields: fields{
keyState: map[string]state{"prof_123": DONE},
},
args: args{
key: "",
},
want: INVALID,
wantErr: ErrInvalidKey,
},
{
name: "With Valid key and state as INPROCESS",
fields: fields{
keyState: map[string]state{"prof_123": INPROCESS},
},
args: args{
key: "prof_123",
},
want: INPROCESS,
wantErr: nil,
},
{
name: "nil check",
fields: fields{
keyState: nil,
},
args: args{
key: "prof_123",
},
want: INVALID,
wantErr: ErrKeyStateNotPresent,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
ks := &keyStates{
keyState: tt.fields.keyState,
mu: tt.fields.mu,
}
got, err := ks.Get(tt.args.key)
if err != tt.wantErr {
t.Errorf("keyStates.Get() error = %v, wantErr %v", err, tt.wantErr)
return
}
if got != tt.want {
t.Errorf("keyStates.Get() = %v, want %v", got, tt.want)
}
})
}
}