MCPcopy
hub / github.com/go-gorm/gorm / TestLRUWithPurge

Function TestLRUWithPurge

tests/lru_test.go:263–326  ·  view source on GitHub ↗

func TestExpirableMultipleClose(_ *testing.T) { lc :=lru.NewLRU[string, string](10, nil, 0) lc.Close() // should not panic lc.Close() }

(t *testing.T)

Source from the content-addressed store, hash-verified

261// }
262
263func TestLRUWithPurge(t *testing.T) {
264 var evicted []string
265 lc := lru.NewLRU(10, func(key string, value string) { evicted = append(evicted, key, value) }, 150*time.Millisecond)
266
267 k, v, ok := lc.GetOldest()
268 if k != "" {
269 t.Fatalf("should be empty")
270 }
271 if v != "" {
272 t.Fatalf("should be empty")
273 }
274 if ok {
275 t.Fatalf("should be false")
276 }
277
278 lc.Add("key1", "val1")
279
280 time.Sleep(100 * time.Millisecond) // not enough to expire
281 if lc.Len() != 1 {
282 t.Fatalf("length differs from expected")
283 }
284
285 v, ok = lc.Get("key1")
286 if v != "val1" {
287 t.Fatalf("value differs from expected")
288 }
289 if !ok {
290 t.Fatalf("should be true")
291 }
292
293 time.Sleep(200 * time.Millisecond) // expire
294 v, ok = lc.Get("key1")
295 if ok {
296 t.Fatalf("should be false")
297 }
298 if v != "" {
299 t.Fatalf("should be nil")
300 }
301
302 if lc.Len() != 0 {
303 t.Fatalf("length differs from expected")
304 }
305 if !reflect.DeepEqual(evicted, []string{"key1", "val1"}) {
306 t.Fatalf("value differs from expected")
307 }
308
309 // add new entry
310 lc.Add("key2", "val2")
311 if lc.Len() != 1 {
312 t.Fatalf("length differs from expected")
313 }
314
315 k, v, ok = lc.GetOldest()
316 if k != "key2" {
317 t.Fatalf("value differs from expected")
318 }
319 if v != "val2" {
320 t.Fatalf("value differs from expected")

Callers

nothing calls this directly

Calls 5

NewLRUFunction · 0.92
GetOldestMethod · 0.80
AddMethod · 0.80
LenMethod · 0.80
GetMethod · 0.65

Tested by

no test coverage detected