@@ -285,6 +285,57 @@ class Timecode_UT_DI_String_Tests: XCTestCase {
285
285
XCTAssertEqual ( try Timecode . decode ( timecode: " 12:01:56:45;23 " ) ,
286
286
TCC ( d: 12 , h: 01 , m: 56 , s: 45 , f: 23 , sf: 0 ) )
287
287
288
+ // all semicolons (such as from Adobe Premiere in its XMP format)
289
+
290
+ XCTAssertEqual ( try Timecode . decode ( timecode: " 0;0;0;0 " ) ,
291
+ TCC ( d: 0 , h: 00 , m: 00 , s: 00 , f: 00 , sf: 00 ) )
292
+
293
+ XCTAssertEqual ( try Timecode . decode ( timecode: " 0;00;00;00 " ) ,
294
+ TCC ( d: 0 , h: 00 , m: 00 , s: 00 , f: 00 , sf: 00 ) )
295
+
296
+ XCTAssertEqual ( try Timecode . decode ( timecode: " 00;00;00;00 " ) ,
297
+ TCC ( d: 0 , h: 00 , m: 00 , s: 00 , f: 00 , sf: 00 ) )
298
+
299
+ XCTAssertEqual ( try Timecode . decode ( timecode: " 1;56;45;23 " ) ,
300
+ TCC ( d: 0 , h: 01 , m: 56 , s: 45 , f: 23 , sf: 00 ) )
301
+
302
+ XCTAssertEqual ( try Timecode . decode ( timecode: " 01;56;45;23 " ) ,
303
+ TCC ( d: 0 , h: 01 , m: 56 , s: 45 , f: 23 , sf: 00 ) )
304
+
305
+ XCTAssertEqual ( try Timecode . decode ( timecode: " 3 01;56;45;23 " ) ,
306
+ TCC ( d: 3 , h: 01 , m: 56 , s: 45 , f: 23 , sf: 00 ) )
307
+
308
+ XCTAssertEqual ( try Timecode . decode ( timecode: " 12 01;56;45;23 " ) ,
309
+ TCC ( d: 12 , h: 1 , m: 56 , s: 45 , f: 23 , sf: 00 ) )
310
+
311
+ XCTAssertEqual ( try Timecode . decode ( timecode: " 12;01;56;45;23 " ) ,
312
+ TCC ( d: 12 , h: 1 , m: 56 , s: 45 , f: 23 , sf: 00 ) )
313
+
314
+ // drop frame
315
+
316
+ XCTAssertEqual ( try Timecode . decode ( timecode: " 0:0:0;0 " ) ,
317
+ TCC ( d: 0 , h: 00 , m: 00 , s: 00 , f: 00 , sf: 00 ) )
318
+
319
+ XCTAssertEqual ( try Timecode . decode ( timecode: " 0:00:00;00 " ) ,
320
+ TCC ( d: 0 , h: 00 , m: 00 , s: 00 , f: 00 , sf: 00 ) )
321
+
322
+ XCTAssertEqual ( try Timecode . decode ( timecode: " 00:00:00;00 " ) ,
323
+ TCC ( d: 0 , h: 00 , m: 00 , s: 00 , f: 00 , sf: 00 ) )
324
+
325
+ XCTAssertEqual ( try Timecode . decode ( timecode: " 1:56:45;23 " ) ,
326
+ TCC ( d: 0 , h: 01 , m: 56 , s: 45 , f: 23 , sf: 0 ) )
327
+
328
+ XCTAssertEqual ( try Timecode . decode ( timecode: " 01:56:45;23 " ) ,
329
+ TCC ( d: 0 , h: 01 , m: 56 , s: 45 , f: 23 , sf: 0 ) )
330
+
331
+ XCTAssertEqual ( try Timecode . decode ( timecode: " 3 01:56:45;23 " ) ,
332
+ TCC ( d: 3 , h: 01 , m: 56 , s: 45 , f: 23 , sf: 0 ) )
333
+
334
+ XCTAssertEqual ( try Timecode . decode ( timecode: " 12 01:56:45;23 " ) ,
335
+ TCC ( d: 12 , h: 01 , m: 56 , s: 45 , f: 23 , sf: 0 ) )
336
+
337
+ XCTAssertEqual ( try Timecode . decode ( timecode: " 12:01:56:45;23 " ) ,
338
+ TCC ( d: 12 , h: 01 , m: 56 , s: 45 , f: 23 , sf: 0 ) )
288
339
289
340
// all periods - not supporting this.
290
341
@@ -320,6 +371,30 @@ class Timecode_UT_DI_String_Tests: XCTestCase {
320
371
XCTAssertEqual ( try Timecode . decode ( timecode: " 12:01:56:45:23.05 " ) ,
321
372
TCC ( d: 12 , h: 01 , m: 56 , s: 45 , f: 23 , sf: 05 ) )
322
373
374
+ // subframes
375
+ // all semicolons (such as from Adobe Premiere in its XMP format)
376
+
377
+ XCTAssertEqual ( try Timecode . decode ( timecode: " 0;00;00;00.05 " ) ,
378
+ TCC ( d: 0 , h: 00 , m: 00 , s: 00 , f: 00 , sf: 05 ) )
379
+
380
+ XCTAssertEqual ( try Timecode . decode ( timecode: " 00;00;00;00.05 " ) ,
381
+ TCC ( d: 0 , h: 00 , m: 00 , s: 00 , f: 00 , sf: 05 ) )
382
+
383
+ XCTAssertEqual ( try Timecode . decode ( timecode: " 1;56;45;23.05 " ) ,
384
+ TCC ( d: 0 , h: 01 , m: 56 , s: 45 , f: 23 , sf: 05 ) )
385
+
386
+ XCTAssertEqual ( try Timecode . decode ( timecode: " 01;56;45;23.05 " ) ,
387
+ TCC ( d: 0 , h: 01 , m: 56 , s: 45 , f: 23 , sf: 05 ) )
388
+
389
+ XCTAssertEqual ( try Timecode . decode ( timecode: " 3 01;56;45;23.05 " ) ,
390
+ TCC ( d: 3 , h: 01 , m: 56 , s: 45 , f: 23 , sf: 05 ) )
391
+
392
+ XCTAssertEqual ( try Timecode . decode ( timecode: " 12 01;56;45;23.05 " ) ,
393
+ TCC ( d: 12 , h: 01 , m: 56 , s: 45 , f: 23 , sf: 05 ) )
394
+
395
+ XCTAssertEqual ( try Timecode . decode ( timecode: " 12;01;56;45;23.05 " ) ,
396
+ TCC ( d: 12 , h: 01 , m: 56 , s: 45 , f: 23 , sf: 05 ) )
397
+
323
398
}
324
399
325
400
// MARK: - .toTimecode()
0 commit comments