Publish current app and server
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
package recommend
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestContextAffinityPrefersTypicalWeekdayTime(t *testing.T) {
|
||||
location := time.FixedZone("test", 12*60*60)
|
||||
profile := NewContextAffinityProfile()
|
||||
comedy := Item{Genres: []string{"Comedy"}}
|
||||
drama := Item{Genres: []string{"Drama"}}
|
||||
for i := 0; i < 6; i++ {
|
||||
profile.Add(
|
||||
comedy,
|
||||
time.Date(2026, 7, 6+i*7, 19, 30, 0, 0, location),
|
||||
1,
|
||||
i,
|
||||
location,
|
||||
)
|
||||
profile.Add(
|
||||
drama,
|
||||
time.Date(2026, 7, 7+i*7, 13, 0, 0, 0, location),
|
||||
1,
|
||||
i,
|
||||
location,
|
||||
)
|
||||
}
|
||||
|
||||
now := time.Date(2026, 7, 27, 20, 0, 0, 0, location) // Monday evening.
|
||||
comedyScore, confidence := profile.Score(comedy, now, location)
|
||||
dramaScore, _ := profile.Score(drama, now, location)
|
||||
if comedyScore <= dramaScore {
|
||||
t.Fatalf("Monday-evening comedy score %.3f <= drama score %.3f", comedyScore, dramaScore)
|
||||
}
|
||||
if confidence != 1 {
|
||||
t.Fatalf("confidence = %.3f, want 1 after repeated matching sessions", confidence)
|
||||
}
|
||||
}
|
||||
|
||||
func TestContextAffinityUsesNeighboringWindowsAsWeakFallback(t *testing.T) {
|
||||
location := time.UTC
|
||||
profile := NewContextAffinityProfile()
|
||||
item := Item{Genres: []string{"Documentary"}}
|
||||
profile.Add(
|
||||
item,
|
||||
time.Date(2026, 7, 20, 16, 30, 0, 0, location), // Monday afternoon.
|
||||
0.8,
|
||||
0,
|
||||
location,
|
||||
)
|
||||
|
||||
exact, exactConfidence := profile.Score(
|
||||
item, time.Date(2026, 7, 27, 16, 0, 0, 0, location), location,
|
||||
)
|
||||
neighbor, neighborConfidence := profile.Score(
|
||||
item, time.Date(2026, 7, 27, 18, 0, 0, 0, location), location,
|
||||
)
|
||||
if neighbor <= 0 || neighbor*neighborConfidence >= exact*exactConfidence {
|
||||
t.Fatalf(
|
||||
"weighted neighbor %.3f should be positive and below exact %.3f",
|
||||
neighbor*neighborConfidence,
|
||||
exact*exactConfidence,
|
||||
)
|
||||
}
|
||||
if neighborConfidence >= exactConfidence {
|
||||
t.Fatalf(
|
||||
"neighbor confidence %.3f should be below exact %.3f",
|
||||
neighborConfidence,
|
||||
exactConfidence,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
func TestContextAffinityHasNeutralSparseHistoryFallback(t *testing.T) {
|
||||
score, confidence := (ContextAffinityProfile{}).Score(
|
||||
Item{Genres: []string{"Drama"}}, time.Now(), time.UTC,
|
||||
)
|
||||
if score != 0 || confidence != 0 {
|
||||
t.Fatalf("empty profile = score %.3f confidence %.3f, want neutral", score, confidence)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user