File tree Expand file tree Collapse file tree 4 files changed +36
-7
lines changed
Expand file tree Collapse file tree 4 files changed +36
-7
lines changed Original file line number Diff line number Diff line change 11# Resolver Changelog
22
3+ ### 1.4.5
4+
5+ * Resolver.Name conformance to Hashable and Equatable
6+
37### 1.4.4
48
59* Reduced code size and improved performance
Original file line number Diff line number Diff line change 11Pod ::Spec . new do |s |
22 s . name = "Resolver"
3- s . version = "1.4.4 "
3+ s . version = "1.4.5 "
44 s . summary = "An ultralight Dependency Injection / Service Locator framework for Swift on iOS."
55 s . homepage = "https://github.com/hmlongco/Resolver"
66 s . license = "MIT"
Original file line number Diff line number Diff line change @@ -356,8 +356,8 @@ extension Resolver {
356356extension Resolver {
357357
358358 /// Internal class used by Resolver for typed name space support.
359- public struct Name : ExpressibleByStringLiteral {
360- let rawValue : String
359+ public struct Name : ExpressibleByStringLiteral , Hashable , Equatable {
360+ public let rawValue : String
361361 public init ( _ rawValue: String ) {
362362 self . rawValue = rawValue
363363 }
@@ -368,6 +368,12 @@ extension Resolver {
368368 if let string = string { return Name ( string) }
369369 return nil
370370 }
371+ static public func == ( lhs: Name , rhs: Name ) -> Bool {
372+ return lhs. rawValue == rhs. rawValue
373+ }
374+ public func hash( into hasher: inout Hasher ) {
375+ hasher. combine ( rawValue)
376+ }
371377 }
372378
373379}
Original file line number Diff line number Diff line change @@ -147,10 +147,6 @@ class ResolverNameTests: XCTestCase {
147147
148148 func testResolverNamedStringRegistrations( ) {
149149
150- Task . init {
151-
152- }
153-
154150 resolver. register { AppConfig ( ) }
155151 resolver. register ( name: " host1 " ) { r in r. resolve ( AppConfig . self) . host1 }
156152 resolver. register ( name: " host2 " ) { r in r. resolve ( AppConfig . self) . host2 }
@@ -164,4 +160,27 @@ class ResolverNameTests: XCTestCase {
164160 XCTAssertNil ( host3)
165161 }
166162
163+ func testResolverNameHashableConformance( ) {
164+
165+ let registrations : [ Resolver . Name : XYZNameService ] = [
166+ . fred : XYZNameService ( " Fred " ) ,
167+ . barney : XYZNameService ( " Barney " ) ,
168+ ]
169+
170+ registrations. forEach { ( name, service) in
171+ resolver. register ( name: name) { service }
172+ }
173+
174+ let fred : XYZNameService ? = resolver. optional ( name: . fred)
175+ let barney : XYZNameService ? = resolver. optional ( name: . barney)
176+
177+ // Check all services resolved
178+ XCTAssertNotNil ( fred)
179+ XCTAssertNotNil ( barney)
180+
181+ // Check correct service factories called
182+ XCTAssert ( fred? . name == " Fred " )
183+ XCTAssert ( barney? . name == " Barney " )
184+ }
185+
167186}
You can’t perform that action at this time.
0 commit comments