From 58aeb2e40f6da4e22344065bf79b7136fd1af342 Mon Sep 17 00:00:00 2001 From: Martin Carlberg Date: Fri, 20 Nov 2015 14:54:23 +0100 Subject: [PATCH] Fixed: Add test cases --- .../Preprocessor/BehaviorTests/MethodTest.j | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/Tests/Objective-J/Preprocessor/BehaviorTests/MethodTest.j b/Tests/Objective-J/Preprocessor/BehaviorTests/MethodTest.j index 99aef883b..3d70e07ce 100644 --- a/Tests/Objective-J/Preprocessor/BehaviorTests/MethodTest.j +++ b/Tests/Objective-J/Preprocessor/BehaviorTests/MethodTest.j @@ -80,4 +80,53 @@ [self assert:-6 equals:[testClass void:10 in:4]]; } +- (void)testMethodName +{ + var method = class_getInstanceMethod(MathClass, @selector(sqrt:)); + + [self assert:method_getName(method) equals:@"sqrt:"]; +} + +- (void)testMethodNoArguments +{ + var method = class_getInstanceMethod(MathClass, @selector(five)); + + [self assert:method_getNumberOfArguments(method) equals:0]; + + method = class_getInstanceMethod(MathClass, @selector(multiply:)); + [self assert:method_getNumberOfArguments(method) equals:1]; + + method = class_getInstanceMethod(MathClass, @selector(multiply:with:)); + [self assert:method_getNumberOfArguments(method) equals:2]; +} + +- (void)testMethodTypes +{ + var theClass = objj_allocateClassPair(CPObject, RAND() + ""); + + objj_registerClassPair(theClass); + class_addMethod(theClass, @"myMethod:", function() { }, ["void", "CPNumber"]); + class_addMethod(theClass, @"myMethod2:", function() { }, ["int", "float"]); + class_addMethod(theClass, @"myMethod3:", function() { }); + [theClass new]; + + var method = class_getInstanceMethod(theClass, @selector(myMethod:)); + + [self assert:method_copyReturnType(method) equals:@"void" message:@"Return type of method 'myMethod:'"]; + [self assert:method_copyArgumentType(method, 0) equals:@"CPNumber"]; + [self assertTrue:method_copyArgumentType(method, 1) === nil]; + [self assert:method_getNumberOfArguments(method) equals:1]; + + method = class_getInstanceMethod(theClass, @selector(myMethod2:)); + [self assert:method_copyReturnType(method) equals:@"int" message:@"Return type of method 'myMethod2:'"]; + [self assert:method_copyArgumentType(method, 0) equals:@"float"]; + [self assertTrue:method_copyArgumentType(method, 1) === nil]; + [self assert:method_getNumberOfArguments(method) equals:1]; + + method = class_getInstanceMethod(theClass, @selector(myMethod3:)); + [self assertTrue:method_copyReturnType(method) == nil]; + [self assertTrue:method_copyArgumentType(method, 0) === nil]; + [self assert:method_getNumberOfArguments(method) equals:1]; +} + @end