package humanize

import (
	"testing"
	"time"

	"olexsmir.xyz/x/is"
)

func TestFormatDuration(t *testing.T) {
	tests := []struct {
		d    time.Duration
		want string
	}{
		{0, "less than a minute"},
		{30 * time.Second, "less than a minute"},
		{1 * time.Minute, "1 minute"},
		{90 * time.Second, "1 minute"},
		{2 * time.Minute, "2 minutes"},
		{43 * time.Minute, "43 minutes"},
		{1 * time.Hour, "1 hour"},
		{90 * time.Minute, "1 hour"},
		{2 * time.Hour, "2 hours"},
		{23 * time.Hour, "23 hours"},
		{24 * time.Hour, "1 day"},
		{36 * time.Hour, "1 day"},
		{48 * time.Hour, "2 days"},
		{29 * 24 * time.Hour, "29 days"},
		{30 * 24 * time.Hour, "1 month"},
		{45 * 24 * time.Hour, "1 month"},
		{60 * 24 * time.Hour, "2 months"},
		{364 * 24 * time.Hour, "12 months"},
		{365 * 24 * time.Hour, "1 year"},
		{500 * 24 * time.Hour, "1 year"},
		{730 * 24 * time.Hour, "2 years"},
		{1000 * 24 * time.Hour, "2 years"},
	}

	for _, tt := range tests {
		is.Equal(t, tt.want, formatDuration(tt.d))
	}
}
