package group import ( "reflect" "testing" ) func TestGroupGet(t *testing.T) { count := 0 g := NewGroup(func() interface{} { count++ return count }) v := g.Get("key_0") if !reflect.DeepEqual(v.(int), 1) { t.Errorf("expect 1, actual %v", v) } v = g.Get("key_1") if !reflect.DeepEqual(v.(int), 2) { t.Errorf("expect 2, actual %v", v) } v = g.Get("key_0") if !reflect.DeepEqual(v.(int), 1) { t.Errorf("expect 1, actual %v", v) } if !reflect.DeepEqual(count, 2) { t.Errorf("expect count 2, actual %v", count) } } func TestGroupReset(t *testing.T) { g := NewGroup(func() interface{} { return 1 }) g.Get("key") call := false g.Reset(func() interface{} { call = true return 1 }) length := 0 for range g.vals { length++ } if !reflect.DeepEqual(length, 0) { t.Errorf("expect length 0, actual %v", length) } g.Get("key") if !reflect.DeepEqual(call, true) { t.Errorf("expect call true, actual %v", call) } } func TestGroupClear(t *testing.T) { g := NewGroup(func() interface{} { return 1 }) g.Get("key") length := 0 for range g.vals { length++ } if !reflect.DeepEqual(length, 1) { t.Errorf("expect length 1, actual %v", length) } g.Clear() length = 0 for range g.vals { length++ } if !reflect.DeepEqual(length, 0) { t.Errorf("expect length 0, actual %v", length) } }