@@ -47,6 +47,29 @@ class TimeCompactorTests: XCTestCase {
4747 XCTAssertEqual ( " -12.0s " , c. string ( from: - 12.050 ) )
4848 }
4949
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+
5073 func testWholeNumberFull( ) {
5174 let c = TimeCompactor ( ifZero: nil , style: . full, roundSmallToWhole: true )
5275
@@ -93,6 +116,24 @@ class TimeCompactorTests: XCTestCase {
93116 XCTAssertEqual ( " 2h " , c. string ( from: 5400 ) ) // 1.5 hours
94117 }
95118
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+
96137 func testPluralFull( ) {
97138 let c = TimeCompactor ( ifZero: nil , style: . full)
98139
@@ -167,6 +208,55 @@ class TimeCompactorTests: XCTestCase {
167208 XCTAssertEqual ( " 3818ky " , c. string ( from: 120_500_000_000_000 ) )
168209 }
169210
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+
170260 func testFull( ) {
171261 let c = TimeCompactor ( ifZero: nil , style: . full)
172262
0 commit comments