Skip to content

Commit 46573ef

Browse files
committed
fixed test code
1 parent a2a899f commit 46573ef

File tree

9 files changed

+89
-93
lines changed

9 files changed

+89
-93
lines changed

.github/workflows/ci.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,12 @@ jobs:
1111
CODECOV_PACKAGE_NAME: DIContainer
1212

1313
steps:
14-
- uses: actions/checkout@v1
14+
- uses: actions/checkout@v4
15+
- name: Select Xcode 16.0
16+
run: sudo xcode-select -s /Applications/Xcode_16.0.app
1517
- name: Build and Test
1618
run: |
17-
set -o pipefail && swift test --no-parallel --enable-code-coverage | xcpretty -c;
19+
set -o pipefail && swift test --enable-code-coverage | xcpretty -c;
1820
1921
- name: Upload Code Coverage
2022
run: |

Sources/DIContainer/Container/Container.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ extension Container {
4949
static func weakResolve<T, U: InjectionKeyType>(for type: U.Type) -> T? {
5050
root.module(type)?.resolve() as? T
5151
}
52+
53+
/// Check if the dependency is registered in the container.
54+
static func isRegistered<T: InjectionKeyType>(_ type: T.Type) -> Bool {
55+
root.module(type) != nil
56+
}
5257

5358
func module<T: InjectionKeyType>(_ type: T.Type) -> Module? {
5459
let keyName = KeyName(type).name
@@ -96,7 +101,7 @@ public extension Container {
96101
@MainActor
97102
public extension Container {
98103
static func clear() {
99-
root.modules.removeAll()
104+
root = .init()
100105
}
101106
}
102107

Tests/DIContainerTests/Helper/Helper.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ import Foundation
55
extension InjectionKeyType {
66
@MainActor
77
static var module: Module? {
8-
return Container.root.module(Self.self)
8+
Container.root.module(Self.self)
99
}
1010
}

Tests/DIContainerTests/Tests/AutoModuleIsNotCachedTests.swift

Lines changed: 0 additions & 70 deletions
This file was deleted.

Tests/DIContainerTests/Tests/Inject/WeakInjectNilTests.swift

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,33 +6,31 @@ import XCTest
66
@MainActor
77
@Suite(.serialized)
88
struct WeakInjectNilTest {
9-
init() {
10-
Container().build()
11-
}
12-
}
13-
14-
extension WeakInjectNilTest {
159
@Test
1610
func containerDoesNotContainWeakMockService() {
11+
Container.clear()
12+
1713
// When
1814
let weakMockService = WeakMockServiceKey.module?.resolve()
1915
let weakMockServiceImpl = WeakMockServiceKey.module?.resolve() as? WeakMockServiceKey.Value
2016
let weakMockServiceProtocol = WeakMockServiceKey.module?.resolve() as? WeakMockService
2117

2218
// Then
23-
XCTAssertNil(weakMockService)
24-
XCTAssertNil(weakMockServiceImpl)
25-
XCTAssertNil(weakMockServiceProtocol)
19+
#expect(weakMockService == nil)
20+
#expect(weakMockServiceImpl == nil)
21+
#expect(weakMockServiceProtocol == nil)
2622
}
2723

2824
@Test
2925
func weakInjectReturnsNil() {
26+
Container.clear()
27+
3028
// When
3129
@WeakInject(WeakMockServiceKey.self) var service1
3230
@WeakInject(WeakMockServiceKey.self) var service2: WeakMockService?
3331

3432
// Then
35-
XCTAssertNil(service1)
36-
XCTAssertNil(service2)
33+
#expect(service1 == nil)
34+
#expect(service2 == nil)
3735
}
3836
}

Tests/DIContainerTests/Tests/Inject/WeakInjectTests.swift

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import XCTest
55

66
@MainActor
77
@Suite(.serialized)
8-
struct WeakInjectTest {
9-
init() {
8+
class WeakInjectTest {
9+
func registerContainer() {
1010
// Given
1111
Container {
1212
Module(WeakMockServiceKey.self) { WeakMockServiceImpl() }
@@ -20,6 +20,9 @@ struct WeakInjectTest {
2020
extension WeakInjectTest {
2121
@Test
2222
func containerRegistration1() {
23+
// given
24+
registerContainer()
25+
2326
// When
2427
let weakMockService = WeakMockServiceKey.module?.resolve()
2528
let weakMockServiceImpl = WeakMockServiceKey.module?.resolve() as? WeakMockServiceKey.Value
@@ -33,6 +36,9 @@ extension WeakInjectTest {
3336

3437
@Test
3538
func containerRegistration2() throws {
39+
// given
40+
registerContainer()
41+
3642
// When
3743
@WeakInject(WeakMockServiceKey.self) var service1
3844
@WeakInject(MockServiceKey.self) var service2
@@ -44,8 +50,22 @@ extension WeakInjectTest {
4450
#expect(factory != nil)
4551
}
4652

53+
@Test
54+
func containerRegistration3() throws {
55+
// given
56+
registerContainer()
57+
58+
// Then
59+
#expect(Container.isRegistered(WeakMockServiceKey.self))
60+
#expect(Container.isRegistered(MockServiceKey.self))
61+
#expect(Container.isRegistered(MockServiceFactoryKey.self))
62+
}
63+
4764
@Test
4865
func weakInjectBehavior1() throws {
66+
// given
67+
registerContainer()
68+
4969
// When
5070
@WeakInject(WeakMockServiceKey.self) var _service1: WeakMockService?
5171
@WeakInject(MockServiceKey.self) var _service2: MockService?
@@ -74,6 +94,9 @@ extension WeakInjectTest {
7494

7595
@Test
7696
func weakInjectBehavior2() throws {
97+
// given
98+
registerContainer()
99+
77100
// When
78101
@WeakInject(WeakMockServiceKey.self) var _service1
79102
@WeakInject(MockServiceKey.self) var _service2
@@ -102,6 +125,9 @@ extension WeakInjectTest {
102125

103126
@Test
104127
func factoryBehavior() throws {
128+
// given
129+
registerContainer()
130+
105131
@WeakInject(MockServiceFactoryKey.self) var factory
106132
let _service1 = factory?.makeWeakService()
107133
let _service2 = factory?.makeWeakService()

Tests/DIContainerTests/Tests/ModuleListExtensionTests.swift

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,32 @@ import XCTest
66

77
@MainActor
88
@Suite(.serialized)
9-
struct ModuleListExtensionTest {}
9+
class ModuleListExtensionTest {
10+
var moduleList: [Module]
11+
12+
init() {
13+
moduleList = [
14+
Module(MockServiceFactory.self),
15+
Module(WeakMockServiceImpl.self),
16+
Module(MockServiceImpl.self),
17+
]
18+
}
19+
}
1020

1121
extension ModuleListExtensionTest {
1222
@Test
1323
func replaceOneModule() {
1424
// Given
1525
let newModule = Module(MockServiceKey.self) { Service1() }
16-
var moduleList = ModuleScanner().scanModuleList
17-
#expect(moduleList.count == 3)
1826

1927
// When
2028
moduleList = moduleList.replacing(newModule)
2129

2230
// Then
2331
#expect(moduleList.count == 3)
24-
#expect(moduleList.last?.name == newModule.name)
32+
let isContainNewModule = moduleList
33+
.contains { $0.name == newModule.name }
34+
#expect(isContainNewModule)
2535

2636
let service = moduleList.last?.resolve() as? Service1
2737
service?.doSomething()
@@ -34,8 +44,6 @@ extension ModuleListExtensionTest {
3444
// Given
3545
let newModule1 = Module(MockServiceKey.self) { Service1() }
3646
let newModule2 = Module(WeakMockServiceKey.self) { Service2() }
37-
var moduleList = ModuleScanner().scanModuleList
38-
#expect(moduleList.count == 3)
3947

4048
// When
4149
moduleList = moduleList.replacing(contentsOf: [newModule1, newModule2])

Tests/DIContainerTests/Tests/MachOLoaderTests.swift renamed to Tests/DIContainerTests/Tests/Scanner/MachOLoaderTests.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ extension MachOLoaderTests {
2424
}
2525
}
2626

27+
/**
2728
class ScannerPerformanceTests: XCTestCase {
2829
func test_MachOLoader() {
2930
measure {
@@ -39,3 +40,4 @@ class ScannerPerformanceTests: XCTestCase {
3940
}
4041
}
4142
}
43+
*/

Tests/DIContainerTests/Tests/ModuleScannerTests.swift renamed to Tests/DIContainerTests/Tests/Scanner/ModuleScannerTests.swift

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,3 +70,28 @@ extension ModuleScannerTest {
7070
}
7171
}
7272
}
73+
74+
extension ModuleScannerTest {
75+
@Test
76+
func generateNewInstanceFromContainer() throws {
77+
Container.autoRegisterModules()
78+
79+
let _service1 = getMockService()
80+
let _service2 = getMockService()
81+
82+
_service1.doSomething()
83+
let service1 = try #require(_service1 as? MockServiceImpl)
84+
#expect(service1.count == 1)
85+
86+
_service2.doSomething()
87+
let service2 = try #require(_service2 as? MockServiceImpl)
88+
#expect(service2.count == 1)
89+
90+
#expect((service1 === service2) == false)
91+
}
92+
93+
func getMockService() -> MockService {
94+
@Inject(MockServiceKey.self) var service
95+
return service
96+
}
97+
}

0 commit comments

Comments
 (0)