Skip to content

Commit b27a673

Browse files
committed
Updated unit tests
1 parent 3199994 commit b27a673

5 files changed

Lines changed: 68 additions & 2 deletions

File tree

Tests/TimecodeKit-Unit-Tests/TestResource/Media Files/TimecodeTrack_29_97d_Start_00_00_00_00.mov renamed to Tests/TimecodeKit-Unit-Tests/TestResource/Media Files/TimecodeTrack_29_97d_Start_00-00-00-00.mov

File renamed without changes.

Tests/TimecodeKit-Unit-Tests/TestResource/Media Files/VideoTrack_29_97_Start_00_00_00_00.mp4 renamed to Tests/TimecodeKit-Unit-Tests/TestResource/Media Files/VideoTrack_29_97_Start-00-00-00-00.mp4

File renamed without changes.

Tests/TimecodeKit-Unit-Tests/TestResource/TestResource.swift

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,15 @@ enum TestResource: CaseIterable {
2020
)
2121

2222
static let timecodeTrack_29_97d_Start_00_00_00_00 = TestResource.File(
23-
name: "TimecodeTrack_29_97d_Start_00_00_00_00", ext: "mov", subFolder: "Media Files"
23+
name: "TimecodeTrack_29_97d_Start_00-00-00-00", ext: "mov", subFolder: "Media Files"
24+
)
25+
26+
static let videoAndTimecodeTrack_29_97i_Start_00_00_00_00 = TestResource.File(
27+
name: "VideoAndTimecodeTrack_29_97i_Start-00-00-00-00", ext: "mov", subFolder: "Media Files"
2428
)
2529

2630
static let videoTrack_29_97_Start_00_00_00_00 = TestResource.File(
27-
name: "VideoTrack_29_97_Start_00_00_00_00", ext: "mp4", subFolder: "Media Files"
31+
name: "VideoTrack_29_97_Start-00-00-00-00", ext: "mp4", subFolder: "Media Files"
2832
)
2933
}
3034

Tests/TimecodeKit-Unit-Tests/Unit Tests/AVFoundation Extensions/AVAsset Extensions Tests.swift

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ class AVAssetExtensions_Tests: XCTestCase {
1515
override func setUp() { }
1616
override func tearDown() { }
1717

18+
// MARK: - Start Elapsed Frames
19+
1820
func testReadStartElapsedFrames_23_976_A() throws {
1921
let url = try TestResource.timecodeTrack_23_976_Start_00_00_00_00.url()
2022
let asset = AVAsset(url: url)
@@ -31,6 +33,8 @@ class AVAssetExtensions_Tests: XCTestCase {
3133
XCTAssertEqual(startFrames, [84480])
3234
}
3335

36+
// MARK: - Start/Duration/End Timecode
37+
3438
func testReadTimecodes_23_976fps() throws {
3539
let frameRate: TimecodeFrameRate = ._23_976
3640
let url = try TestResource.timecodeTrack_23_976_Start_00_58_40_00.url()
@@ -119,6 +123,8 @@ class AVAssetExtensions_Tests: XCTestCase {
119123
[])
120124
}
121125

126+
// MARK: - TimecodeFrameRate
127+
122128
func testTimecodeFrameRate_23_976fps_A() throws {
123129
let url = try TestResource.timecodeTrack_23_976_Start_00_00_00_00.url()
124130
let asset = AVAsset(url: url)
@@ -155,6 +161,62 @@ class AVAssetExtensions_Tests: XCTestCase {
155161
XCTAssertEqual(asset.isTimecodeFrameRateDropFrame, false)
156162
XCTAssertEqual(frameRate, ._29_97)
157163
}
164+
165+
func testTimecodeFrameRate_29_97fps_from2997i() throws {
166+
let url = try TestResource.videoAndTimecodeTrack_29_97i_Start_00_00_00_00.url()
167+
let asset = AVAsset(url: url)
168+
let frameRate = try asset.timecodeFrameRate()
169+
XCTAssertEqual(asset.isTimecodeFrameRateDropFrame, false)
170+
XCTAssertEqual(frameRate, ._29_97)
171+
}
172+
173+
// MARK: - VideoFrameRate
174+
175+
/// Even though file has no video tracks, it infers video frame rate from the timecode track.
176+
func testVideoFrameRate_23_98p_A() throws {
177+
let url = try TestResource.timecodeTrack_23_976_Start_00_00_00_00.url()
178+
let asset = AVAsset(url: url)
179+
let frameRate = try asset.videoFrameRate()
180+
XCTAssertEqual(frameRate, ._23_98p)
181+
}
182+
183+
/// Even though file has no video tracks, it infers video frame rate from the timecode track.
184+
func testVideoFrameRate_23_98p_B() throws {
185+
let url = try TestResource.timecodeTrack_23_976_Start_00_58_40_00.url()
186+
let asset = AVAsset(url: url)
187+
let frameRate = try asset.videoFrameRate()
188+
XCTAssertEqual(frameRate, ._23_98p)
189+
}
190+
191+
/// Even though file has no video tracks, it infers video frame rate from the timecode track.
192+
func testVideoFrameRate_24p() throws {
193+
let url = try TestResource.timecodeTrack_24_Start_00_58_40_00.url()
194+
let asset = AVAsset(url: url)
195+
let frameRate = try asset.videoFrameRate()
196+
XCTAssertEqual(frameRate, ._24p)
197+
}
198+
199+
/// Even though file has no video tracks, it infers video frame rate from the timecode track.
200+
func testVideoFrameRate_29_97p_fromDrop() throws {
201+
let url = try TestResource.timecodeTrack_29_97d_Start_00_00_00_00.url()
202+
let asset = AVAsset(url: url)
203+
let frameRate = try asset.videoFrameRate()
204+
XCTAssertEqual(frameRate, ._29_97p)
205+
}
206+
207+
func testVideoFrameRate_29_97i() throws {
208+
let url = try TestResource.videoAndTimecodeTrack_29_97i_Start_00_00_00_00.url()
209+
let asset = AVAsset(url: url)
210+
let frameRate = try asset.videoFrameRate()
211+
XCTAssertEqual(frameRate, ._29_97i)
212+
}
213+
214+
func testVideoFrameRate_29_97p() throws {
215+
let url = try TestResource.videoTrack_29_97_Start_00_00_00_00.url()
216+
let asset = AVAsset(url: url)
217+
let frameRate = try asset.videoFrameRate()
218+
XCTAssertEqual(frameRate, ._29_97p)
219+
}
158220
}
159221

160222
#endif

0 commit comments

Comments
 (0)