From b18b3c003576beb563f8a7baffb66a201a5e1f45 Mon Sep 17 00:00:00 2001 From: Ambrose Chua Date: Tue, 10 Nov 2020 11:32:33 +0800 Subject: [PATCH] Write tests for ResolveZone --- zone_test.go | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/zone_test.go b/zone_test.go index bb9f40a..bf306d2 100644 --- a/zone_test.go +++ b/zone_test.go @@ -83,6 +83,48 @@ func TestSearchCities(t *testing.T) { } } +func TestResolveZone(t *testing.T) { + cities, err := data.ReadCities() + if err != nil { + panic(err) + } + + zone, err := ResolveZone(cities, "Singapore-SG") + if err != nil { + t.Errorf("want error %v, got error %v", nil, err) + } + wantCity, _ := SearchCities(cities, "Singapore-SG") + // TODO: instead of pointer comparison, do .Equals() + if zone.City != wantCity { + t.Errorf("want City %v, got City %v", wantCity, zone.City) + } + if zone.Offset != nil { + t.Errorf("want Offset %v, got Offset %v", nil, zone.Offset) + } + + zone, err = ResolveZone(cities, "+04:00") + if err != nil { + t.Errorf("want error %v, got error %v", nil, err) + } + if zone.City != nil { + t.Errorf("want City %v, got City %v", nil, zone.City) + } + wantOffset, _ := ParseZoneOffset("+04:00") + if zone.Offset.String() != wantOffset.String() { + t.Errorf("want Offset %v, got Offset %v", wantOffset, zone.Offset) + } + + zone, err = ResolveZone(cities, "+04:80") + if err != ErrZoneNotFound { + t.Errorf("want error %v, got error %v", ErrZoneOffsetInvalid, err) + } + + zone, err = ResolveZone(cities, "04:80") + if err != ErrZoneNotFound { + t.Errorf("want error %v, got error %v", ErrZoneNotFound, err) + } +} + func BenchmarkReadCities(b *testing.B) { // This does take quite a while for i := 0; i < b.N; i++ {