TeraNativeRecoveryScheduleTestStorage.swift (1357B)
1 import Foundation 2 @testable import TeraApp 3 4 actor NativeRecoveryScheduleTestStorage { 5 private var value = TeraNativeRecoverySchedule(author: String(repeating: "a", count: 64), revision: 0, after: nil) 6 7 func load() -> TeraNativeRecoverySchedule { 8 value 9 } 10 11 func advance(expected: TeraNativeRecoverySchedule, after: String?) throws -> TeraNativeRecoverySchedule { 12 guard expected == value else { throw TeraComposerAcknowledgment.unconfirmed } 13 value = .init(author: value.author, revision: value.revision + (value.after == after ? 0 : 1), after: after) 14 return value 15 } 16 } 17 18 extension TeraScopeBackend { 19 func nativeRecoverySchedule() async -> TeraNativeRecoverySchedule { 20 await recoveryScheduleStorage.load() 21 } 22 23 func advanceNativeRecoverySchedule(expected: TeraNativeRecoverySchedule, after: String?) async throws -> TeraNativeRecoverySchedule { 24 try await recoveryScheduleStorage.advance(expected: expected, after: after) 25 } 26 } 27 28 extension AddBackend { 29 func nativeRecoverySchedule() async -> TeraNativeRecoverySchedule { 30 await submissionBackend.recoveryScheduleStorage.load() 31 } 32 33 func advanceNativeRecoverySchedule(expected: TeraNativeRecoverySchedule, after: String?) async throws -> TeraNativeRecoverySchedule { 34 try await submissionBackend.recoveryScheduleStorage.advance(expected: expected, after: after) 35 } 36 }