@@ -23,24 +23,24 @@ @interface RCTMethodArgumentTests : XCTestCase
2323
2424@implementation RCTMethodArgumentTests
2525
26- extern void RCTParseObjCMethodName (NSString **objCMethodName , NSArray **argTypes);
26+ extern SEL RCTParseMethodSignature (NSString *methodSignature , NSArray **argTypes);
2727
2828- (void )testOneArgument
2929{
3030 NSArray *arguments;
31- NSString *methodName = @" foo:(NSInteger)foo" ;
32- RCTParseObjCMethodName (&methodName , &arguments);
33- XCTAssertEqualObjects (methodName , @" foo:" );
31+ NSString *methodSignature = @" foo:(NSInteger)foo" ;
32+ SEL selector = RCTParseMethodSignature (methodSignature , &arguments);
33+ XCTAssertEqualObjects (NSStringFromSelector (selector) , @" foo:" );
3434 XCTAssertEqual (arguments.count , (NSUInteger )1 );
3535 XCTAssertEqualObjects (((RCTMethodArgument *)arguments[0 ]).type , @" NSInteger" );
3636}
3737
3838- (void )testTwoArguments
3939{
4040 NSArray *arguments;
41- NSString *methodName = @" foo:(NSInteger)foo bar:(BOOL)bar" ;
42- RCTParseObjCMethodName (&methodName , &arguments);
43- XCTAssertEqualObjects (methodName , @" foo:bar:" );
41+ NSString *methodSignature = @" foo:(NSInteger)foo bar:(BOOL)bar" ;
42+ SEL selector = RCTParseMethodSignature (methodSignature , &arguments);
43+ XCTAssertEqualObjects (NSStringFromSelector (selector) , @" foo:bar:" );
4444 XCTAssertEqual (arguments.count , (NSUInteger )2 );
4545 XCTAssertEqualObjects (((RCTMethodArgument *)arguments[0 ]).type , @" NSInteger" );
4646 XCTAssertEqualObjects (((RCTMethodArgument *)arguments[1 ]).type , @" BOOL" );
@@ -49,9 +49,9 @@ - (void)testTwoArguments
4949- (void )testSpaces
5050{
5151 NSArray *arguments;
52- NSString *methodName = @" foo : (NSInteger)foo bar : (BOOL) bar" ;
53- RCTParseObjCMethodName (&methodName , &arguments);
54- XCTAssertEqualObjects (methodName , @" foo:bar:" );
52+ NSString *methodSignature = @" foo : (NSInteger)foo bar : (BOOL) bar" ;
53+ SEL selector = RCTParseMethodSignature (methodSignature , &arguments);
54+ XCTAssertEqualObjects (NSStringFromSelector (selector) , @" foo:bar:" );
5555 XCTAssertEqual (arguments.count , (NSUInteger )2 );
5656 XCTAssertEqualObjects (((RCTMethodArgument *)arguments[0 ]).type , @" NSInteger" );
5757 XCTAssertEqualObjects (((RCTMethodArgument *)arguments[1 ]).type , @" BOOL" );
@@ -60,9 +60,9 @@ - (void)testSpaces
6060- (void )testNewlines
6161{
6262 NSArray *arguments;
63- NSString *methodName = @" foo : (NSInteger)foo\n bar : (BOOL) bar" ;
64- RCTParseObjCMethodName (&methodName , &arguments);
65- XCTAssertEqualObjects (methodName , @" foo:bar:" );
63+ NSString *methodSignature = @" foo : (NSInteger)foo\n bar : (BOOL) bar" ;
64+ SEL selector = RCTParseMethodSignature (methodSignature , &arguments);
65+ XCTAssertEqualObjects (NSStringFromSelector (selector) , @" foo:bar:" );
6666 XCTAssertEqual (arguments.count , (NSUInteger )2 );
6767 XCTAssertEqualObjects (((RCTMethodArgument *)arguments[0 ]).type , @" NSInteger" );
6868 XCTAssertEqualObjects (((RCTMethodArgument *)arguments[1 ]).type , @" BOOL" );
@@ -71,9 +71,9 @@ - (void)testNewlines
7171- (void )testUnnamedArgs
7272{
7373 NSArray *arguments;
74- NSString *methodName = @" foo:(NSInteger)foo:(BOOL)bar" ;
75- RCTParseObjCMethodName (&methodName , &arguments);
76- XCTAssertEqualObjects (methodName , @" foo::" );
74+ NSString *methodSignature = @" foo:(NSInteger)foo:(BOOL)bar" ;
75+ SEL selector = RCTParseMethodSignature (methodSignature , &arguments);
76+ XCTAssertEqualObjects (NSStringFromSelector (selector) , @" foo::" );
7777 XCTAssertEqual (arguments.count , (NSUInteger )2 );
7878 XCTAssertEqualObjects (((RCTMethodArgument *)arguments[0 ]).type , @" NSInteger" );
7979 XCTAssertEqualObjects (((RCTMethodArgument *)arguments[1 ]).type , @" BOOL" );
@@ -82,9 +82,9 @@ - (void)testUnnamedArgs
8282- (void )testUntypedUnnamedArgs
8383{
8484 NSArray *arguments;
85- NSString *methodName = @" foo:foo:bar:bar" ;
86- RCTParseObjCMethodName (&methodName , &arguments);
87- XCTAssertEqualObjects (methodName , @" foo:::" );
85+ NSString *methodSignature = @" foo:foo:bar:bar" ;
86+ SEL selector = RCTParseMethodSignature (methodSignature , &arguments);
87+ XCTAssertEqualObjects (NSStringFromSelector (selector) , @" foo:::" );
8888 XCTAssertEqual (arguments.count , (NSUInteger )3 );
8989 XCTAssertEqualObjects (((RCTMethodArgument *)arguments[0 ]).type , @" id" );
9090 XCTAssertEqualObjects (((RCTMethodArgument *)arguments[1 ]).type , @" id" );
@@ -94,9 +94,9 @@ - (void)testUntypedUnnamedArgs
9494- (void )testAttributes
9595{
9696 NSArray *arguments;
97- NSString *methodName = @" foo:(__attribute__((nonnull )) NSString *)foo bar:(__unused BOOL)bar" ;
98- RCTParseObjCMethodName (&methodName , &arguments);
99- XCTAssertEqualObjects (methodName , @" foo:bar:" );
97+ NSString *methodSignature = @" foo:(__attribute__((unused )) NSString *)foo bar:(__unused BOOL)bar" ;
98+ SEL selector = RCTParseMethodSignature (methodSignature , &arguments);
99+ XCTAssertEqualObjects (NSStringFromSelector (selector) , @" foo:bar:" );
100100 XCTAssertEqual (arguments.count , (NSUInteger )2 );
101101 XCTAssertEqualObjects (((RCTMethodArgument *)arguments[0 ]).type , @" NSString" );
102102 XCTAssertEqualObjects (((RCTMethodArgument *)arguments[1 ]).type , @" BOOL" );
@@ -105,9 +105,9 @@ - (void)testAttributes
105105- (void )testNullability
106106{
107107 NSArray *arguments;
108- NSString *methodName = @" foo:(nullable NSString *)foo bar:(nonnull NSNumber *)bar baz:(id)baz" ;
109- RCTParseObjCMethodName (&methodName , &arguments);
110- XCTAssertEqualObjects (methodName , @" foo:bar:baz:" );
108+ NSString *methodSignature = @" foo:(nullable NSString *)foo bar:(nonnull NSNumber *)bar baz:(id)baz" ;
109+ SEL selector = RCTParseMethodSignature (methodSignature , &arguments);
110+ XCTAssertEqualObjects (NSStringFromSelector (selector) , @" foo:bar:baz:" );
111111 XCTAssertEqual (arguments.count , (NSUInteger )3 );
112112 XCTAssertEqualObjects (((RCTMethodArgument *)arguments[0 ]).type , @" NSString" );
113113 XCTAssertEqualObjects (((RCTMethodArgument *)arguments[1 ]).type , @" NSNumber" );
@@ -120,9 +120,9 @@ - (void)testNullability
120120- (void )testSemicolonStripping
121121{
122122 NSArray *arguments;
123- NSString *methodName = @" foo:(NSString *)foo bar:(BOOL)bar;" ;
124- RCTParseObjCMethodName (&methodName , &arguments);
125- XCTAssertEqualObjects (methodName , @" foo:bar:" );
123+ NSString *methodSignature = @" foo:(NSString *)foo bar:(BOOL)bar;" ;
124+ SEL selector = RCTParseMethodSignature (methodSignature , &arguments);
125+ XCTAssertEqualObjects (NSStringFromSelector (selector) , @" foo:bar:" );
126126 XCTAssertEqual (arguments.count , (NSUInteger )2 );
127127 XCTAssertEqualObjects (((RCTMethodArgument *)arguments[0 ]).type , @" NSString" );
128128 XCTAssertEqualObjects (((RCTMethodArgument *)arguments[1 ]).type , @" BOOL" );
@@ -131,14 +131,54 @@ - (void)testSemicolonStripping
131131- (void )testUnused
132132{
133133 NSArray *arguments;
134- NSString *methodName = @" foo:(__unused NSString *)foo bar:(NSNumber *)bar" ;
135- RCTParseObjCMethodName (&methodName , &arguments);
136- XCTAssertEqualObjects (methodName , @" foo:bar:" );
134+ NSString *methodSignature = @" foo:(__unused NSString *)foo bar:(NSNumber *)bar" ;
135+ SEL selector = RCTParseMethodSignature (methodSignature , &arguments);
136+ XCTAssertEqualObjects (NSStringFromSelector (selector) , @" foo:bar:" );
137137 XCTAssertEqual (arguments.count , (NSUInteger )2 );
138138 XCTAssertEqualObjects (((RCTMethodArgument *)arguments[0 ]).type , @" NSString" );
139139 XCTAssertEqualObjects (((RCTMethodArgument *)arguments[1 ]).type , @" NSNumber" );
140140 XCTAssertTrue (((RCTMethodArgument *)arguments[0 ]).unused );
141141 XCTAssertFalse (((RCTMethodArgument *)arguments[1 ]).unused );
142142}
143143
144+ - (void )testGenericArray
145+ {
146+ NSArray *arguments;
147+ NSString *methodSignature = @" foo:(NSArray<NSString *> *)foo;" ;
148+ SEL selector = RCTParseMethodSignature (methodSignature, &arguments);
149+ XCTAssertEqualObjects (NSStringFromSelector (selector), @" foo:" );
150+ XCTAssertEqual (arguments.count , (NSUInteger )1 );
151+ XCTAssertEqualObjects (((RCTMethodArgument *)arguments[0 ]).type , @" NSStringArray" );
152+ }
153+
154+ - (void )testNestedGenericArray
155+ {
156+ NSArray *arguments;
157+ NSString *methodSignature = @" foo:(NSArray<NSArray<NSString *> *> *)foo;" ;
158+ SEL selector = RCTParseMethodSignature (methodSignature, &arguments);
159+ XCTAssertEqualObjects (NSStringFromSelector (selector), @" foo:" );
160+ XCTAssertEqual (arguments.count , (NSUInteger )1 );
161+ XCTAssertEqualObjects (((RCTMethodArgument *)arguments[0 ]).type , @" NSStringArrayArray" );
162+ }
163+
164+ - (void )testGenericSet
165+ {
166+ NSArray *arguments;
167+ NSString *methodSignature = @" foo:(NSSet<NSNumber *> *)foo;" ;
168+ SEL selector = RCTParseMethodSignature (methodSignature, &arguments);
169+ XCTAssertEqualObjects (NSStringFromSelector (selector), @" foo:" );
170+ XCTAssertEqual (arguments.count , (NSUInteger )1 );
171+ XCTAssertEqualObjects (((RCTMethodArgument *)arguments[0 ]).type , @" NSNumberSet" );
172+ }
173+
174+ - (void )testGenericDictionary
175+ {
176+ NSArray *arguments;
177+ NSString *methodSignature = @" foo:(NSDictionary<NSString *, NSNumber *> *)foo;" ;
178+ SEL selector = RCTParseMethodSignature (methodSignature, &arguments);
179+ XCTAssertEqualObjects (NSStringFromSelector (selector), @" foo:" );
180+ XCTAssertEqual (arguments.count , (NSUInteger )1 );
181+ XCTAssertEqualObjects (((RCTMethodArgument *)arguments[0 ]).type , @" NSNumberDictionary" );
182+ }
183+
144184@end
0 commit comments