| // |
| // RACSignalStartExamples.m |
| // ReactiveCocoa |
| // |
| // Created by Josh Abernathy on 5/29/13. |
| // Copyright (c) 2013 GitHub, Inc. All rights reserved. |
| // |
| |
| #import "RACSignalStartExamples.h" |
| #import "RACSignal.h" |
| #import "RACSignal+Operations.h" |
| #import "RACScheduler.h" |
| #import "RACSubscriber.h" |
| #import "RACMulticastConnection.h" |
| |
| NSString * const RACSignalStartSharedExamplesName = @"RACSignalStartSharedExamplesName"; |
| |
| NSString * const RACSignalStartSignal = @"RACSignalStartSignal"; |
| NSString * const RACSignalStartExpectedValues = @"RACSignalStartExpectedValues"; |
| NSString * const RACSignalStartExpectedScheduler = @"RACSignalStartExpectedScheduler"; |
| |
| SharedExampleGroupsBegin(RACSignalStartSpec) |
| |
| sharedExamples(RACSignalStartSharedExamplesName, ^(NSDictionary *data) { |
| __block RACSignal *signal; |
| __block NSArray *expectedValues; |
| __block RACScheduler *scheduler; |
| __block RACScheduler * (^subscribeAndGetScheduler)(void); |
| |
| beforeEach(^{ |
| signal = data[RACSignalStartSignal]; |
| expectedValues = data[RACSignalStartExpectedValues]; |
| scheduler = data[RACSignalStartExpectedScheduler]; |
| |
| subscribeAndGetScheduler = [^{ |
| __block RACScheduler *schedulerInDelivery; |
| [signal subscribeNext:^(id _) { |
| schedulerInDelivery = RACScheduler.currentScheduler; |
| }]; |
| |
| expect(schedulerInDelivery).willNot.beNil(); |
| return schedulerInDelivery; |
| } copy]; |
| }); |
| |
| it(@"should send values from the returned signal", ^{ |
| NSArray *values = [signal toArray]; |
| expect(values).to.equal(expectedValues); |
| }); |
| |
| it(@"should replay all values", ^{ |
| // Force a subscription so that we get replayed results. |
| [[signal publish] connect]; |
| |
| NSArray *values = [signal toArray]; |
| expect(values).to.equal(expectedValues); |
| }); |
| |
| it(@"should deliver the original results on the given scheduler", ^{ |
| RACScheduler *currentScheduler = subscribeAndGetScheduler(); |
| expect(currentScheduler).to.equal(scheduler); |
| }); |
| |
| it(@"should deliver replayed results on the given scheduler", ^{ |
| // Force a subscription so that we get replayed results on the |
| // tested subscription. |
| subscribeAndGetScheduler(); |
| |
| RACScheduler *currentScheduler = subscribeAndGetScheduler(); |
| expect(currentScheduler).to.equal(scheduler); |
| }); |
| }); |
| |
| SharedExampleGroupsEnd |