fix phone number parsing test

pull/1/head
Michael Kirk 7 years ago committed by Matthew Chen
parent f5a36ad5b7
commit ea76ea9492

@ -1,5 +1,5 @@
//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// Copyright (c) 2019 Open Whisper Systems. All rights reserved.
//
#import "PhoneNumber.h"
@ -203,8 +203,10 @@ static NSString *const RPDefaultsKeyPhoneNumberCanonical = @"RPDefaultsKeyPhoneN
static NSString *result = nil;
static NSString *cachedClientPhoneNumber = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
// clientPhoneNumber is the local user's phone number and should never change.
// clientPhoneNumber is the local user's phone number and should never change.
static void (^updateCachedClientPhoneNumber)(void);
updateCachedClientPhoneNumber = ^(void) {
NSNumber *localCallingCode = [[PhoneNumber phoneNumberFromE164:clientPhoneNumber] getCountryCode];
if (localCallingCode != nil) {
NSString *localCallingCodePrefix = [NSString stringWithFormat:@"+%@", localCallingCode];
@ -214,11 +216,30 @@ static NSString *const RPDefaultsKeyPhoneNumberCanonical = @"RPDefaultsKeyPhoneN
NBMetadataHelper *helper = [[NBMetadataHelper alloc] init];
NBPhoneMetaData *localNumberRegionMetadata = [helper getMetadataForRegion:localCountryCode];
result = localNumberRegionMetadata.nationalPrefixTransformRule;
} else {
result = nil;
}
}
cachedClientPhoneNumber = [clientPhoneNumber copy];
};
#ifdef DEBUG
// For performance, we want to cahce this result, but it breaks tests since local number
// can change.
if (CurrentAppContext().isRunningTests) {
updateCachedClientPhoneNumber();
} else {
dispatch_once(&onceToken, ^{
updateCachedClientPhoneNumber();
});
}
#else
dispatch_once(&onceToken, ^{
updateCachedClientPhoneNumber();
});
OWSAssertDebug([cachedClientPhoneNumber isEqualToString:clientPhoneNumber]);
#endif
return result;
}

@ -1,5 +1,5 @@
//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// Copyright (c) 2019 Open Whisper Systems. All rights reserved.
//
#import "PhoneNumber.h"
@ -13,13 +13,10 @@
@implementation PhoneNumberTest
#ifdef BROKEN_TESTS
-(void)testE164 {
XCTAssertEqualObjects(@"+19025555555", [[PhoneNumber tryParsePhoneNumberFromUserSpecifiedText:@"+1 (902) 555-5555"] toE164]);
XCTAssertEqualObjects(@"+19025555555", [[PhoneNumber tryParsePhoneNumberFromUserSpecifiedText:@"1 (902) 555-5555"] toE164]);
XCTAssertEqualObjects(@"+19025555555", [[PhoneNumber tryParsePhoneNumberFromUserSpecifiedText:@"1-902-555-5555"] toE164]);
XCTAssertEqualObjects(@"+19025555555", [[PhoneNumber tryParsePhoneNumberFromUserSpecifiedText:@"1-902--5555"] toE164]);
// Phone numbers missing a calling code.
XCTAssertEqualObjects(@"+19025555555", [[PhoneNumber tryParsePhoneNumberFromUserSpecifiedText:@"9025555555"] toE164]);
@ -132,6 +129,4 @@
XCTAssertTrue([parsed containsObject:@"+13235551234"]);
}
#endif
@end

Loading…
Cancel
Save