Skip to content

Commit 41856db

Browse files
authored
Merge pull request kubernetes#88270 from brianpursley/duration-2y0d
Add unit tests for human readable duration functions
2 parents 38f0a8b + 6e41fe5 commit 41856db

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

staging/src/k8s.io/apimachinery/pkg/util/duration/duration_test.go

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,82 @@ func TestHumanDuration(t *testing.T) {
4545
})
4646
}
4747
}
48+
49+
func TestHumanDurationBoundaries(t *testing.T) {
50+
tests := []struct {
51+
d time.Duration
52+
want string
53+
}{
54+
{d: -2 * time.Second, want: "<invalid>"},
55+
{d: -2*time.Second + 1, want: "0s"},
56+
{d: 0, want: "0s"},
57+
{d: time.Second - time.Millisecond, want: "0s"},
58+
{d: 2*time.Minute - time.Millisecond, want: "119s"},
59+
{d: 2 * time.Minute, want: "2m"},
60+
{d: 2*time.Minute + time.Second, want: "2m1s"},
61+
{d: 10*time.Minute - time.Millisecond, want: "9m59s"},
62+
{d: 10 * time.Minute, want: "10m"},
63+
{d: 10*time.Minute + time.Second, want: "10m"},
64+
{d: 3*time.Hour - time.Millisecond, want: "179m"},
65+
{d: 3 * time.Hour, want: "3h"},
66+
{d: 3*time.Hour + time.Minute, want: "3h1m"},
67+
{d: 8*time.Hour - time.Millisecond, want: "7h59m"},
68+
{d: 8 * time.Hour, want: "8h"},
69+
{d: 8*time.Hour + 59*time.Minute, want: "8h"},
70+
{d: 2*24*time.Hour - time.Millisecond, want: "47h"},
71+
{d: 2 * 24 * time.Hour, want: "2d"},
72+
{d: 2*24*time.Hour + time.Hour, want: "2d1h"},
73+
{d: 8*24*time.Hour - time.Millisecond, want: "7d23h"},
74+
{d: 8 * 24 * time.Hour, want: "8d"},
75+
{d: 8*24*time.Hour + 23*time.Hour, want: "8d"},
76+
{d: 2*365*24*time.Hour - time.Millisecond, want: "729d"},
77+
{d: 2 * 365 * 24 * time.Hour, want: "2y0d"},
78+
{d: 2*365*24*time.Hour + 23*time.Hour, want: "2y0d"},
79+
{d: 3 * 365 * 24 * time.Hour, want: "3y0d"},
80+
{d: 8*365*24*time.Hour - time.Millisecond, want: "7y364d"},
81+
{d: 8 * 365 * 24 * time.Hour, want: "8y"},
82+
{d: 8*365*24*time.Hour + 364*24*time.Hour, want: "8y"},
83+
{d: 9 * 365 * 24 * time.Hour, want: "9y"},
84+
}
85+
for _, tt := range tests {
86+
t.Run(tt.d.String(), func(t *testing.T) {
87+
if got := HumanDuration(tt.d); got != tt.want {
88+
t.Errorf("HumanDuration() = %v, want %v", got, tt.want)
89+
}
90+
})
91+
}
92+
}
93+
94+
func TestShortHumanDurationBoundaries(t *testing.T) {
95+
tests := []struct {
96+
d time.Duration
97+
want string
98+
}{
99+
{d: -2 * time.Second, want: "<invalid>"},
100+
{d: -2*time.Second + 1, want: "0s"},
101+
{d: 0, want: "0s"},
102+
{d: time.Second - time.Millisecond, want: "0s"},
103+
{d: time.Second, want: "1s"},
104+
{d: 2*time.Second - time.Millisecond, want: "1s"},
105+
{d: time.Minute - time.Millisecond, want: "59s"},
106+
{d: time.Minute, want: "1m"},
107+
{d: 2*time.Minute - time.Millisecond, want: "1m"},
108+
{d: time.Hour - time.Millisecond, want: "59m"},
109+
{d: time.Hour, want: "1h"},
110+
{d: 2*time.Hour - time.Millisecond, want: "1h"},
111+
{d: 24*time.Hour - time.Millisecond, want: "23h"},
112+
{d: 24 * time.Hour, want: "1d"},
113+
{d: 2*24*time.Hour - time.Millisecond, want: "1d"},
114+
{d: 365*24*time.Hour - time.Millisecond, want: "364d"},
115+
{d: 365 * 24 * time.Hour, want: "1y"},
116+
{d: 2*365*24*time.Hour - time.Millisecond, want: "1y"},
117+
{d: 2 * 365 * 24 * time.Hour, want: "2y"},
118+
}
119+
for _, tt := range tests {
120+
t.Run(tt.d.String(), func(t *testing.T) {
121+
if got := ShortHumanDuration(tt.d); got != tt.want {
122+
t.Errorf("ShortHumanDuration() = %v, want %v", got, tt.want)
123+
}
124+
})
125+
}
126+
}

0 commit comments

Comments
 (0)