(t *testing.T)
| 259 | } |
| 260 | |
| 261 | func TestPreferenceManager_ConflictMerge(t *testing.T) { |
| 262 | config := DefaultPreferenceManagerConfig() |
| 263 | config.ConflictStrategy = ConflictMerge |
| 264 | manager := NewPreferenceManager(config) |
| 265 | |
| 266 | // 添加第一个偏好 |
| 267 | pref1 := &Preference{ |
| 268 | UserID: "user-1", |
| 269 | Category: CategoryUI, |
| 270 | Key: "theme", |
| 271 | Value: "dark", |
| 272 | Strength: 0.6, |
| 273 | Confidence: 0.8, |
| 274 | } |
| 275 | if err := manager.AddPreference(context.Background(), pref1); err != nil { |
| 276 | t.Fatalf("AddPreference failed: %v", err) |
| 277 | } |
| 278 | |
| 279 | // 添加冲突的偏好 |
| 280 | pref2 := &Preference{ |
| 281 | UserID: "user-1", |
| 282 | Category: CategoryUI, |
| 283 | Key: "theme", |
| 284 | Value: "dark", |
| 285 | Strength: 0.8, |
| 286 | Confidence: 0.9, |
| 287 | } |
| 288 | if err := manager.AddPreference(context.Background(), pref2); err != nil { |
| 289 | t.Fatalf("AddPreference failed: %v", err) |
| 290 | } |
| 291 | |
| 292 | // 验证强度被合并 |
| 293 | result, _ := manager.GetPreference(context.Background(), "user-1", CategoryUI, "theme") |
| 294 | if result.Strength != 0.7 { // (0.6 + 0.8) / 2 |
| 295 | t.Errorf("Strength = %.2f, want 0.70", result.Strength) |
| 296 | } |
| 297 | |
| 298 | if result.AccessCount != 1 { |
| 299 | t.Errorf("AccessCount = %d, want 1", result.AccessCount) |
| 300 | } |
| 301 | } |
| 302 | |
| 303 | func TestPreferenceManager_GetTopPreferences(t *testing.T) { |
| 304 | manager := NewPreferenceManager(DefaultPreferenceManagerConfig()) |
nothing calls this directly
no test coverage detected