1// Copyright 2016-present 650 Industries. All rights reserved. 2 3#import <XCTest/XCTest.h> 4#import <ExpoModulesCore/EXAppDefines.h> 5 6@interface EXAppDefines (EXAppDefinesWithUnloader) 7 8+ (void)_unload; 9 10@end 11 12@interface EXAppDefinesTest : XCTestCase 13 14@end 15 16@implementation EXAppDefinesTest 17 18- (void)setUp 19{ 20 // EXAppDefines expects to load just once. 21 // To make it testable with difference test cases, 22 // we call the internal private `_unload` method to reset state. 23 [EXAppDefines performSelector:@selector(_unload)]; 24} 25 26- (void)test_load 27{ 28 NSDictionary *defines = @{ 29 @"APP_DEBUG": @(YES), 30 @"APP_RCT_DEBUG": @(YES), 31 @"APP_RCT_DEV": @(YES), 32 }; 33 XCTAssertNoThrow([EXAppDefines load:defines]); 34} 35 36- (void)test_load_throwIfLoadedTwice 37{ 38 NSDictionary *defines = @{ 39 @"APP_DEBUG": @(YES), 40 @"APP_RCT_DEBUG": @(YES), 41 @"APP_RCT_DEV": @(YES), 42 }; 43 XCTAssertNoThrow([EXAppDefines load:defines]); 44 XCTAssertThrows([EXAppDefines load:defines]); 45} 46 47- (void)test_loadAndGetAppDebug_shouldMatchDebugDefines 48{ 49 NSDictionary *defines = @{ 50 @"APP_DEBUG": @(YES), 51 @"APP_RCT_DEBUG": @(YES), 52 @"APP_RCT_DEV": @(YES), 53 }; 54 [EXAppDefines load:defines]; 55 XCTAssertEqual(EXAppDefines.APP_DEBUG, YES); 56} 57 58- (void)test_loadAndGetAppDebug_shouldMatchReleaseDefines 59{ 60 NSDictionary *defines = @{ 61 @"APP_DEBUG": @(NO), 62 @"APP_RCT_DEBUG": @(NO), 63 @"APP_RCT_DEV": @(NO), 64 }; 65 [EXAppDefines load:defines]; 66 XCTAssertEqual(EXAppDefines.APP_DEBUG, NO); 67} 68 69- (void)test_getters_returnsDefaultValues 70{ 71 XCTAssertNoThrow([EXAppDefines load:@{}]); 72 XCTAssertEqual(EXAppDefines.APP_DEBUG, NO); 73 XCTAssertEqual(EXAppDefines.APP_RCT_DEBUG, NO); 74 XCTAssertEqual(EXAppDefines.APP_RCT_DEV, NO); 75 XCTAssertEqual(EXAppDefines.getAllDefines.count, 0u); 76} 77 78- (void)test_getAppDebug_throwIfNotLoaded 79{ 80 XCTAssertThrows(EXAppDefines.APP_DEBUG); 81} 82 83- (void)test_passExtraDefines_shouldGetMatchedDefines 84{ 85 NSDictionary *defines = @{ 86 @"APP_DEBUG": @(YES), 87 @"APP_RCT_DEBUG": @(YES), 88 @"APP_RCT_DEV": @(YES), 89 @"foo": @1, 90 @"bar": @2, 91 }; 92 93 [EXAppDefines load:defines]; 94 NSDictionary *result = EXAppDefines.getAllDefines; 95 XCTAssertEqual([result[@"foo"] intValue], 1); 96 XCTAssertEqual([result[@"bar"] intValue], 2); 97} 98 99@end 100