64 строки
2.1 KiB
Objective-C
64 строки
2.1 KiB
Objective-C
/*
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
#import <XCTest/XCTest.h>
|
|
|
|
#import <React/RCTLog.h>
|
|
#import <React/RCTUtils.h>
|
|
|
|
static NSString * RCTLogsError(void (^block)(void))
|
|
{
|
|
__block NSString* loggedMessage = @"";
|
|
__block BOOL loggedError = NO;
|
|
RCTPerformBlockWithLogFunction(block, ^(RCTLogLevel level,
|
|
__unused RCTLogSource source,
|
|
__unused NSString *fileName,
|
|
__unused NSNumber *lineNumber,
|
|
NSString *message) {
|
|
loggedError = (level == RCTLogLevelError);
|
|
loggedMessage = message;
|
|
});
|
|
if (loggedError) {
|
|
return loggedMessage;
|
|
}
|
|
return nil;
|
|
}
|
|
|
|
|
|
@interface RCTUtilsTests : XCTestCase
|
|
|
|
@end
|
|
|
|
@implementation RCTUtilsTests
|
|
|
|
- (void)testRCTHumanReadableType
|
|
{
|
|
XCTAssertEqualObjects(RCTHumanReadableType(@"str"), @"string");
|
|
XCTAssertEqualObjects(RCTHumanReadableType([NSNumber numberWithInt:4]), @"number");
|
|
|
|
// If we could detect that this was definitely a boolean and not a number that would be ideal
|
|
// That seems difficult in ObjC though
|
|
XCTAssertEqualObjects(RCTHumanReadableType(@(YES)), @"boolean or number");
|
|
XCTAssertEqualObjects(RCTHumanReadableType(@(NO)), @"boolean or number");
|
|
// These ideally would just say number
|
|
XCTAssertEqualObjects(RCTHumanReadableType([NSNumber numberWithInt:0]), @"boolean or number");
|
|
XCTAssertEqualObjects(RCTHumanReadableType([NSNumber numberWithInt:1]), @"boolean or number");
|
|
}
|
|
|
|
- (void)testRCTValidateTypeOfViewCommandArgument
|
|
{
|
|
XCTAssertEqualObjects(RCTLogsError(^{
|
|
RCTValidateTypeOfViewCommandArgument(@"str", [NSNumber class], @"number", @"ScrollView", @"scrollTo", @"2nd");
|
|
}), @"ScrollView command scrollTo received 2nd argument of type string, expected number.");
|
|
|
|
XCTAssertEqualObjects(RCTLogsError(^{
|
|
RCTValidateTypeOfViewCommandArgument(@"str", [NSString class], @"string", @"ScrollView", @"scrollTo", @"1st");
|
|
}), nil);
|
|
}
|
|
|
|
@end
|