267 lines
4.8 KiB
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)
|
|
}
|
|
})
|
|
}
|
|
}
|