Skip to content

Commit

Permalink
Add @dynamicMemberLookup to ObservableType and SharedSequenceConverti…
Browse files Browse the repository at this point in the history
…bleType
  • Loading branch information
yuriferretti committed Sep 20, 2019
1 parent 6b2a406 commit a7a785e
Show file tree
Hide file tree
Showing 10 changed files with 409 additions and 9 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
All notable changes to this project will be documented in this file.

---
* Adds keyPath based `@dynamicMemberLookup` to `ObservableType` and `SharedSequenceConvertibleType` to allow
easier attribute mapping

## [5.0.1](https://github.com/ReactiveX/RxSwift/releases/tag/5.0.1)

* Reverts Carthage integration from using static to dynamic libraries. #1960
Expand Down
47 changes: 44 additions & 3 deletions Rx.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,9 @@
54700CA11CE37E1900EF3A8F /* UINavigationItem+RxTests.swift.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54700C9E1CE37D1000EF3A8F /* UINavigationItem+RxTests.swift.swift */; };
54D2138E1CE0824E0028D5B4 /* UINavigationItem+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54D2138C1CE081890028D5B4 /* UINavigationItem+Rx.swift */; };
601AE3DA1EE24E4F00617386 /* SwiftSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 601AE3D91EE24E4F00617386 /* SwiftSupport.swift */; };
60AFEDCA232DCCE3007BD1E3 /* Observable+DynamicMemberLookupTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60AFEDC7232DCC96007BD1E3 /* Observable+DynamicMemberLookupTests.swift */; };
60AFEDCB232DCCE4007BD1E3 /* Observable+DynamicMemberLookupTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60AFEDC7232DCC96007BD1E3 /* Observable+DynamicMemberLookupTests.swift */; };
60AFEDCC232DCCE5007BD1E3 /* Observable+DynamicMemberLookupTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60AFEDC7232DCC96007BD1E3 /* Observable+DynamicMemberLookupTests.swift */; };
6B9CA56B202A1F44002C2D11 /* KeyPathBinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B9CA568202A1F43002C2D11 /* KeyPathBinder.swift */; };
6B9CA56E202A206A002C2D11 /* KeyPathBinder+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B9CA56D202A1F96002C2D11 /* KeyPathBinder+RxTests.swift */; };
6B9CA56F202A206B002C2D11 /* KeyPathBinder+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B9CA56D202A1F96002C2D11 /* KeyPathBinder+RxTests.swift */; };
Expand Down Expand Up @@ -959,6 +962,7 @@
54700C9E1CE37D1000EF3A8F /* UINavigationItem+RxTests.swift.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UINavigationItem+RxTests.swift.swift"; sourceTree = "<group>"; };
54D2138C1CE081890028D5B4 /* UINavigationItem+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UINavigationItem+Rx.swift"; sourceTree = "<group>"; };
601AE3D91EE24E4F00617386 /* SwiftSupport.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SwiftSupport.swift; sourceTree = "<group>"; };
60AFEDC7232DCC96007BD1E3 /* Observable+DynamicMemberLookupTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Observable+DynamicMemberLookupTests.swift"; sourceTree = "<group>"; };
6B9CA568202A1F43002C2D11 /* KeyPathBinder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyPathBinder.swift; sourceTree = "<group>"; };
6B9CA56D202A1F96002C2D11 /* KeyPathBinder+RxTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "KeyPathBinder+RxTests.swift"; sourceTree = "<group>"; };
7EDBAEAB1C89B1A5006CBE67 /* UITabBarItem+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UITabBarItem+RxTests.swift"; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1262,7 +1266,7 @@
C85B01681DB2ACAF006043C3 /* Platform.Linux.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Platform.Linux.swift; sourceTree = "<group>"; };
C85B01721DB2ACF2006043C3 /* Platform.Darwin.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Platform.Darwin.swift; sourceTree = "<group>"; };
C85B01731DB2ACF2006043C3 /* Platform.Linux.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Platform.Linux.swift; sourceTree = "<group>"; };
C85BA04B1C3878740075D68E /* PerformanceTests.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; name = PerformanceTests.app; path = Microoptimizations.app; sourceTree = BUILT_PRODUCTS_DIR; };
C85BA04B1C3878740075D68E /* Microoptimizations.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Microoptimizations.app; sourceTree = BUILT_PRODUCTS_DIR; };
C85E6FBB1F52FF4F00C5681E /* Signal.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Signal.swift; sourceTree = "<group>"; };
C85E6FBD1F53025700C5681E /* SchedulerType+SharedSequence.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "SchedulerType+SharedSequence.swift"; sourceTree = "<group>"; };
C86781471DB8119900B2029A /* Bag.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Bag.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1974,6 +1978,7 @@
C820A9D11EB50B0900D431BC /* Observable+GroupByTests.swift */,
C820A9691EB4F64800D431BC /* Observable+JustTests.swift */,
C820A9B51EB5081400D431BC /* Observable+MapTests.swift */,
60AFEDC7232DCC96007BD1E3 /* Observable+DynamicMemberLookupTests.swift */,
C820A9F91EB510D500D431BC /* Observable+MaterializeTests.swift */,
C820A9991EB5001C00D431BC /* Observable+MergeTests.swift */,
C820A9551EB4ED7C00D431BC /* Observable+MulticastTests.swift */,
Expand Down Expand Up @@ -2397,7 +2402,7 @@
C83508C31C386F6F0027C24C /* AllTests-iOS.xctest */,
C83509841C38740E0027C24C /* AllTests-tvOS.xctest */,
C83509941C38742C0027C24C /* AllTests-macOS.xctest */,
C85BA04B1C3878740075D68E /* PerformanceTests.app */,
C85BA04B1C3878740075D68E /* Microoptimizations.app */,
C8E8BA551E2C181A00A4AC2C /* Benchmarks.xctest */,
A2897D53225CA1E7004EA481 /* RxRelay.framework */,
);
Expand Down Expand Up @@ -2643,7 +2648,7 @@
);
name = Microoptimizations;
productName = PerformanceTests;
productReference = C85BA04B1C3878740075D68E /* PerformanceTests.app */;
productReference = C85BA04B1C3878740075D68E /* Microoptimizations.app */;
productType = "com.apple.product-type.application";
};
C88FA4FD1C25C44800CCFEA4 /* RxTest */ = {
Expand Down Expand Up @@ -3135,6 +3140,7 @@
C820A98A1EB4FBD600D431BC /* Observable+CatchTests.swift in Sources */,
C835093A1C38706E0027C24C /* RuntimeStateSnapshot.swift in Sources */,
C8561B661DFE1169005E97F1 /* ExampleTests.swift in Sources */,
60AFEDCA232DCCE3007BD1E3 /* Observable+DynamicMemberLookupTests.swift in Sources */,
C86B1E221D42BF5200130546 /* SchedulerTests.swift in Sources */,
C820A9D61EB50C5C00D431BC /* Observable+DistinctUntilChangedTests.swift in Sources */,
C820A9FE1EB5110E00D431BC /* Observable+DematerializeTests.swift in Sources */,
Expand Down Expand Up @@ -3275,6 +3281,7 @@
C8C4F1881DE9DF0200003FA7 /* UITableView+RxTests.swift in Sources */,
C820A9FF1EB5110E00D431BC /* Observable+DematerializeTests.swift in Sources */,
1E9DA0C622006858000EB80A /* Synchronized.swift in Sources */,
60AFEDCB232DCCE4007BD1E3 /* Observable+DynamicMemberLookupTests.swift in Sources */,
C83509EE1C3875580027C24C /* Observable.Extensions.swift in Sources */,
C83509BD1C38750D0027C24C /* ControlPropertyTests.swift in Sources */,
4C5213AF225E22500079FC77 /* Observable+CompactMapTests.swift in Sources */,
Expand Down Expand Up @@ -3544,6 +3551,7 @@
C83509DF1C38754F0027C24C /* TestVirtualScheduler.swift in Sources */,
C820A9DC1EB50CAA00D431BC /* Observable+DoOnTests.swift in Sources */,
C83509CD1C3875230027C24C /* NotificationCenterTests.swift in Sources */,
60AFEDCC232DCCE5007BD1E3 /* Observable+DynamicMemberLookupTests.swift in Sources */,
C83509DB1C38754C0027C24C /* EquatableArray.swift in Sources */,
C820A9BC1EB5097700D431BC /* Observable+TakeTests.swift in Sources */,
C8350A031C38755E0027C24C /* BehaviorSubjectTest.swift in Sources */,
Expand Down Expand Up @@ -4031,7 +4039,9 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
APPLICATION_EXTENSION_API_ONLY = NO;
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "-";
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = "";
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
Expand All @@ -4052,6 +4062,8 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
APPLICATION_EXTENSION_API_ONLY = NO;
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "-";
DEVELOPMENT_TEAM = "";
INFOPLIST_FILE = Tests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.2;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
Expand All @@ -4069,6 +4081,8 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
APPLICATION_EXTENSION_API_ONLY = NO;
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "-";
DEVELOPMENT_TEAM = "";
INFOPLIST_FILE = Tests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.2;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
Expand All @@ -4085,6 +4099,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Manual;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = "";
Expand All @@ -4108,6 +4123,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Manual;
DEVELOPMENT_TEAM = "";
INFOPLIST_FILE = Tests/Info.plist;
Expand All @@ -4127,6 +4143,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Manual;
DEVELOPMENT_TEAM = "";
INFOPLIST_FILE = Tests/Info.plist;
Expand All @@ -4148,6 +4165,7 @@
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
COMBINE_HIDPI_IMAGES = YES;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = "";
ENABLE_BITCODE = NO;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
Expand All @@ -4169,6 +4187,7 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = "";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Tests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
Expand All @@ -4187,6 +4206,7 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = "";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Tests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
Expand All @@ -4204,8 +4224,10 @@
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "-";
COMBINE_HIDPI_IMAGES = YES;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = "";
ENABLE_BITCODE = NO;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
Expand All @@ -4216,6 +4238,7 @@
MACOSX_DEPLOYMENT_TARGET = 10.11;
PRODUCT_BUNDLE_IDENTIFIER = io.rx.PerformanceTests;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = macosx;
};
name = Debug;
Expand All @@ -4224,13 +4247,16 @@
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "-";
COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = "";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Tests/Microoptimizations/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.11;
PRODUCT_BUNDLE_IDENTIFIER = io.rx.PerformanceTests;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = macosx;
};
name = Release;
Expand All @@ -4239,13 +4265,16 @@
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "-";
COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = "";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Tests/Microoptimizations/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.11;
PRODUCT_BUNDLE_IDENTIFIER = io.rx.PerformanceTests;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = macosx;
};
name = "Release-Tests";
Expand Down Expand Up @@ -4319,7 +4348,9 @@
C8633A951B08FA5500375D60 /* Release-Tests */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "-";
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = "";
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
Expand Down Expand Up @@ -4536,7 +4567,9 @@
C8A56AEE1AD7424700B4673B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "-";
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = "";
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
Expand All @@ -4552,7 +4585,9 @@
C8A56AEF1AD7424700B4673B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "-";
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = "";
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
Expand All @@ -4570,7 +4605,9 @@
buildSettings = {
CLANG_ANALYZER_NONNULL = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "-";
CODE_SIGN_STYLE = Manual;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = "";
Expand All @@ -4594,7 +4631,9 @@
buildSettings = {
CLANG_ANALYZER_NONNULL = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "-";
CODE_SIGN_STYLE = Manual;
DEVELOPMENT_TEAM = "";
INFOPLIST_FILE = Tests/Benchmarks/Info.plist;
Expand All @@ -4612,7 +4651,9 @@
buildSettings = {
CLANG_ANALYZER_NONNULL = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "-";
CODE_SIGN_STYLE = Manual;
DEVELOPMENT_TEAM = "";
INFOPLIST_FILE = Tests/Benchmarks/Info.plist;
Expand Down
11 changes: 10 additions & 1 deletion RxCocoa/Traits/SharedSequence/SharedSequence.swift
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ public protocol SharingStrategyProtocol {
/**
A type that can be converted to `SharedSequence`.
*/
@dynamicMemberLookup
public protocol SharedSequenceConvertibleType : ObservableConvertibleType {
associatedtype SharingStrategy: SharingStrategyProtocol

Expand All @@ -94,6 +95,15 @@ extension SharedSequenceConvertibleType {
}
}

/**
Allows easier mapping by exposing dynamic member keypaths
So Driver.just("string").map { $0.count } can rewritten as Driver.just("string").count
*/
extension SharedSequenceConvertibleType {
public subscript<U>(dynamicMember keyPath: KeyPath<Element, U>) -> SharedSequence<SharingStrategy, U> {
return self.map { $0[keyPath: keyPath]}
}
}

extension SharedSequence {

Expand Down Expand Up @@ -223,4 +233,3 @@ extension SharedSequence where Element: RxAbstractInteger {
return SharedSequence(Observable.timer(dueTime, period: period, scheduler: SharingStrategy.scheduler))
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@
</BuildableReference>
</TestableReference>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
Expand All @@ -36,8 +34,6 @@
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
Expand Down
1 change: 0 additions & 1 deletion RxSwift/Observable.swift
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,3 @@ public class Observable<Element> : ObservableType {
#endif
}
}

11 changes: 11 additions & 0 deletions RxSwift/ObservableType.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
//

/// Represents a push style sequence.
@dynamicMemberLookup
public protocol ObservableType: ObservableConvertibleType {
/**
Subscribes `observer` to receive events for this sequence.
Expand Down Expand Up @@ -45,3 +46,13 @@ extension ObservableType {
}
}
}

/**
Allows easier mapping by exposing dynamic member keypaths
So Observable.just("string").map { $0.count } can rewritten as Observable.just("string").count
*/
extension ObservableType {
public subscript<U>(dynamicMember keyPath: KeyPath<Element, U>) -> Observable<U> {
return self.map { $0[keyPath: keyPath]}
}
}
1 change: 1 addition & 0 deletions Sources/AllTestz/Observable+DynamicMemberLookupTests.swift
23 changes: 23 additions & 0 deletions Sources/AllTestz/main.swift
Original file line number Diff line number Diff line change
Expand Up @@ -760,6 +760,27 @@ final class ObservableDoOnTest_ : ObservableDoOnTest, RxTestCase {
] }
}

final class ObservableDynamicMemberLookupTest_ : ObservableDynamicMemberLookupTest, RxTestCase {
#if os(macOS)
required override init() {
super.init()
}
#endif

static var allTests: [(String, (ObservableDynamicMemberLookupTest_) -> () -> Void)] { return [
("testDynamicMap_Never", ObservableDynamicMemberLookupTest.testDynamicMap_Never),
("testDynamicMap_Empty", ObservableDynamicMemberLookupTest.testDynamicMap_Empty),
("testDynamicMap_Range", ObservableDynamicMemberLookupTest.testDynamicMap_Range),
("testDynamicMap_Error", ObservableDynamicMemberLookupTest.testDynamicMap_Error),
("testDynamicMap_Dispose", ObservableDynamicMemberLookupTest.testDynamicMap_Dispose),
("testDynamicMapCompose_Never", ObservableDynamicMemberLookupTest.testDynamicMapCompose_Never),
("testDynamicMapCompose_Empty", ObservableDynamicMemberLookupTest.testDynamicMapCompose_Empty),
("testDynamicMapCompose_Range", ObservableDynamicMemberLookupTest.testDynamicMapCompose_Range),
("testDynamicMapCompose_Error", ObservableDynamicMemberLookupTest.testDynamicMapCompose_Error),
("testDynamicMapCompose_Dispose", ObservableDynamicMemberLookupTest.testDynamicMapCompose_Dispose),
] }
}

final class ObservableElementAtTest_ : ObservableElementAtTest, RxTestCase {
#if os(macOS)
required override init() {
Expand Down Expand Up @@ -1896,6 +1917,7 @@ final class SharedSequenceOperatorTests_ : SharedSequenceOperatorTests, RxTestCa
("testDriverFromOptionalWhenNil", SharedSequenceOperatorTests.testDriverFromOptionalWhenNil),
("testDriverFromSequence", SharedSequenceOperatorTests.testDriverFromSequence),
("testDriverFromArray", SharedSequenceOperatorTests.testDriverFromArray),
("testAsDriver_dynamicMap", SharedSequenceOperatorTests.testAsDriver_dynamicMap),
] }
}

Expand Down Expand Up @@ -2085,6 +2107,7 @@ func XCTMain(_ tests: [() -> Void]) {
testCase(ObservableDematerializeTest_.allTests),
testCase(ObservableDistinctUntilChangedTest_.allTests),
testCase(ObservableDoOnTest_.allTests),
testCase(ObservableDynamicMemberLookupTest_.allTests),
testCase(ObservableElementAtTest_.allTests),
testCase(ObservableEnumeratedTest_.allTests),
testCase(ObservableFilterTest_.allTests),
Expand Down
Loading

0 comments on commit a7a785e

Please sign in to comment.