MCPcopy Create free account
hub / github.com/antchfx/xpath / TestLoadingCache

Function TestLoadingCache

cache_test.go:11–64  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

9)
10
11func TestLoadingCache(t *testing.T) {
12 c := NewLoadingCache(
13 func(key interface{}) (interface{}, error) {
14 switch v := key.(type) {
15 case int:
16 return strconv.Itoa(v), nil
17 default:
18 return nil, errors.New("invalid type")
19 }
20 },
21 2) // cap = 2
22 assertEqual(t, 0, len(c.m))
23 v, err := c.get(1)
24 assertNoErr(t, err)
25 assertEqual(t, "1", v)
26 assertEqual(t, 1, len(c.m))
27
28 v, err = c.get(1)
29 assertNoErr(t, err)
30 assertEqual(t, "1", v)
31 assertEqual(t, 1, len(c.m))
32
33 v, err = c.get(2)
34 assertNoErr(t, err)
35 assertEqual(t, "2", v)
36 assertEqual(t, 2, len(c.m))
37
38 // over capacity, m is reset
39 v, err = c.get(3)
40 assertNoErr(t, err)
41 assertEqual(t, "3", v)
42 assertEqual(t, 1, len(c.m))
43
44 // Invalid capacity
45 assertPanic(t, func() {
46 NewLoadingCache(func(key interface{}) (interface{}, error) { return key, nil }, -1)
47 })
48
49 // Loading failure
50 c = NewLoadingCache(
51 func(key interface{}) (interface{}, error) {
52 if key.(int)%2 == 0 {
53 return key, nil
54 } else {
55 return nil, fmt.Errorf("artificial error: %d", key.(int))
56 }
57 }, 0)
58 v, err = c.get(12)
59 assertNoErr(t, err)
60 assertEqual(t, 12, v)
61 _, err = c.get(21)
62 assertErr(t, err)
63 assertEqual(t, "artificial error: 21", err.Error())
64}
65
66const (
67 benchLoadingCacheRandSeed = 12345

Callers

nothing calls this directly

Calls 6

NewLoadingCacheFunction · 0.85
assertEqualFunction · 0.85
assertNoErrFunction · 0.85
assertPanicFunction · 0.85
assertErrFunction · 0.85
getMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…