@@ -26,64 +26,63 @@ var formatDurationTestdata = []struct {
26
26
base10Milli string
27
27
base10Micro string
28
28
base10Nano string
29
- base60 string
30
29
}{
31
- {math .MaxInt64 , "9223372036.854775807" , "9223372036854.775807" , "9223372036854775.807" , "9223372036854775807" , "2562047:47:16.854775807" },
32
- {1e12 + 1e12 , "2000" , "2000000" , "2000000000" , "2000000000000" , "0:33:20" },
33
- {1e12 + 1e11 , "1100" , "1100000" , "1100000000" , "1100000000000" , "0:18:20" },
34
- {1e12 + 1e10 , "1010" , "1010000" , "1010000000" , "1010000000000" , "0:16:50" },
35
- {1e12 + 1e9 , "1001" , "1001000" , "1001000000" , "1001000000000" , "0:16:41" },
36
- {1e12 + 1e8 , "1000.1" , "1000100" , "1000100000" , "1000100000000" , "0:16:40.1" },
37
- {1e12 + 1e7 , "1000.01" , "1000010" , "1000010000" , "1000010000000" , "0:16:40.01" },
38
- {1e12 + 1e6 , "1000.001" , "1000001" , "1000001000" , "1000001000000" , "0:16:40.001" },
39
- {1e12 + 1e5 , "1000.0001" , "1000000.1" , "1000000100" , "1000000100000" , "0:16:40.0001" },
40
- {1e12 + 1e4 , "1000.00001" , "1000000.01" , "1000000010" , "1000000010000" , "0:16:40.00001" },
41
- {1e12 + 1e3 , "1000.000001" , "1000000.001" , "1000000001" , "1000000001000" , "0:16:40.000001" },
42
- {1e12 + 1e2 , "1000.0000001" , "1000000.0001" , "1000000000.1" , "1000000000100" , "0:16:40.0000001" },
43
- {1e12 + 1e1 , "1000.00000001" , "1000000.00001" , "1000000000.01" , "1000000000010" , "0:16:40.00000001" },
44
- {1e12 + 1e0 , "1000.000000001" , "1000000.000001" , "1000000000.001" , "1000000000001" , "0:16:40.000000001" },
45
- {+ (1e9 + 1 ), "1.000000001" , "1000.000001" , "1000000.001" , "1000000001" , "0:00:01.000000001" },
46
- {+ (1e9 ), "1" , "1000" , "1000000" , "1000000000" , "0:00:01" },
47
- {+ (1e9 - 1 ), "0.999999999" , "999.999999" , "999999.999" , "999999999" , "0:00:00.999999999" },
48
- {+ 100000000 , "0.1" , "100" , "100000" , "100000000" , "0:00:00.1" },
49
- {+ 120000000 , "0.12" , "120" , "120000" , "120000000" , "0:00:00.12" },
50
- {+ 123000000 , "0.123" , "123" , "123000" , "123000000" , "0:00:00.123" },
51
- {+ 123400000 , "0.1234" , "123.4" , "123400" , "123400000" , "0:00:00.1234" },
52
- {+ 123450000 , "0.12345" , "123.45" , "123450" , "123450000" , "0:00:00.12345" },
53
- {+ 123456000 , "0.123456" , "123.456" , "123456" , "123456000" , "0:00:00.123456" },
54
- {+ 123456700 , "0.1234567" , "123.4567" , "123456.7" , "123456700" , "0:00:00.1234567" },
55
- {+ 123456780 , "0.12345678" , "123.45678" , "123456.78" , "123456780" , "0:00:00.12345678" },
56
- {+ 123456789 , "0.123456789" , "123.456789" , "123456.789" , "123456789" , "0:00:00.123456789" },
57
- {+ 12345678 , "0.012345678" , "12.345678" , "12345.678" , "12345678" , "0:00:00.012345678" },
58
- {+ 1234567 , "0.001234567" , "1.234567" , "1234.567" , "1234567" , "0:00:00.001234567" },
59
- {+ 123456 , "0.000123456" , "0.123456" , "123.456" , "123456" , "0:00:00.000123456" },
60
- {+ 12345 , "0.000012345" , "0.012345" , "12.345" , "12345" , "0:00:00.000012345" },
61
- {+ 1234 , "0.000001234" , "0.001234" , "1.234" , "1234" , "0:00:00.000001234" },
62
- {+ 123 , "0.000000123" , "0.000123" , "0.123" , "123" , "0:00:00.000000123" },
63
- {+ 12 , "0.000000012" , "0.000012" , "0.012" , "12" , "0:00:00.000000012" },
64
- {+ 1 , "0.000000001" , "0.000001" , "0.001" , "1" , "0:00:00.000000001" },
65
- {0 , "0" , "0" , "0" , "0" , "0:00:00" },
66
- {- 1 , "-0.000000001" , "-0.000001" , "-0.001" , "-1" , "-0:00:00.000000001" },
67
- {- 12 , "-0.000000012" , "-0.000012" , "-0.012" , "-12" , "-0:00:00.000000012" },
68
- {- 123 , "-0.000000123" , "-0.000123" , "-0.123" , "-123" , "-0:00:00.000000123" },
69
- {- 1234 , "-0.000001234" , "-0.001234" , "-1.234" , "-1234" , "-0:00:00.000001234" },
70
- {- 12345 , "-0.000012345" , "-0.012345" , "-12.345" , "-12345" , "-0:00:00.000012345" },
71
- {- 123456 , "-0.000123456" , "-0.123456" , "-123.456" , "-123456" , "-0:00:00.000123456" },
72
- {- 1234567 , "-0.001234567" , "-1.234567" , "-1234.567" , "-1234567" , "-0:00:00.001234567" },
73
- {- 12345678 , "-0.012345678" , "-12.345678" , "-12345.678" , "-12345678" , "-0:00:00.012345678" },
74
- {- 123456789 , "-0.123456789" , "-123.456789" , "-123456.789" , "-123456789" , "-0:00:00.123456789" },
75
- {- 123456780 , "-0.12345678" , "-123.45678" , "-123456.78" , "-123456780" , "-0:00:00.12345678" },
76
- {- 123456700 , "-0.1234567" , "-123.4567" , "-123456.7" , "-123456700" , "-0:00:00.1234567" },
77
- {- 123456000 , "-0.123456" , "-123.456" , "-123456" , "-123456000" , "-0:00:00.123456" },
78
- {- 123450000 , "-0.12345" , "-123.45" , "-123450" , "-123450000" , "-0:00:00.12345" },
79
- {- 123400000 , "-0.1234" , "-123.4" , "-123400" , "-123400000" , "-0:00:00.1234" },
80
- {- 123000000 , "-0.123" , "-123" , "-123000" , "-123000000" , "-0:00:00.123" },
81
- {- 120000000 , "-0.12" , "-120" , "-120000" , "-120000000" , "-0:00:00.12" },
82
- {- 100000000 , "-0.1" , "-100" , "-100000" , "-100000000" , "-0:00:00.1" },
83
- {- (1e9 - 1 ), "-0.999999999" , "-999.999999" , "-999999.999" , "-999999999" , "-0:00:00.999999999" },
84
- {- (1e9 ), "-1" , "-1000" , "-1000000" , "-1000000000" , "-0:00:01" },
85
- {- (1e9 + 1 ), "-1.000000001" , "-1000.000001" , "-1000000.001" , "-1000000001" , "-0:00:01.000000001" },
86
- {math .MinInt64 , "-9223372036.854775808" , "-9223372036854.775808" , "-9223372036854775.808" , "-9223372036854775808" , "-2562047:47:16.854775808" },
30
+ {math .MaxInt64 , "9223372036.854775807" , "9223372036854.775807" , "9223372036854775.807" , "9223372036854775807" },
31
+ {1e12 + 1e12 , "2000" , "2000000" , "2000000000" , "2000000000000" },
32
+ {1e12 + 1e11 , "1100" , "1100000" , "1100000000" , "1100000000000" },
33
+ {1e12 + 1e10 , "1010" , "1010000" , "1010000000" , "1010000000000" },
34
+ {1e12 + 1e9 , "1001" , "1001000" , "1001000000" , "1001000000000" },
35
+ {1e12 + 1e8 , "1000.1" , "1000100" , "1000100000" , "1000100000000" },
36
+ {1e12 + 1e7 , "1000.01" , "1000010" , "1000010000" , "1000010000000" },
37
+ {1e12 + 1e6 , "1000.001" , "1000001" , "1000001000" , "1000001000000" },
38
+ {1e12 + 1e5 , "1000.0001" , "1000000.1" , "1000000100" , "1000000100000" },
39
+ {1e12 + 1e4 , "1000.00001" , "1000000.01" , "1000000010" , "1000000010000" },
40
+ {1e12 + 1e3 , "1000.000001" , "1000000.001" , "1000000001" , "1000000001000" },
41
+ {1e12 + 1e2 , "1000.0000001" , "1000000.0001" , "1000000000.1" , "1000000000100" },
42
+ {1e12 + 1e1 , "1000.00000001" , "1000000.00001" , "1000000000.01" , "1000000000010" },
43
+ {1e12 + 1e0 , "1000.000000001" , "1000000.000001" , "1000000000.001" , "1000000000001" },
44
+ {+ (1e9 + 1 ), "1.000000001" , "1000.000001" , "1000000.001" , "1000000001" },
45
+ {+ (1e9 ), "1" , "1000" , "1000000" , "1000000000" },
46
+ {+ (1e9 - 1 ), "0.999999999" , "999.999999" , "999999.999" , "999999999" },
47
+ {+ 100000000 , "0.1" , "100" , "100000" , "100000000" },
48
+ {+ 120000000 , "0.12" , "120" , "120000" , "120000000" },
49
+ {+ 123000000 , "0.123" , "123" , "123000" , "123000000" },
50
+ {+ 123400000 , "0.1234" , "123.4" , "123400" , "123400000" },
51
+ {+ 123450000 , "0.12345" , "123.45" , "123450" , "123450000" },
52
+ {+ 123456000 , "0.123456" , "123.456" , "123456" , "123456000" },
53
+ {+ 123456700 , "0.1234567" , "123.4567" , "123456.7" , "123456700" },
54
+ {+ 123456780 , "0.12345678" , "123.45678" , "123456.78" , "123456780" },
55
+ {+ 123456789 , "0.123456789" , "123.456789" , "123456.789" , "123456789" },
56
+ {+ 12345678 , "0.012345678" , "12.345678" , "12345.678" , "12345678" },
57
+ {+ 1234567 , "0.001234567" , "1.234567" , "1234.567" , "1234567" },
58
+ {+ 123456 , "0.000123456" , "0.123456" , "123.456" , "123456" },
59
+ {+ 12345 , "0.000012345" , "0.012345" , "12.345" , "12345" },
60
+ {+ 1234 , "0.000001234" , "0.001234" , "1.234" , "1234" },
61
+ {+ 123 , "0.000000123" , "0.000123" , "0.123" , "123" },
62
+ {+ 12 , "0.000000012" , "0.000012" , "0.012" , "12" },
63
+ {+ 1 , "0.000000001" , "0.000001" , "0.001" , "1" },
64
+ {0 , "0" , "0" , "0" , "0" },
65
+ {- 1 , "-0.000000001" , "-0.000001" , "-0.001" , "-1" },
66
+ {- 12 , "-0.000000012" , "-0.000012" , "-0.012" , "-12" },
67
+ {- 123 , "-0.000000123" , "-0.000123" , "-0.123" , "-123" },
68
+ {- 1234 , "-0.000001234" , "-0.001234" , "-1.234" , "-1234" },
69
+ {- 12345 , "-0.000012345" , "-0.012345" , "-12.345" , "-12345" },
70
+ {- 123456 , "-0.000123456" , "-0.123456" , "-123.456" , "-123456" },
71
+ {- 1234567 , "-0.001234567" , "-1.234567" , "-1234.567" , "-1234567" },
72
+ {- 12345678 , "-0.012345678" , "-12.345678" , "-12345.678" , "-12345678" },
73
+ {- 123456789 , "-0.123456789" , "-123.456789" , "-123456.789" , "-123456789" },
74
+ {- 123456780 , "-0.12345678" , "-123.45678" , "-123456.78" , "-123456780" },
75
+ {- 123456700 , "-0.1234567" , "-123.4567" , "-123456.7" , "-123456700" },
76
+ {- 123456000 , "-0.123456" , "-123.456" , "-123456" , "-123456000" },
77
+ {- 123450000 , "-0.12345" , "-123.45" , "-123450" , "-123450000" },
78
+ {- 123400000 , "-0.1234" , "-123.4" , "-123400" , "-123400000" },
79
+ {- 123000000 , "-0.123" , "-123" , "-123000" , "-123000000" },
80
+ {- 120000000 , "-0.12" , "-120" , "-120000" , "-120000000" },
81
+ {- 100000000 , "-0.1" , "-100" , "-100000" , "-100000000" },
82
+ {- (1e9 - 1 ), "-0.999999999" , "-999.999999" , "-999999.999" , "-999999999" },
83
+ {- (1e9 ), "-1" , "-1000" , "-1000000" , "-1000000000" },
84
+ {- (1e9 + 1 ), "-1.000000001" , "-1000.000001" , "-1000000.001" , "-1000000001" },
85
+ {math .MinInt64 , "-9223372036.854775808" , "-9223372036854.775808" , "-9223372036854775.808" , "-9223372036854775808" },
87
86
}
88
87
89
88
func TestFormatDuration (t * testing.T ) {
@@ -106,7 +105,6 @@ func TestFormatDuration(t *testing.T) {
106
105
check (tt .td , tt .base10Milli , 1e6 )
107
106
check (tt .td , tt .base10Micro , 1e3 )
108
107
check (tt .td , tt .base10Nano , 1e0 )
109
- check (tt .td , tt .base60 , 60 )
110
108
}
111
109
}
112
110
@@ -139,18 +137,6 @@ var parseDurationTestdata = []struct {
139
137
{"-1.0009" , 1e3 , - time .Microsecond , false },
140
138
{"-1.0000009" , 1e6 , - time .Millisecond , false },
141
139
{"-1.0000000009" , 1e9 , - time .Second , false },
142
- {"1:23:45" , 60 , time .Hour + 23 * time .Minute + 45 * time .Second , false },
143
- {"1:60:45" , 60 , 0 , true },
144
- {"1:23:60" , 60 , 0 , true },
145
- {"1:23:45." , 60 , 0 , true },
146
- {"1:23:45.0" , 60 , time .Hour + 23 * time .Minute + 45 * time .Second , false },
147
- {"1:23:45.1234567899" , 60 , time .Hour + 23 * time .Minute + 45 * time .Second + 123456789 * time .Nanosecond , false },
148
- {"1:23:45.123456789x" , 60 , 0 , true },
149
- {"23:45" , 60 , 0 , true },
150
- {"45" , 60 , 0 , true },
151
- {"00:00:00" , 60 , 0 , true },
152
- {"2562047:47:16.854775808" , 60 , 0 , true },
153
- {"2562048:00:00" , 60 , 0 , true },
154
140
}
155
141
156
142
func TestParseDuration (t * testing.T ) {
@@ -173,7 +159,7 @@ func FuzzFormatDuration(f *testing.F) {
173
159
}
174
160
f .Fuzz (func (t * testing.T , want int64 ) {
175
161
var buf []byte
176
- for _ , base := range [... ]uint64 {1e0 , 1e3 , 1e6 , 1e9 , 60 } {
162
+ for _ , base := range [... ]uint64 {1e0 , 1e3 , 1e6 , 1e9 } {
177
163
a := durationArshaler {td : time .Duration (want ), base : base }
178
164
buf , _ = a .appendMarshal (buf [:0 ])
179
165
switch err := a .unmarshal (buf ); {
0 commit comments