Files
Luma/Tests/VideoNoteRecordingCompletionPolicyTests.swift
T
2026-07-30 20:07:51 +07:00

81 lines
2.5 KiB
Swift

import AVFoundation
import XCTest
@testable import Luma
final class VideoNoteRecordingCompletionPolicyTests: XCTestCase {
func testNilErrorKeepsRecording() {
XCTAssertTrue(VideoNoteRecordingCompletionPolicy.shouldKeepOutput(for: nil))
}
func testSuccessfulFinishedFlagKeepsRecordingDespiteError() {
let error = NSError(
domain: AVFoundationErrorDomain,
code: -11_800,
userInfo: [AVErrorRecordingSuccessfullyFinishedKey: true]
)
XCTAssertTrue(VideoNoteRecordingCompletionPolicy.shouldKeepOutput(for: error))
}
func testFailedFinishedFlagRejectsRecording() {
let error = NSError(
domain: AVFoundationErrorDomain,
code: -11_800,
userInfo: [AVErrorRecordingSuccessfullyFinishedKey: false]
)
XCTAssertFalse(VideoNoteRecordingCompletionPolicy.shouldKeepOutput(for: error))
}
func testNSNumberSuccessfulFinishedFlagKeepsRecording() {
let error = NSError(
domain: AVFoundationErrorDomain,
code: -11_800,
userInfo: [AVErrorRecordingSuccessfullyFinishedKey: NSNumber(value: true)]
)
XCTAssertTrue(VideoNoteRecordingCompletionPolicy.shouldKeepOutput(for: error))
}
func testMaximumDurationStillKeepsRecording() {
let error = NSError(
domain: AVFoundationErrorDomain,
code: AVError.Code.maximumDurationReached.rawValue
)
XCTAssertTrue(VideoNoteRecordingCompletionPolicy.shouldKeepOutput(for: error))
}
func testExplicitStopAllowsCompletedRecordingToSend() {
XCTAssertTrue(VideoNoteRecordingCompletionPolicy.wasRequestedOrReachedLimit(
stopRequested: true,
error: nil,
recordedDuration: 3,
maximumDuration: 60
))
}
func testUnexpectedCameraCompletionDoesNotSendPartialRecording() {
XCTAssertFalse(VideoNoteRecordingCompletionPolicy.wasRequestedOrReachedLimit(
stopRequested: false,
error: nil,
recordedDuration: 3,
maximumDuration: 60
))
}
func testAutomaticMaximumDurationCompletionMaySend() {
let error = NSError(
domain: AVFoundationErrorDomain,
code: AVError.Code.maximumDurationReached.rawValue
)
XCTAssertTrue(VideoNoteRecordingCompletionPolicy.wasRequestedOrReachedLimit(
stopRequested: false,
error: error,
recordedDuration: 59.8,
maximumDuration: 60
))
}
}