Files
kjol/go/chrono/chrono_test.go

87 lines
2.9 KiB
Go

package chrono
import (
"testing"
"time"
)
// This tests the TimeElapsedToString function and the TimeSinceToString function that implements it
func TestTimeElapsedToString(t *testing.T) {
tests := []struct {
startInput time.Time
endInput time.Time
expected string
}{
{time.Time{},
time.Date(2025, time.June, 27, 11, 0, 0, 0, time.UTC),
"Never"},
{time.Date(2025, time.June, 27, 11, 0, 0, 0, time.UTC),
time.Time{},
"Never"},
{time.Date(2025, time.June, 27, 11, 0, 0, 0, time.UTC),
time.Date(2025, time.June, 27, 11, 0, 0, 999999999, time.UTC),
"Just now"},
{time.Date(2025, time.June, 27, 11, 0, 0, 0, time.UTC),
time.Date(2025, time.June, 27, 11, 0, 0, 1, time.UTC),
"Just now"},
{time.Date(2025, time.June, 27, 11, 0, 0, 0, time.UTC),
time.Date(2025, time.June, 27, 11, 1, 0, 1, time.UTC),
"1 minute"},
{time.Date(2025, time.June, 27, 11, 0, 0, 0, time.UTC),
time.Date(2025, time.June, 27, 11, 3, 0, 1, time.UTC),
"3 minutes"},
{time.Date(2025, time.June, 27, 11, 0, 0, 0, time.UTC),
time.Date(2025, time.June, 27, 12, 0, 0, 1, time.UTC),
"1 hour"},
{time.Date(2025, time.June, 27, 11, 0, 0, 0, time.UTC),
time.Date(2025, time.June, 27, 13, 0, 0, 1, time.UTC),
"2 hours"},
{time.Date(2025, time.June, 27, 11, 0, 0, 0, time.UTC),
time.Date(2025, time.June, 30, 11, 0, 0, 1, time.UTC),
"3 days"},
{time.Date(2025, time.January, 1, 0, 0, 0, 0, time.UTC),
time.Date(2025, time.January, 8, 1, 0, 0, 1, time.UTC),
"1 week"},
{time.Date(2025, time.January, 1, 0, 0, 0, 0, time.UTC),
time.Date(2025, time.January, 15, 1, 0, 0, 1, time.UTC),
"2 weeks"},
{time.Date(2025, time.January, 1, 0, 0, 0, 0, time.UTC),
time.Date(2025, time.February, 7, 0, 0, 0, 1, time.UTC),
"1 month"},
{time.Date(2025, time.January, 1, 0, 0, 0, 0, time.UTC),
time.Date(2025, time.March, 15, 0, 0, 0, 1, time.UTC),
"2 months"},
{time.Date(2025, time.January, 1, 0, 0, 0, 0, time.UTC),
time.Date(2026, time.January, 1, 0, 0, 0, 1, time.UTC),
"1 year"},
{time.Date(2020, time.January, 1, 0, 0, 0, 0, time.UTC),
time.Date(2025, time.January, 1, 0, 0, 0, 1, time.UTC),
"5 years"},
}
for _, tt := range tests {
result := TimeElapsedToString(tt.startInput, tt.endInput, "UTC")
if result != tt.expected {
t.Errorf("TimeElapsedToString(%q, %q, \"UTC\") = %q; want %q", tt.startInput, tt.endInput, result, tt.expected)
}
}
sinceTests := []struct {
timeInput time.Time
expected string
}{
{time.Now().Add(-1 * time.Minute), "1 minute ago"},
{time.Now().Add(-2 * time.Hour), "2 hours ago"},
{time.Now().Add(-3 * time.Hour * 24), "3 days ago"},
{time.Now(), "Just now"},
{time.Now().Add(-5 * 7 * 24 * time.Hour), "1 month ago"},
}
for _, tt := range sinceTests {
result := TimeSinceToString(tt.timeInput, "UTC")
if result != tt.expected {
t.Errorf("TimeSinceToString(%q, \"UTC\") = %q; want %q", tt.timeInput, result, tt.expected)
}
}
}