49 lines
1.3 KiB
Go
49 lines
1.3 KiB
Go
package assignment
|
|
|
|
import (
|
|
"math"
|
|
"testing"
|
|
|
|
"github.com/redis/go-redis/v9"
|
|
)
|
|
|
|
func TestAcceptTimeout(t *testing.T) {
|
|
cases := map[string]int{
|
|
"": defaultAcceptTimeoutMinutes,
|
|
"0": 0, // off
|
|
"5": 5,
|
|
"-1": defaultAcceptTimeoutMinutes,
|
|
"soon": defaultAcceptTimeoutMinutes, // a typo must not switch it off
|
|
}
|
|
for env, want := range cases {
|
|
t.Setenv("ASSIGNMENT_ACCEPT_TIMEOUT_MINUTES", env)
|
|
if got := acceptTimeout(); got != want {
|
|
t.Errorf("ASSIGNMENT_ACCEPT_TIMEOUT_MINUTES=%q: %d, want %d", env, got, want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestWithoutRiders(t *testing.T) {
|
|
nearby := []redis.GeoLocation{{Name: "1"}, {Name: "2"}, {Name: "3"}, {Name: "x"}}
|
|
got := withoutRiders(nearby, map[int]bool{2: true})
|
|
if len(got) != 3 || got[0].Name != "1" || got[1].Name != "3" || got[2].Name != "x" {
|
|
t.Fatalf("got %v", got)
|
|
}
|
|
if len(nearby) != 4 || nearby[1].Name != "2" {
|
|
t.Fatal("the input slice must not be modified")
|
|
}
|
|
if got := withoutRiders(nearby, nil); len(got) != 4 {
|
|
t.Fatal("nothing to skip, nothing removed")
|
|
}
|
|
}
|
|
|
|
func TestDistanceKm(t *testing.T) {
|
|
// RS Puram to Gandhipuram, Coimbatore: about 2.2 km.
|
|
if d := distanceKm(11.0090, 76.9500, 11.0182714, 76.9677744); math.Abs(d-2.17) > 0.2 {
|
|
t.Fatalf("distance = %.2f km", d)
|
|
}
|
|
if d := distanceKm(11, 77, 11, 77); d != 0 {
|
|
t.Fatalf("same point = %v", d)
|
|
}
|
|
}
|