1// Copyright (c) 2021 650 Industries, Inc. All rights reserved. 2 3@import XCTest; 4 5#import <EXStructuredHeaders/EXStructuredHeadersParser.h> 6 7@interface EXStructuredHeadersParserIgnoringParametersTests : XCTestCase 8 9@end 10 11@implementation EXStructuredHeadersParserIgnoringParametersTests 12 13- (void)setUp 14{ 15 [super setUp]; 16} 17 18- (void)tearDown 19{ 20 [super tearDown]; 21} 22 23- (void)testParameterizedDict 24{ 25 NSString *input = @"abc=123;a=1;b=2, def=456, ghi=789;q=9;r=\"+w\""; 26 NSDictionary *expected = @{ 27 @"abc": @(123), 28 @"def": @(456), 29 @"ghi": @(789) 30 }; 31 [self runTestWithInput:input expectedValue:expected fieldType:EXStructuredHeadersParserFieldTypeDictionary]; 32} 33 34- (void)testParameterizedList 35{ 36 NSString *input = @"abc_123;a=1;b=2; cdef_456, ghi;q=9;r=\"+w\""; 37 NSArray *expected = @[@"abc_123", @"ghi"]; 38 [self runTestWithInput:input expectedValue:expected fieldType:EXStructuredHeadersParserFieldTypeList]; 39} 40 41- (void)testParameterizedInnerList 42{ 43 NSString *input = @"(abc_123;a=1;b=2);cdef_456"; 44 NSArray *expected = @[@[@"abc_123"]]; 45 [self runTestWithInput:input expectedValue:expected fieldType:EXStructuredHeadersParserFieldTypeList]; 46} 47 48- (void)testItem 49{ 50 NSString *input = @"?0"; 51 NSNumber *expected = @(NO); 52 [self runTestWithInput:input expectedValue:expected fieldType:EXStructuredHeadersParserFieldTypeItem]; 53} 54 55- (void)runTestWithInput:(NSString *)input expectedValue:(id)expected fieldType:(EXStructuredHeadersParserFieldType)fieldType 56{ 57 EXStructuredHeadersParser *parser = [[EXStructuredHeadersParser alloc] initWithRawInput:input fieldType:fieldType ignoringParameters:YES]; 58 NSError *error; 59 id actual = [parser parseStructuredFieldsWithError:&error]; 60 XCTAssertNil(error); 61 XCTAssertEqualObjects(expected, actual); 62} 63 64@end 65