| package calendar |
| |
| import ( |
| "fmt" |
| "testing" |
| "time" |
| ) |
| |
| func TestWarsawDate(t *testing.T) { |
| makeTime := func(s string) EventTime { |
| t.Helper() |
| warsaw, err := time.LoadLocation("Europe/Warsaw") |
| if err != nil { |
| t.Fatalf("could not get Warsaw timezone: %v", err) |
| } |
| ti, err := time.ParseInLocation("2006/01/02 15:04", s, warsaw) |
| if err != nil { |
| t.Fatal("could not parse test time %q: %v", s, err) |
| } |
| return EventTime{ |
| Time: ti, |
| } |
| } |
| makeDay := func(s string) EventTime { |
| t.Helper() |
| ti, err := time.Parse("2006/01/02", s) |
| if err != nil { |
| t.Fatal("could not parse test day %q: %v", s, err) |
| } |
| return EventTime{ |
| Time: ti, |
| WholeDay: true, |
| } |
| } |
| for i, te := range []struct { |
| start EventTime |
| end EventTime |
| want string |
| }{ |
| { |
| makeTime("2021/03/14 13:37"), makeTime("2021/04/20 21:37"), |
| "2021/03/14 13:37 - 2021/04/20 21:37", |
| }, |
| { |
| makeTime("2021/04/20 13:37"), makeTime("2021/04/20 21:37"), |
| "2021/04/20 13:37 - 21:37", |
| }, |
| { |
| makeDay("2021/06/01"), makeDay("2021/07/01"), |
| "2021/06/01 - 30", |
| }, |
| { |
| makeDay("2021/03/14"), makeDay("2021/04/21"), |
| "2021/03/14 - 2021/04/20", |
| }, |
| { |
| makeDay("2021/04/20"), makeDay("2021/04/21"), |
| "2021/04/20", |
| }, |
| } { |
| te := te |
| t.Run(fmt.Sprintf("%d", i), func(t *testing.T) { |
| ev := UpcomingEvent{ |
| Start: &te.start, |
| End: &te.end, |
| } |
| got := ev.WarsawDate() |
| if got != te.want { |
| t.Fatalf("wanted %q, got %q", te.want, got) |
| } |
| }) |
| } |
| } |