1 @testable import ABI49_0_0ExpoModulesCore
2 
3 class UnnamedModule: Module {
definitionnull4   func definition() -> ModuleDefinition {}
5 }
6 
7 class NamedModule: Module {
8   static let namedModuleName = "MyModule"
9 
definitionnull10   func definition() -> ModuleDefinition {
11     Name(Self.namedModuleName)
12   }
13 }
14 
15 class CustomModule: Module {
16   let body: MockedDefinitionFunc
17 
definitionnull18   func definition() -> ModuleDefinition {
19     return body(self)
20   }
21 
22   init(appContext: AppContext, _ body: @escaping MockedDefinitionFunc) {
23     self.body = body
24     super.init(appContext: appContext)
25   }
26 
27   required init(appContext: AppContext) {
28     fatalError("`init(appContext:)` is unavailable in mocked module class.")
29   }
30 }
31 
32 typealias MockedDefinitionFunc = (CustomModule) -> ModuleDefinition
33 
34 func mockModuleHolder(_ appContext: AppContext, @ModuleDefinitionBuilder _ definitionBody: @escaping () -> ModuleDefinition) -> ModuleHolder {
35   return ModuleHolder(appContext: appContext, module: CustomModule(appContext: appContext, { _ in definitionBody() }))
36 }
37 
38 func mockModuleHolder(_ appContext: AppContext, @ModuleDefinitionBuilder _ definitionBody: @escaping (CustomModule) -> ModuleDefinition) -> ModuleHolder {
39   return ModuleHolder(appContext: appContext, module: CustomModule(appContext: appContext, { module in definitionBody(module) }))
40 }
41