(t *testing.T)
| 416 | } |
| 417 | |
| 418 | func TestPreferenceManager_GetStats(t *testing.T) { |
| 419 | manager := NewPreferenceManager(DefaultPreferenceManagerConfig()) |
| 420 | |
| 421 | // 添加多个偏好 |
| 422 | prefs := []*Preference{ |
| 423 | {UserID: "user-1", Category: CategoryUI, Key: "theme", Value: "dark", Strength: 0.9, Confidence: 0.9}, |
| 424 | {UserID: "user-1", Category: CategoryUI, Key: "font", Value: "mono", Strength: 0.5, Confidence: 0.8}, |
| 425 | {UserID: "user-1", Category: CategoryLanguage, Key: "lang", Value: "zh", Strength: 0.3, Confidence: 1.0}, |
| 426 | } |
| 427 | |
| 428 | for _, pref := range prefs { |
| 429 | if err := manager.AddPreference(context.Background(), pref); err != nil { |
| 430 | t.Fatalf("AddPreference failed: %v", err) |
| 431 | } |
| 432 | } |
| 433 | |
| 434 | stats := manager.GetStats("user-1") |
| 435 | |
| 436 | if stats.TotalPreferences != 3 { |
| 437 | t.Errorf("TotalPreferences = %d, want 3", stats.TotalPreferences) |
| 438 | } |
| 439 | |
| 440 | if stats.CategoryDistribution[CategoryUI] != 2 { |
| 441 | t.Errorf("UI preferences = %d, want 2", stats.CategoryDistribution[CategoryUI]) |
| 442 | } |
| 443 | |
| 444 | if stats.HighStrengthCount != 1 { |
| 445 | t.Errorf("HighStrengthCount = %d, want 1", stats.HighStrengthCount) |
| 446 | } |
| 447 | |
| 448 | if stats.MediumStrengthCount != 1 { |
| 449 | t.Errorf("MediumStrengthCount = %d, want 1", stats.MediumStrengthCount) |
| 450 | } |
| 451 | |
| 452 | if stats.LowStrengthCount != 1 { |
| 453 | t.Errorf("LowStrengthCount = %d, want 1", stats.LowStrengthCount) |
| 454 | } |
| 455 | |
| 456 | expectedAverage := (0.9 + 0.5 + 0.3) / 3 |
| 457 | if stats.AverageStrength < expectedAverage-0.01 || stats.AverageStrength > expectedAverage+0.01 { |
| 458 | t.Errorf("AverageStrength = %.2f, want ~%.2f", stats.AverageStrength, expectedAverage) |
| 459 | } |
| 460 | } |
| 461 | |
| 462 | func TestPreferenceExtractor_ExtractFromMessage(t *testing.T) { |
| 463 | manager := NewPreferenceManager(DefaultPreferenceManagerConfig()) |
nothing calls this directly
no test coverage detected