package web import ( "testing" "time" ) func TestGetNounForm(t *testing.T) { cases := []struct { n int f1 string f2 string f5 string want string }{ {1, "минуту", "минуты", "минут", "минуту"}, {2, "минуту", "минуты", "минут", "минуты"}, {5, "минуту", "минуты", "минут", "минут"}, {11, "минуту", "минуты", "минут", "минут"}, {21, "минуту", "минуты", "минут", "минуту"}, {22, "минуту", "минуты", "минут", "минуты"}, {25, "минуту", "минуты", "минут", "минут"}, {101, "минуту", "минуты", "минут", "минуту"}, {111, "минуту", "минуты", "минут", "минут"}, {0, "минуту", "минуты", "минут", "минут"}, } for _, c := range cases { got := getNounForm(c.n, c.f1, c.f2, c.f5) if got != c.want { t.Errorf("getNounForm(%d) = %q, want %q", c.n, got, c.want) } } } func TestFormatTimeAgo_Zero(t *testing.T) { if formatTimeAgo(0) != "неизвестно" { t.Errorf("expected 'неизвестно' for ts=0") } } func TestFormatTimeAgo_JustNow(t *testing.T) { now := time.Now().Unix() got := formatTimeAgo(now) if got != "только что" { t.Errorf("expected 'только что', got '%s'", got) } } func TestFormatTimeAgo_Minutes(t *testing.T) { ts := time.Now().Unix() - 120 // 2 minutes ago got := formatTimeAgo(ts) if got == "неизвестно" || got == "только что" { t.Errorf("expected minutes format, got '%s'", got) } } func TestFormatTimeAgo_Hours(t *testing.T) { ts := time.Now().Unix() - 7200 // 2 hours ago got := formatTimeAgo(ts) if got == "неизвестно" || got == "только что" { t.Errorf("expected hours format, got '%s'", got) } } func TestFormatTimeAgo_Days(t *testing.T) { ts := time.Now().Unix() - 172800 // 2 days ago got := formatTimeAgo(ts) if got == "неизвестно" || got == "только что" { t.Errorf("expected days format, got '%s'", got) } } func TestFormatTimeAgo_Future(t *testing.T) { ts := time.Now().Unix() + 100 got := formatTimeAgo(ts) // future → diff clamped to 0 → "только что" if got != "только что" { t.Errorf("expected 'только что' for future, got '%s'", got) } }