diff --git a/Sources/XXMessengerClient/Messenger/Functors/MessengerCMix.swift b/Sources/XXMessengerClient/Messenger/Functors/MessengerCMix.swift new file mode 100644 index 0000000000000000000000000000000000000000..5543c048fde2b7a12ce261f7cf796adb2ddbc31f --- /dev/null +++ b/Sources/XXMessengerClient/Messenger/Functors/MessengerCMix.swift @@ -0,0 +1,22 @@ +import XXClient +import XCTestDynamicOverlay + +public struct MessengerCMix { + public var run: () -> CMix? + + public func callAsFunction() -> CMix? { + run() + } +} + +extension MessengerCMix { + public static func live(_ env: MessengerEnvironment) -> MessengerCMix { + MessengerCMix(run: env.ctx.getCMix) + } +} + +extension MessengerCMix { + public static let unimplemented = MessengerCMix( + run: XCTUnimplemented("\(Self.self)", placeholder: nil) + ) +} diff --git a/Sources/XXMessengerClient/Messenger/Functors/MessengerE2E.swift b/Sources/XXMessengerClient/Messenger/Functors/MessengerE2E.swift new file mode 100644 index 0000000000000000000000000000000000000000..cc1f8def702e95afdd0a26bc6259c15e934b3799 --- /dev/null +++ b/Sources/XXMessengerClient/Messenger/Functors/MessengerE2E.swift @@ -0,0 +1,22 @@ +import XXClient +import XCTestDynamicOverlay + +public struct MessengerE2E { + public var run: () -> E2E? + + public func callAsFunction() -> E2E? { + run() + } +} + +extension MessengerE2E { + public static func live(_ env: MessengerEnvironment) -> MessengerE2E { + MessengerE2E(run: env.ctx.getE2E) + } +} + +extension MessengerE2E { + public static let unimplemented = MessengerE2E( + run: XCTUnimplemented("\(Self.self)", placeholder: nil) + ) +} diff --git a/Sources/XXMessengerClient/Messenger/Functors/MessengerUD.swift b/Sources/XXMessengerClient/Messenger/Functors/MessengerUD.swift new file mode 100644 index 0000000000000000000000000000000000000000..c64ee6cf55db2ebcdc10959b00096e45953b48a6 --- /dev/null +++ b/Sources/XXMessengerClient/Messenger/Functors/MessengerUD.swift @@ -0,0 +1,22 @@ +import XXClient +import XCTestDynamicOverlay + +public struct MessengerUD { + public var run: () -> UserDiscovery? + + public func callAsFunction() -> UserDiscovery? { + run() + } +} + +extension MessengerUD { + public static func live(_ env: MessengerEnvironment) -> MessengerUD { + MessengerUD(run: env.ctx.getUD) + } +} + +extension MessengerUD { + public static let unimplemented = MessengerUD( + run: XCTUnimplemented("\(Self.self)", placeholder: nil) + ) +} diff --git a/Sources/XXMessengerClient/Messenger/Messenger.swift b/Sources/XXMessengerClient/Messenger/Messenger.swift index a477f7cc90ec06841b3d8820c28f8ed6eeaea9f8..12610bd6feae71b482627b9f617c4b51aa97e6e5 100644 --- a/Sources/XXMessengerClient/Messenger/Messenger.swift +++ b/Sources/XXMessengerClient/Messenger/Messenger.swift @@ -1,6 +1,9 @@ import XXClient public struct Messenger { + public var cMix: MessengerCMix + public var e2e: MessengerE2E + public var ud: MessengerUD public var isCreated: MessengerIsCreated public var create: MessengerCreate public var isLoaded: MessengerIsLoaded @@ -16,6 +19,9 @@ public struct Messenger { extension Messenger { public static func live(_ env: MessengerEnvironment) -> Messenger { Messenger( + cMix: .live(env), + e2e: .live(env), + ud: .live(env), isCreated: .live(env), create: .live(env), isLoaded: .live(env), @@ -32,6 +38,9 @@ extension Messenger { extension Messenger { public static let unimplemented = Messenger( + cMix: .unimplemented, + e2e: .unimplemented, + ud: .unimplemented, isCreated: .unimplemented, create: .unimplemented, isLoaded: .unimplemented, diff --git a/Tests/XXMessengerClientTests/Messenger/Functors/MessengerCMixTests.swift b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerCMixTests.swift new file mode 100644 index 0000000000000000000000000000000000000000..f4327a08177ab4ec3c2b6eca9341859813fa83ae --- /dev/null +++ b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerCMixTests.swift @@ -0,0 +1,21 @@ +import XCTest +import XXClient +@testable import XXMessengerClient + +final class MessengerCMixTests: XCTestCase { + func testCMix() throws { + var env: MessengerEnvironment = .unimplemented + env.ctx.getCMix = { .unimplemented } + let cMix: MessengerCMix = .live(env) + + XCTAssertNotNil(cMix()) + } + + func testCMixWhenNotSet() throws { + var env: MessengerEnvironment = .unimplemented + env.ctx.getCMix = { nil } + let cMix: MessengerCMix = .live(env) + + XCTAssertNil(cMix()) + } +} diff --git a/Tests/XXMessengerClientTests/Messenger/Functors/MessengerE2ETests.swift b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerE2ETests.swift new file mode 100644 index 0000000000000000000000000000000000000000..bb54fb78ded08e309cd53f4278fe6e0e0ec6378d --- /dev/null +++ b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerE2ETests.swift @@ -0,0 +1,21 @@ +import XCTest +import XXClient +@testable import XXMessengerClient + +final class MessengerE2ETests: XCTestCase { + func testE2E() throws { + var env: MessengerEnvironment = .unimplemented + env.ctx.getE2E = { .unimplemented } + let e2e: MessengerE2E = .live(env) + + XCTAssertNotNil(e2e()) + } + + func testE2EWhenNotSet() throws { + var env: MessengerEnvironment = .unimplemented + env.ctx.getE2E = { nil } + let e2e: MessengerE2E = .live(env) + + XCTAssertNil(e2e()) + } +} diff --git a/Tests/XXMessengerClientTests/Messenger/Functors/MessengerUDTests.swift b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerUDTests.swift new file mode 100644 index 0000000000000000000000000000000000000000..0166a8bb2f5b01fccef13fe9b68a1e2f78376cef --- /dev/null +++ b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerUDTests.swift @@ -0,0 +1,21 @@ +import XCTest +import XXClient +@testable import XXMessengerClient + +final class MessengerUDTests: XCTestCase { + func testUD() throws { + var env: MessengerEnvironment = .unimplemented + env.ctx.getE2E = { .unimplemented } + let e2e: MessengerE2E = .live(env) + + XCTAssertNotNil(e2e()) + } + + func testE2EWhenNotSet() throws { + var env: MessengerEnvironment = .unimplemented + env.ctx.getE2E = { nil } + let e2e: MessengerE2E = .live(env) + + XCTAssertNil(e2e()) + } +}