File tree Expand file tree Collapse file tree 3 files changed +29
-11
lines changed
Sources/DIContainer/Module
Tests/DIContainerTests/Tests Expand file tree Collapse file tree 3 files changed +29
-11
lines changed Original file line number Diff line number Diff line change @@ -2,6 +2,10 @@ import Foundation
22
33open class AutoModuleBase {
44 public required init ( ) { }
5+
6+ fileprivate func __newInstance( ) -> Self {
7+ Self ( )
8+ }
59}
610
711public protocol AutoModulable : AnyObject {
@@ -11,10 +15,17 @@ public protocol AutoModulable: AnyObject {
1115public typealias AutoModule = AutoModuleBase & AutoModulable
1216
1317#if DEBUG
14- public extension AutoModulable {
18+ extension AutoModulable {
1519 var module : Module ? {
16- ( self as? ModuleKeyType . Value)
17- . map { instance in Module ( ModuleKeyType . self) { instance } }
20+ guard
21+ let instance = self as? ModuleKeyType . Value ,
22+ let autoModuleBase = instance as? AutoModuleBase
23+ else { return nil }
24+
25+ return Module ( ModuleKeyType . self) {
26+ ( autoModuleBase. __newInstance ( ) as? ModuleKeyType . Value)
27+ ?? instance
28+ }
1829 }
1930}
2031#endif
Original file line number Diff line number Diff line change 11//
2- // CachedModuleTests .swift
2+ // AutoModuleIsNotCachedTests .swift
33// DIContainer
44//
55// Created by minsOne on 1/23/25.
@@ -11,13 +11,13 @@ import Testing
1111
1212@MainActor
1313@Suite ( . serialized)
14- struct CachedModuleTests {
14+ struct AutoModuleIsNotCachedTests {
1515 init ( ) {
1616 Container . autoRegisterModules ( )
1717 }
1818}
1919
20- extension CachedModuleTests {
20+ extension AutoModuleIsNotCachedTests {
2121 @Test
2222 func cachedModule( ) throws {
2323 let service1 = getMockService ( )
@@ -32,7 +32,7 @@ extension CachedModuleTests {
3232 service2. doSomething ( )
3333 do {
3434 let service = try #require( service2 as? MockServiceImpl )
35- #expect( service. count = = 2 )
35+ #expect( service. count ! = 2 )
3636 }
3737 }
3838
@@ -59,7 +59,7 @@ extension CachedModuleTests {
5959 }
6060}
6161
62- extension CachedModuleTests {
62+ private extension AutoModuleIsNotCachedTests {
6363 func getMockService( ) -> MockService {
6464 @Inject ( MockServiceKey . self) var service
6565 return service
Original file line number Diff line number Diff line change @@ -36,8 +36,15 @@ extension ContainerTests {
3636 }
3737
3838 private func injectBehavior( ) {
39- @Inject ( MockServiceKey . self) var service : MockService
40- service. doSomething ( )
41- #expect( ( service as? MockServiceImpl ) ? . count == 1 )
39+ @Inject ( MockServiceKey . self) var service1 : MockService
40+ service1. doSomething ( )
41+ #expect( ( service1 as? MockServiceImpl ) ? . count == 1 )
42+
43+ service1. doSomething ( )
44+ #expect( ( service1 as? MockServiceImpl ) ? . count == 2 )
45+
46+ @Inject ( MockServiceKey . self) var service2 : MockService
47+ service2. doSomething ( )
48+ #expect( ( service2 as? MockServiceImpl ) ? . count == 1 )
4249 }
4350}
You can’t perform that action at this time.
0 commit comments