apple_kit

Apple-native services for Radroots iOS and macOS apps
git clone https://radroots.dev/git/apple_kit.git
Log | Files | Refs | README

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 }