RadrootsCaptureIntakeTesting.swift (4667B)
1 import Foundation 2 import RadrootsKit 3 4 public actor RadrootsFakeMediaPicker: RadrootsMediaPicker { 5 private var support: RadrootsMediaPickerSupport 6 private var importOutcome: Result<RadrootsMediaImportResult, RadrootsCaptureIntakeError> 7 private var captureOutcome: Result<RadrootsMediaCaptureResult, RadrootsCaptureIntakeError> 8 private var importRequestCountValue: Int 9 private var captureRequestCountValue: Int 10 private var supportRequestCountValue: Int 11 private var lastImportRequestValue: RadrootsMediaImportRequest? 12 private var lastCaptureRequestValue: RadrootsMediaCaptureRequest? 13 14 public init( 15 support: RadrootsMediaPickerSupport, 16 importOutcome: Result<RadrootsMediaImportResult, RadrootsCaptureIntakeError>, 17 captureOutcome: Result<RadrootsMediaCaptureResult, RadrootsCaptureIntakeError> 18 ) { 19 self.support = support 20 self.importOutcome = importOutcome 21 self.captureOutcome = captureOutcome 22 self.importRequestCountValue = 0 23 self.captureRequestCountValue = 0 24 self.supportRequestCountValue = 0 25 self.lastImportRequestValue = nil 26 self.lastCaptureRequestValue = nil 27 } 28 29 public func setSupport(_ support: RadrootsMediaPickerSupport) { 30 self.support = support 31 } 32 33 public func setImportOutcome(_ outcome: Result<RadrootsMediaImportResult, RadrootsCaptureIntakeError>) { 34 self.importOutcome = outcome 35 } 36 37 public func setCaptureOutcome(_ outcome: Result<RadrootsMediaCaptureResult, RadrootsCaptureIntakeError>) { 38 self.captureOutcome = outcome 39 } 40 41 public func currentSupport() async throws -> RadrootsMediaPickerSupport { 42 supportRequestCountValue += 1 43 return support 44 } 45 46 public func importMedia(_ request: RadrootsMediaImportRequest) async throws -> RadrootsMediaImportResult { 47 importRequestCountValue += 1 48 lastImportRequestValue = request 49 switch importOutcome { 50 case .success(let result): 51 return result 52 case .failure(let error): 53 throw error 54 } 55 } 56 57 public func captureMedia(_ request: RadrootsMediaCaptureRequest) async throws -> RadrootsMediaCaptureResult { 58 captureRequestCountValue += 1 59 lastCaptureRequestValue = request 60 switch captureOutcome { 61 case .success(let result): 62 return result 63 case .failure(let error): 64 throw error 65 } 66 } 67 68 public var supportRequestCount: Int { 69 supportRequestCountValue 70 } 71 72 public var importRequestCount: Int { 73 importRequestCountValue 74 } 75 76 public var captureRequestCount: Int { 77 captureRequestCountValue 78 } 79 80 public var lastImportRequest: RadrootsMediaImportRequest? { 81 lastImportRequestValue 82 } 83 84 public var lastCaptureRequest: RadrootsMediaCaptureRequest? { 85 lastCaptureRequestValue 86 } 87 } 88 89 public actor RadrootsFakeDocumentScanner: RadrootsDocumentScanner { 90 private var support: RadrootsDocumentScannerSupport 91 private var scanOutcome: Result<RadrootsScannedDocument, RadrootsCaptureIntakeError> 92 private var supportRequestCountValue: Int 93 private var scanRequestCountValue: Int 94 private var lastScanRequestValue: RadrootsDocumentScanRequest? 95 96 public init( 97 support: RadrootsDocumentScannerSupport, 98 scanOutcome: Result<RadrootsScannedDocument, RadrootsCaptureIntakeError> 99 ) { 100 self.support = support 101 self.scanOutcome = scanOutcome 102 self.supportRequestCountValue = 0 103 self.scanRequestCountValue = 0 104 self.lastScanRequestValue = nil 105 } 106 107 public func setSupport(_ support: RadrootsDocumentScannerSupport) { 108 self.support = support 109 } 110 111 public func setScanOutcome(_ outcome: Result<RadrootsScannedDocument, RadrootsCaptureIntakeError>) { 112 self.scanOutcome = outcome 113 } 114 115 public func currentSupport() async throws -> RadrootsDocumentScannerSupport { 116 supportRequestCountValue += 1 117 return support 118 } 119 120 public func scanDocument(_ request: RadrootsDocumentScanRequest) async throws -> RadrootsScannedDocument { 121 scanRequestCountValue += 1 122 lastScanRequestValue = request 123 switch scanOutcome { 124 case .success(let document): 125 return document 126 case .failure(let error): 127 throw error 128 } 129 } 130 131 public var supportRequestCount: Int { 132 supportRequestCountValue 133 } 134 135 public var scanRequestCount: Int { 136 scanRequestCountValue 137 } 138 139 public var lastScanRequest: RadrootsDocumentScanRequest? { 140 lastScanRequestValue 141 } 142 }