1// Copyright (c) 2020 650 Industries, Inc. All rights reserved. 2 3#import <XCTest/XCTest.h> 4 5#import <EXJSONUtils/NSDictionary+EXJSONUtils.h> 6 7@interface NSDictionaryEXManifestsManifestTest : XCTestCase 8 9@property (nonatomic, strong) NSDictionary *testData; 10 11@end 12 13@implementation NSDictionaryEXManifestsManifestTest 14 15- (void)setUp { 16 _testData = @{ 17 @"string": @"hello", 18 @"number": @2, 19 @"dictionary": @{}, 20 @"array": @[], 21 }; 22} 23 24- (void)test_stringForKey { 25 XCTAssertEqual([self.testData expo_stringForKey:@"string"], @"hello"); 26 XCTAssertThrows([self.testData expo_stringForKey:@"number"]); 27 XCTAssertThrows([self.testData expo_stringForKey:@"nonexistent"]); 28} 29 30- (void)test_nullableStringForKey { 31 XCTAssertEqual([self.testData expo_nullableStringForKey:@"string"], @"hello"); 32 XCTAssertNil([self.testData expo_nullableStringForKey:@"nonexistent"]); 33 XCTAssertThrows([self.testData expo_nullableStringForKey:@"number"]); 34} 35 36- (void)test_numberForKey { 37 XCTAssertEqual([self.testData expo_numberForKey:@"number"], @2); 38 XCTAssertThrows([self.testData expo_numberForKey:@"string"]); 39 XCTAssertThrows([self.testData expo_numberForKey:@"nonexistent"]); 40} 41 42- (void)test_nullableNumberForKey { 43 XCTAssertEqual([self.testData expo_nullableNumberForKey:@"number"], @2); 44 XCTAssertNil([self.testData expo_nullableNumberForKey:@"nonexistent"]); 45 XCTAssertThrows([self.testData expo_nullableNumberForKey:@"string"]); 46} 47 48- (void)test_dictionaryForKey { 49 XCTAssertEqual([self.testData expo_dictionaryForKey:@"dictionary"], @{}); 50 XCTAssertThrows([self.testData expo_dictionaryForKey:@"string"]); 51 XCTAssertThrows([self.testData expo_dictionaryForKey:@"nonexistent"]); 52} 53 54- (void)test_nullableDictionaryForKey { 55 XCTAssertEqual([self.testData expo_nullableDictionaryForKey:@"dictionary"], @{}); 56 XCTAssertNil([self.testData expo_nullableDictionaryForKey:@"nonexistent"]); 57 XCTAssertThrows([self.testData expo_nullableDictionaryForKey:@"string"]); 58} 59 60- (void)arrayForKey { 61 XCTAssertEqual([self.testData expo_arrayForKey:@"array"], @[]); 62 XCTAssertThrows([self.testData expo_arrayForKey:@"string"]); 63 XCTAssertThrows([self.testData expo_arrayForKey:@"nonexistent"]); 64} 65 66- (void)test_nullableArrayForKey { 67 XCTAssertEqual([self.testData expo_nullableArrayForKey:@"array"], @[]); 68 XCTAssertNil([self.testData expo_nullableArrayForKey:@"nonexistent"]); 69 XCTAssertThrows([self.testData expo_nullableArrayForKey:@"string"]); 70} 71 72@end 73