MCPcopy Create free account
hub / github.com/astercloud/aster / TestPreferenceManager_ApplyDecay

Function TestPreferenceManager_ApplyDecay

pkg/memory/preference_test.go:340–378  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

338}
339
340func TestPreferenceManager_ApplyDecay(t *testing.T) {
341 config := DefaultPreferenceManagerConfig()
342 config.StrengthDecay = 0.5 // 每天衰减 50%
343 config.MinStrength = 0.3
344 manager := NewPreferenceManager(config)
345
346 // 添加偏好
347 pref := &Preference{
348 UserID: "user-1",
349 Category: CategoryUI,
350 Key: "theme",
351 Value: "dark",
352 Strength: 0.8,
353 Confidence: 0.9,
354 }
355 if err := manager.AddPreference(context.Background(), pref); err != nil {
356 t.Fatalf("AddPreference failed: %v", err)
357 }
358
359 // 手动设置更新时间为 1 天前
360 manager.mu.Lock()
361 pref.UpdatedAt = time.Now().Add(-24 * time.Hour)
362 manager.mu.Unlock()
363
364 // 应用衰减
365 removed := manager.ApplyDecay(context.Background())
366
367 // 验证强度衰减
368 updated, _ := manager.GetPreference(context.Background(), "user-1", CategoryUI, "theme")
369 expectedStrength := 0.8 * 0.5 // 衰减 50%
370
371 if updated.Strength < expectedStrength-0.01 || updated.Strength > expectedStrength+0.01 {
372 t.Errorf("Strength = %.2f, want ~%.2f", updated.Strength, expectedStrength)
373 }
374
375 if removed != 0 {
376 t.Errorf("removed = %d, want 0", removed)
377 }
378}
379
380func TestPreferenceManager_ApplyDecay_RemoveWeak(t *testing.T) {
381 config := DefaultPreferenceManagerConfig()

Callers

nothing calls this directly

Calls 6

AddPreferenceMethod · 0.95
ApplyDecayMethod · 0.95
GetPreferenceMethod · 0.95
NewPreferenceManagerFunction · 0.85
AddMethod · 0.65

Tested by

no test coverage detected