package utility_test import ( "testing" "time" "code.nonshy.com/nonshy/website/pkg/utility" ) func TestNextMonth(t *testing.T) { var tests = []struct { Now string Day int Expect string }{ { Now: "1995-08-01", Day: 15, Expect: "1995-09-15", }, { Now: "2006-12-15", Day: 11, Expect: "2007-01-11", }, { Now: "2006-12-01", Day: 15, Expect: "2007-01-15", }, { Now: "2007-01-15", Day: 29, // no leap day Expect: "2007-03-01", }, { Now: "2004-01-08", Day: 29, // leap day Expect: "2004-02-29", }, } for i, test := range tests { now, err := time.Parse(time.DateOnly, test.Now) if err != nil { t.Errorf("Test #%d: parse error: %s", i, err) continue } actual := utility.NextMonth(now, test.Day).Format("2006-01-02") if actual != test.Expect { t.Errorf("Test #%d: expected %s but got %s", i, test.Expect, actual) } } } func TestFormatDurationCoarse(t *testing.T) { var tests = []struct { In time.Duration Expect string }{ { In: 0, Expect: "0 seconds", }, { In: 1 * time.Second, Expect: "1 second", }, { In: 2 * time.Second, Expect: "2 seconds", }, { In: 25 * time.Second, Expect: "25 seconds", }, { In: 59 * time.Second, Expect: "59 seconds", }, { In: 60 * time.Second, Expect: "1 minute", }, { In: 90 * time.Second, Expect: "1 minute", }, { In: 119 * time.Second, Expect: "1 minute", }, { In: 120 * time.Second, Expect: "2 minutes", }, { In: 15 * time.Minute, Expect: "15 minutes", }, { In: 59 * time.Minute, Expect: "59 minutes", }, { In: 60 * time.Minute, Expect: "1 hour", }, { In: 75 * time.Minute, Expect: "1 hour", }, { In: 119 * time.Minute, Expect: "1 hour", }, { In: 120 * time.Minute, Expect: "2 hours", }, { In: 14 * time.Hour, Expect: "14 hours", }, { In: 23 * time.Hour, Expect: "23 hours", }, { In: 24 * time.Hour, Expect: "1 day", }, { In: 36 * time.Hour, Expect: "1 day", }, { In: 48 * time.Hour, Expect: "2 days", }, { In: time.Hour * 24 * 60, Expect: "2 months", }, { In: time.Hour * 24 * 365, Expect: "1 year", }, { In: time.Hour * 24 * 30 * 12, Expect: "1 year", }, { In: time.Hour*24*30*12 + time.Hour*12, Expect: "1 year", }, { In: time.Hour * 24 * 30 * 13, Expect: "1.1 years", }, { In: time.Hour * 24 * 30 * 18, Expect: "1.5 years", }, { In: time.Hour * 24 * 30 * 22, Expect: "1.8 years", }, { In: time.Hour * 24 * 30 * 24, Expect: "2 years", }, { In: time.Hour * 24 * 30 * 36, Expect: "3 years", }, { In: time.Hour * 24 * 30 * 49, Expect: "4 years", }, } for _, test := range tests { actual := utility.FormatDurationCoarse(test.In) if actual != test.Expect { t.Errorf("Expected %d to be '%s' but got '%s'", test.In, test.Expect, actual) } } }