Skip to content

Commit 2eeb8a7

Browse files
added tests for new feature
1 parent 5f5be0c commit 2eeb8a7

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed

mParticle-Apple-Media-SDKTests/mParticle_Apple_MediaTests.swift

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,73 @@ class mParticle_Apple_MediaTests: XCTestCase, MPListenerProtocol {
413413
mediaSession?.logAdBreakEnd()
414414
self.waitForExpectations(timeout: defaultTimeout, handler: nil)
415415
}
416+
417+
func testAdBreakExclusionDisabledDoesNotPauseContentTime() {
418+
let adBreak = MPMediaAdBreak(title: "foo adbreak title", id: "12345")
419+
mediaSession?.excludeAdBreaksFromContentTime = false
420+
421+
// Start content playback and accumulate 0.2s before the ad break
422+
XCTAssertEqual(mediaSession!.mediaContentTimeSpent, 0)
423+
mediaSession?.logPlay()
424+
Thread.sleep(forTimeInterval: 0.2)
425+
426+
XCTAssertNotNil(mediaSession?.currentPlaybackStartTimestamp)
427+
XCTAssertEqual(mediaSession!.mediaContentTimeSpent, 0.2, accuracy: 0.08)
428+
429+
// 0.2s should count toward content time.
430+
mediaSession?.logAdBreakStart(adBreak: adBreak)
431+
Thread.sleep(forTimeInterval: 0.2)
432+
433+
XCTAssertEqual(mediaSession!.mediaContentTimeSpent, 0.4, accuracy: 0.08)
434+
435+
mediaSession?.logAdBreakEnd()
436+
XCTAssertNil(mediaSession?.adBreak)
437+
438+
mediaSession?.logPause()
439+
440+
XCTAssertEqual(mediaSession!.mediaContentTimeSpent, 0.4, accuracy: 0.08)
441+
XCTAssertNil(mediaSession?.currentPlaybackStartTimestamp)
442+
}
443+
444+
func testAdBreakExclusionEnabledExcludesAdTime() {
445+
let adBreak = MPMediaAdBreak(title: "foo adbreak title", id: "12345")
446+
mediaSession?.excludeAdBreaksFromContentTime = true
447+
448+
// Start content playback and accumulate 0.2s before the ad break
449+
XCTAssertEqual(mediaSession!.mediaContentTimeSpent, 0)
450+
mediaSession?.logPlay()
451+
Thread.sleep(forTimeInterval: 0.2)
452+
453+
XCTAssertNotNil(mediaSession?.currentPlaybackStartTimestamp)
454+
XCTAssertEqual(mediaSession!.storedPlaybackTime, 0)
455+
XCTAssertEqual(mediaSession!.mediaContentTimeSpent, 0.2, accuracy: 0.08)
456+
457+
// Start ad break content time should pause & be stored
458+
mediaSession?.logAdBreakStart(adBreak: adBreak)
459+
Thread.sleep(forTimeInterval: 0.2)
460+
461+
// Content tracking paused: playhead cleared, stored captured 0.2s
462+
XCTAssertEqual(mediaSession!.storedPlaybackTime, mediaSession!.mediaContentTimeSpent)
463+
XCTAssertEqual(mediaSession!.mediaContentTimeSpent, 0.2, accuracy: 0.08)
464+
XCTAssertNil(mediaSession?.currentPlaybackStartTimestamp)
465+
466+
// End ad break auto-resume content tracking
467+
mediaSession?.logAdBreakEnd()
468+
Thread.sleep(forTimeInterval: 0.2)
469+
470+
XCTAssertEqual(mediaSession!.storedPlaybackTime, 0.2, accuracy: 0.08)
471+
XCTAssertEqual(mediaSession!.mediaContentTimeSpent, 0.4, accuracy: 0.08)
472+
XCTAssertNotNil(mediaSession?.currentPlaybackStartTimestamp)
473+
XCTAssertNil(mediaSession?.adBreak)
474+
475+
// Watch a bit more content after the ad
476+
Thread.sleep(forTimeInterval: 0.2)
477+
478+
mediaSession?.logPause()
479+
480+
XCTAssertEqual(mediaSession!.mediaContentTimeSpent, 0.6, accuracy: 0.08)
481+
XCTAssertNil(mediaSession?.currentPlaybackStartTimestamp)
482+
}
416483

417484
func testLogSegmentStart() {
418485
let segment = MPMediaSegment(title: "foo segment title", index: 3, duration: 30000)

0 commit comments

Comments
 (0)