Skip to content

Commit e2dda4f

Browse files
committed
Add select mapping to Observable
1 parent 52ff9bf commit e2dda4f

File tree

3 files changed

+35
-3
lines changed

3 files changed

+35
-3
lines changed

Code/Mapping+StandardMappings.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
extension Mapping where MappedUpdate: Equatable
1+
public extension Mapping where MappedUpdate: Equatable
22
{
33
public func select(_ default: MappedUpdate) -> Mapping<O, Void>
44
{
55
return map(prefilter: { $0 == `default` }) { _ in }
66
}
77
}
88

9-
extension Mapping
9+
public extension Mapping
1010
{
1111
public func new<Value>() -> Mapping<O, Value>
1212
where MappedUpdate == Update<Value>

Code/Observable+StandardMappings.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
public extension Observable where UpdateType: Equatable
2+
{
3+
public func select(_ default: UpdateType) -> Mapping<Self, Void>
4+
{
5+
return map(prefilter: { $0 == `default` }) { _ in }
6+
}
7+
}
8+
19
public extension Observable
210
{
311
public func new<MappedUpdate>() -> Mapping<Self, MappedUpdate>

Tests/SwiftObserverTests/SwiftObserverTests.swift

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,25 @@ class SwiftObserverTests: XCTestCase
182182
XCTAssert(!didFire)
183183
}
184184

185+
func testMappingSelectOnCustomObservable()
186+
{
187+
let mappedModel = model.select(.didUpdate)
188+
189+
var didFire = false
190+
191+
controller.observe(mappedModel)
192+
{
193+
didFire = true
194+
}
195+
196+
model.send(.didUpdate)
197+
XCTAssert(didFire)
198+
199+
didFire = false
200+
model.send(.didReset)
201+
XCTAssert(!didFire)
202+
}
203+
185204
func testMultiplication()
186205
{
187206
XCTAssertEqual(Var(2) * Var(7), 14)
@@ -574,12 +593,17 @@ class SwiftObserverTests: XCTestCase
574593

575594
func testObservableMapping()
576595
{
577-
controller.observe(model.map { $0.rawValue })
596+
var didFire = false
597+
598+
controller.observe(model).map({ $0.rawValue })
578599
{
579600
XCTAssertEqual($0, "didUpdate")
601+
didFire = true
580602
}
581603

582604
model.send(.didUpdate)
605+
606+
XCTAssert(didFire)
583607
}
584608

585609

0 commit comments

Comments
 (0)