30 lines
949 B
Go
30 lines
949 B
Go
package briefing
|
|
|
|
import "testing"
|
|
|
|
func TestWindDirectionLabelUsesSixteenPointCompass(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
degrees *float64
|
|
want string
|
|
}{
|
|
{name: "nil", degrees: nil, want: ""},
|
|
{name: "north", degrees: floatPtr(0), want: "N"},
|
|
{name: "below first boundary", degrees: floatPtr(11.24), want: "N"},
|
|
{name: "at first boundary", degrees: floatPtr(11.25), want: "NNE"},
|
|
{name: "northeast", degrees: floatPtr(45), want: "NE"},
|
|
{name: "south", degrees: floatPtr(180), want: "S"},
|
|
{name: "wrap to north", degrees: floatPtr(348.75), want: "N"},
|
|
{name: "full rotation", degrees: floatPtr(360), want: "N"},
|
|
{name: "negative normalizes", degrees: floatPtr(-45), want: "NW"},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := windDirectionLabel(tt.degrees); got != tt.want {
|
|
t.Fatalf("windDirectionLabel(%v) = %q, want %q", tt.degrees, got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|