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 stringForKey:@"string"], @"hello"); 26 XCTAssertThrows([self.testData stringForKey:@"number"]); 27 XCTAssertThrows([self.testData stringForKey:@"nonexistent"]); 28} 29 30- (void)test_nullableStringForKey { 31 XCTAssertEqual([self.testData nullableStringForKey:@"string"], @"hello"); 32 XCTAssertNil([self.testData nullableStringForKey:@"nonexistent"]); 33 XCTAssertThrows([self.testData nullableStringForKey:@"number"]); 34} 35 36- (void)test_numberForKey { 37 XCTAssertEqual([self.testData numberForKey:@"number"], @2); 38 XCTAssertThrows([self.testData numberForKey:@"string"]); 39 XCTAssertThrows([self.testData numberForKey:@"nonexistent"]); 40} 41 42- (void)test_nullableNumberForKey { 43 XCTAssertEqual([self.testData nullableNumberForKey:@"number"], @2); 44 XCTAssertNil([self.testData nullableNumberForKey:@"nonexistent"]); 45 XCTAssertThrows([self.testData nullableNumberForKey:@"string"]); 46} 47 48- (void)test_dictionaryForKey { 49 XCTAssertEqual([self.testData dictionaryForKey:@"dictionary"], @{}); 50 XCTAssertThrows([self.testData dictionaryForKey:@"string"]); 51 XCTAssertThrows([self.testData dictionaryForKey:@"nonexistent"]); 52} 53 54- (void)test_nullableDictionaryForKey { 55 XCTAssertEqual([self.testData nullableDictionaryForKey:@"dictionary"], @{}); 56 XCTAssertNil([self.testData nullableDictionaryForKey:@"nonexistent"]); 57 XCTAssertThrows([self.testData nullableDictionaryForKey:@"string"]); 58} 59 60- (void)arrayForKey { 61 XCTAssertEqual([self.testData arrayForKey:@"array"], @[]); 62 XCTAssertThrows([self.testData arrayForKey:@"string"]); 63 XCTAssertThrows([self.testData arrayForKey:@"nonexistent"]); 64} 65 66- (void)test_nullableArrayForKey { 67 XCTAssertEqual([self.testData nullableArrayForKey:@"array"], @[]); 68 XCTAssertNil([self.testData nullableArrayForKey:@"nonexistent"]); 69 XCTAssertThrows([self.testData nullableArrayForKey:@"string"]); 70} 71 72@end 73