@@ -47,6 +47,29 @@ class TimeCompactorTests: XCTestCase {
47
47
XCTAssertEqual ( " -12.0s " , c. string ( from: - 12.050 ) )
48
48
}
49
49
50
+ func testWholeNumberMedium( ) {
51
+ let c = TimeCompactor ( ifZero: nil , style: . medium, roundSmallToWhole: true )
52
+
53
+ XCTAssertEqual ( " 59 secs " , c. string ( from: 59 ) )
54
+ XCTAssertEqual ( " 59 secs " , c. string ( from: 59.499 ) )
55
+ XCTAssertEqual ( " 1 min " , c. string ( from: 59.500 ) )
56
+ XCTAssertEqual ( " 1 min " , c. string ( from: 59.899 ) )
57
+ XCTAssertEqual ( " 1 min " , c. string ( from: 59.9 ) )
58
+ XCTAssertEqual ( " 1 min " , c. string ( from: 60 ) )
59
+ XCTAssertEqual ( " 1 min " , c. string ( from: 61 ) )
60
+ XCTAssertEqual ( " 1 min " , c. string ( from: 89.499 ) )
61
+ XCTAssertEqual ( " 1 min " , c. string ( from: 89.999 ) )
62
+ XCTAssertEqual ( " 2 mins " , c. string ( from: 90 ) )
63
+
64
+ XCTAssertEqual ( " 1 sec " , c. string ( from: 1 ) )
65
+ XCTAssertEqual ( " 1 sec " , c. string ( from: 1.49 ) )
66
+ XCTAssertEqual ( " 2 secs " , c. string ( from: 1.50 ) )
67
+
68
+ XCTAssertEqual ( " 1 hr " , c. string ( from: 3600 ) )
69
+ XCTAssertEqual ( " 1 hr " , c. string ( from: 5399 ) ) // <1.5 hours
70
+ XCTAssertEqual ( " 2 hrs " , c. string ( from: 5400 ) ) // 1.5 hours
71
+ }
72
+
50
73
func testWholeNumberFull( ) {
51
74
let c = TimeCompactor ( ifZero: nil , style: . full, roundSmallToWhole: true )
52
75
@@ -93,6 +116,24 @@ class TimeCompactorTests: XCTestCase {
93
116
XCTAssertEqual ( " 2h " , c. string ( from: 5400 ) ) // 1.5 hours
94
117
}
95
118
119
+ func testPluralMedium( ) {
120
+ let c = TimeCompactor ( ifZero: nil , style: . medium)
121
+
122
+ XCTAssertEqual ( " 1.0 secs " , c. string ( from: 1 ) )
123
+ XCTAssertEqual ( " 1.1 secs " , c. string ( from: 1.09 ) )
124
+
125
+ XCTAssertEqual ( " 59.0 secs " , c. string ( from: 59 ) )
126
+ XCTAssertEqual ( " 59.9 secs " , c. string ( from: 59.94 ) )
127
+ XCTAssertEqual ( " 1.0 mins " , c. string ( from: 59.95 ) )
128
+ XCTAssertEqual ( " 1.0 mins " , c. string ( from: 60 ) )
129
+ XCTAssertEqual ( " 1.0 mins " , c. string ( from: 61 ) )
130
+ XCTAssertEqual ( " 1.5 mins " , c. string ( from: 89 ) )
131
+
132
+ XCTAssertEqual ( " 1.0 hrs " , c. string ( from: 3600 ) )
133
+ XCTAssertEqual ( " 1.5 hrs " , c. string ( from: 5400 ) )
134
+ XCTAssertEqual ( " 2.0 hrs " , c. string ( from: 7200 ) )
135
+ }
136
+
96
137
func testPluralFull( ) {
97
138
let c = TimeCompactor ( ifZero: nil , style: . full)
98
139
@@ -167,6 +208,55 @@ class TimeCompactorTests: XCTestCase {
167
208
XCTAssertEqual ( " 3818ky " , c. string ( from: 120_500_000_000_000 ) )
168
209
}
169
210
211
+ func testMedium( ) {
212
+ let c = TimeCompactor ( ifZero: nil , style: . medium)
213
+
214
+ XCTAssertEqual ( " -3818 kys " , c. string ( from: - 120_500_000_000_000 ) )
215
+ XCTAssertEqual ( " -3.8 kys " , c. string ( from: - 120_500_000_000 ) )
216
+ XCTAssertEqual ( " -3.3 cents " , c. string ( from: - 10_500_000_000 ) )
217
+ XCTAssertEqual ( " -3.8 yrs " , c. string ( from: - 120_500_000 ) )
218
+ XCTAssertEqual ( " -1.4 days " , c. string ( from: - 120_500 ) )
219
+ XCTAssertEqual ( " -3.3 hrs " , c. string ( from: - 12050 ) )
220
+ XCTAssertEqual ( " -2.0 mins " , c. string ( from: - 120.50 ) )
221
+ XCTAssertEqual ( " -12.0 secs " , c. string ( from: - 12.050 ) )
222
+
223
+ XCTAssertEqual ( " -1.5 secs " , c. string ( from: - 1.5 ) )
224
+ XCTAssertEqual ( " -1.5 secs " , c. string ( from: - 1.49 ) )
225
+ XCTAssertEqual ( " -1.2 secs " , c. string ( from: - 1.250 ) )
226
+
227
+ XCTAssertEqual ( " -0.3 secs " , c. string ( from: - 0.251 ) )
228
+ XCTAssertEqual ( " -0.2 secs " , c. string ( from: - 0.250 ) )
229
+ XCTAssertEqual ( " -0.1 secs " , c. string ( from: - 0.051 ) )
230
+ XCTAssertEqual ( " 0.0 secs " , c. string ( from: - 0.050 ) )
231
+ XCTAssertEqual ( " 0.0 secs " , c. string ( from: 0.000 ) )
232
+ XCTAssertEqual ( " 0.0 secs " , c. string ( from: 0.050 ) )
233
+ XCTAssertEqual ( " 0.1 secs " , c. string ( from: 0.051 ) )
234
+ XCTAssertEqual ( " 0.2 secs " , c. string ( from: 0.250 ) )
235
+ XCTAssertEqual ( " 0.3 secs " , c. string ( from: 0.251 ) )
236
+ XCTAssertEqual ( " 0.5 secs " , c. string ( from: 0.499 ) )
237
+ XCTAssertEqual ( " 0.5 secs " , c. string ( from: 0.500 ) )
238
+
239
+ XCTAssertEqual ( " 0.5 secs " , c. string ( from: 0.501 ) )
240
+ XCTAssertEqual ( " 1.5 secs " , c. string ( from: 1.49 ) )
241
+ XCTAssertEqual ( " 1.5 secs " , c. string ( from: 1.5 ) )
242
+
243
+ XCTAssertEqual ( " 12.0 secs " , c. string ( from: 12.050 ) )
244
+ XCTAssertEqual ( " 12.1 secs " , c. string ( from: 12.051 ) )
245
+
246
+ XCTAssertEqual ( " 2.0 mins " , c. string ( from: 120.50 ) )
247
+ XCTAssertEqual ( " 2.0 mins " , c. string ( from: 120.51 ) )
248
+
249
+ XCTAssertEqual ( " 3.3 hrs " , c. string ( from: 12050 ) )
250
+
251
+ XCTAssertEqual ( " 1.4 days " , c. string ( from: 120_500 ) )
252
+
253
+ XCTAssertEqual ( " 3.8 yrs " , c. string ( from: 120_500_000 ) )
254
+
255
+ XCTAssertEqual ( " 3.8 kys " , c. string ( from: 120_500_000_000 ) )
256
+
257
+ XCTAssertEqual ( " 3818 kys " , c. string ( from: 120_500_000_000_000 ) )
258
+ }
259
+
170
260
func testFull( ) {
171
261
let c = TimeCompactor ( ifZero: nil , style: . full)
172
262
0 commit comments