package cli import ( "testing" "time" ) func TestPeriodSetT(t *testing.T) { now := time.Date(2010, 1, 1, 0, 0, 0, 0, time.UTC) cases := map[string]time.Time{ "2001-02-03": time.Date(2001, 2, 3, 0, 0, 0, 0, time.UTC), "2001-02": time.Date(2001, 2, 1, 0, 0, 0, 0, time.UTC), "2001": time.Date(2001, 1, 1, 0, 0, 0, 0, time.UTC), "": time.Unix(0, 0), "1m": now.Add(1 * time.Minute), "+1m": now.Add(1 * time.Minute), "-1m": now.Add(-1 * time.Minute), "1h1m": now.Add(1*time.Hour + 1*time.Minute), "1d": now.Add(24 * time.Hour), "+1d": now.Add(24 * time.Hour), "-1d": now.Add(-24 * time.Hour), "1d1m": now.Add(24*time.Hour + 1*time.Minute), "+1d1m": now.Add(24*time.Hour + 1*time.Minute), "-1d1m": now.Add(-1*24*time.Hour + -1*1*time.Minute), "1y1mo1w1d1h": now.AddDate(1, 1, 7+1).Add(1 * time.Hour), } for input, expect := range cases { input, expect := input, expect t.Run(input, func(t *testing.T) { p := &Period{} var got time.Time if _, err := p.setT(now, input, &got); err != nil { t.Fatal(err) } if got.Unix() != expect.Unix() { t.Errorf("expected %s but got %s", expect.String(), got.String()) } }) } }