81 lines
1.9 KiB
Go
81 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestIconForForecast(t *testing.T) {
|
|
icon := iconForForecast("Thunderstorms", true)
|
|
if icon != "\ue31d" {
|
|
t.Fatalf("expected thunderstorm icon, got %q", icon)
|
|
}
|
|
|
|
icon = iconForForecast("Partly Cloudy", false)
|
|
if icon != "\ue379" {
|
|
t.Fatalf("expected partly cloudy night icon, got %q", icon)
|
|
}
|
|
|
|
icon = iconForForecast("Mostly Sunny", true)
|
|
if icon != "\ue30c" {
|
|
t.Fatalf("expected mostly sunny icon, got %q", icon)
|
|
}
|
|
|
|
icon = iconForForecast("Overcast", true)
|
|
if icon != "\ue312" {
|
|
t.Fatalf("expected cloudy icon, got %q", icon)
|
|
}
|
|
|
|
icon = iconForForecast("Rain", true)
|
|
if icon != "\ue318" {
|
|
t.Fatalf("expected rain icon, got %q", icon)
|
|
}
|
|
|
|
icon = iconForForecast("Snow", true)
|
|
if icon != "\ue31a" {
|
|
t.Fatalf("expected snow icon, got %q", icon)
|
|
}
|
|
}
|
|
|
|
func TestFormatOutputPopAlways(t *testing.T) {
|
|
pop := 20
|
|
loc := Location{City: "Testville", State: "TS"}
|
|
period := ForecastPeriod{
|
|
Temp: 70,
|
|
Unit: "F",
|
|
Summary: "Clear",
|
|
Pop: &pop,
|
|
}
|
|
|
|
out := FormatOutput(loc, period, false, false)
|
|
if !strings.Contains(out, "20%") {
|
|
t.Fatalf("expected pop to be shown above threshold, got %q", out)
|
|
}
|
|
if strings.Contains(out, "\ue371") || strings.Contains(out, "\uf2dc") {
|
|
t.Fatalf("expected no pop icon in plain mode, got %q", out)
|
|
}
|
|
}
|
|
|
|
func TestFormatOutputPopIcon(t *testing.T) {
|
|
pop := 60
|
|
loc := Location{City: "Testville", State: "TS"}
|
|
period := ForecastPeriod{
|
|
Temp: 30,
|
|
Unit: "F",
|
|
Summary: "Snow",
|
|
Pop: &pop,
|
|
IsDaytime: true,
|
|
}
|
|
|
|
out := FormatOutput(loc, period, false, true)
|
|
if !strings.Contains(out, "\uf2dc 60%") {
|
|
t.Fatalf("expected snow pop icon before pop, got %q", out)
|
|
}
|
|
if !strings.Contains(out, "\ue31a 30°F") {
|
|
t.Fatalf("expected precip icon before temperature, got %q", out)
|
|
}
|
|
if !strings.Contains(out, "\uf2dc 60% in") {
|
|
t.Fatalf("expected pop to precede location, got %q", out)
|
|
}
|
|
}
|