#import #import #import "RNNCommandsHandler.h" #import "RNNNavigationOptions.h" #import "RNNTestRootViewCreator.h" #import "RNNRootViewController.h" #import "RNNNavigationController.h" @interface RNNCommandsHandlerTest : XCTestCase @property (nonatomic, strong) RNNStore* store; @property (nonatomic, strong) RNNCommandsHandler* uut; @end @implementation RNNCommandsHandlerTest - (void)setUp { [super setUp]; // [self.store setReadyToReceiveCommands:true]; self.store = [[RNNStore alloc] init]; self.uut = [[RNNCommandsHandler alloc] initWithStore:self.store controllerFactory:nil]; } - (void)testAssertReadyForEachMethodThrowsExceptoins { NSArray* methods = [self getPublicMethodNamesForObject:self.uut]; [self.store setReadyToReceiveCommands:false]; for (NSString* methodName in methods) { SEL s = NSSelectorFromString(methodName); IMP imp = [self.uut methodForSelector:s]; void (*func)(id, SEL, id, id, id) = (void *)imp; XCTAssertThrowsSpecificNamed(func(self.uut,s, nil, nil, nil), NSException, @"BridgeNotLoadedError"); } } -(NSArray*) getPublicMethodNamesForObject:(NSObject*)obj{ NSMutableArray* skipMethods = [NSMutableArray new]; [skipMethods addObject:@"initWithStore:controllerFactory:"]; [skipMethods addObject:@"assertReady"]; [skipMethods addObject:@".cxx_destruct"]; NSMutableArray* result = [NSMutableArray new]; // count and names: int i=0; unsigned int mc = 0; Method * mlist = class_copyMethodList(object_getClass(obj), &mc); for(i=0; i