Remove redundant Signal tests

These tests were for features that we'll never use (e.g. phone number related stuff)
This commit is contained in:
nielsandriesse 2020-04-25 12:35:17 +10:00
parent a65235fd3a
commit 521a2fcf9d
10 changed files with 0 additions and 1011 deletions

View file

@ -408,7 +408,6 @@
457F671B20746193000EABCD /* QuotedReplyPreview.swift in Sources */ = {isa = PBXBuildFile; fileRef = 457F671A20746193000EABCD /* QuotedReplyPreview.swift */; };
45847E871E4283C30080EAB3 /* Intents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 45847E861E4283C30080EAB3 /* Intents.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
4585C4681ED8F8D200896AEA /* SafetyNumberConfirmationAlert.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4585C4671ED8F8D200896AEA /* SafetyNumberConfirmationAlert.swift */; };
458967111DC117CC00E9DD21 /* AccountManagerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 458967101DC117CC00E9DD21 /* AccountManagerTest.swift */; };
458DE9D61DEE3FD00071BB03 /* PeerConnectionClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 458DE9D51DEE3FD00071BB03 /* PeerConnectionClient.swift */; };
458E38371D668EBF0094BD24 /* OWSDeviceProvisioningURLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 458E38361D668EBF0094BD24 /* OWSDeviceProvisioningURLParser.m */; };
458E383A1D6699FA0094BD24 /* OWSDeviceProvisioningURLParserTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 458E38391D6699FA0094BD24 /* OWSDeviceProvisioningURLParserTest.m */; };
@ -490,9 +489,7 @@
4C3EF802210918740007EBF7 /* SSKProtoEnvelopeTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C3EF801210918740007EBF7 /* SSKProtoEnvelopeTest.swift */; };
4C4AE6A1224AF35700D4AF6F /* SendMediaNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C4AE69F224AF21900D4AF6F /* SendMediaNavigationController.swift */; };
4C4AEC4520EC343B0020E72B /* DismissableTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C4AEC4420EC343B0020E72B /* DismissableTextField.swift */; };
4C4BC6C32102D697004040C9 /* ContactDiscoveryOperationTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C4BC6C22102D697004040C9 /* ContactDiscoveryOperationTest.swift */; };
4C5250D221E7BD7D00CE3D95 /* PhoneNumberValidator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C5250D121E7BD7D00CE3D95 /* PhoneNumberValidator.swift */; };
4C5250D421E7C51900CE3D95 /* PhoneNumberValidatorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C5250D321E7C51900CE3D95 /* PhoneNumberValidatorTest.swift */; };
4C586926224FAB83003FD070 /* AVAudioSession+OWS.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C586925224FAB83003FD070 /* AVAudioSession+OWS.m */; };
4C618199219DF03A009BD6B5 /* OWSButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C618198219DF03A009BD6B5 /* OWSButton.swift */; };
4C61819F219E1796009BD6B5 /* typing-animation-dark.gif in Resources */ = {isa = PBXBuildFile; fileRef = 4C61819E219E1795009BD6B5 /* typing-animation-dark.gif */; };
@ -525,7 +522,6 @@
7BDCFC08242186E700641C39 /* NotificationServiceExtensionContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BDCFC07242186E700641C39 /* NotificationServiceExtensionContext.swift */; };
7BDCFC092421894900641C39 /* MessageFetcherJob.swift in Sources */ = {isa = PBXBuildFile; fileRef = 452ECA4C1E087E7200E2F016 /* MessageFetcherJob.swift */; };
7BDCFC0B2421EB7600641C39 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = B6F509951AA53F760068F56A /* Localizable.strings */; };
954AEE6A1DF33E01002E5410 /* ContactsPickerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 954AEE681DF33D32002E5410 /* ContactsPickerTest.swift */; };
A10FDF79184FB4BB007FF963 /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76C87F18181EFCE600C4ACAB /* MediaPlayer.framework */; };
A11CD70D17FA230600A2D1B1 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A11CD70C17FA230600A2D1B1 /* QuartzCore.framework */; };
A123C14916F902EE000AE905 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A163E8AA16F3F6A90094D68B /* Security.framework */; };
@ -1238,7 +1234,6 @@
45855F361D9498A40084F340 /* OWSContactAvatarBuilder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSContactAvatarBuilder.m; sourceTree = "<group>"; };
4585C4671ED8F8D200896AEA /* SafetyNumberConfirmationAlert.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SafetyNumberConfirmationAlert.swift; sourceTree = "<group>"; };
4589670F1DC117CC00E9DD21 /* SignalTests-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SignalTests-Bridging-Header.h"; sourceTree = "<group>"; };
458967101DC117CC00E9DD21 /* AccountManagerTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AccountManagerTest.swift; path = Models/AccountManagerTest.swift; sourceTree = "<group>"; };
458DE9D51DEE3FD00071BB03 /* PeerConnectionClient.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PeerConnectionClient.swift; sourceTree = "<group>"; };
458E38351D668EBF0094BD24 /* OWSDeviceProvisioningURLParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSDeviceProvisioningURLParser.h; sourceTree = "<group>"; };
458E38361D668EBF0094BD24 /* OWSDeviceProvisioningURLParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSDeviceProvisioningURLParser.m; sourceTree = "<group>"; };
@ -1334,9 +1329,7 @@
4C3EF801210918740007EBF7 /* SSKProtoEnvelopeTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SSKProtoEnvelopeTest.swift; sourceTree = "<group>"; };
4C4AE69F224AF21900D4AF6F /* SendMediaNavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SendMediaNavigationController.swift; sourceTree = "<group>"; };
4C4AEC4420EC343B0020E72B /* DismissableTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DismissableTextField.swift; sourceTree = "<group>"; };
4C4BC6C22102D697004040C9 /* ContactDiscoveryOperationTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ContactDiscoveryOperationTest.swift; path = contact/ContactDiscoveryOperationTest.swift; sourceTree = "<group>"; };
4C5250D121E7BD7D00CE3D95 /* PhoneNumberValidator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhoneNumberValidator.swift; sourceTree = "<group>"; };
4C5250D321E7C51900CE3D95 /* PhoneNumberValidatorTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhoneNumberValidatorTest.swift; sourceTree = "<group>"; };
4C586924224FAB83003FD070 /* AVAudioSession+OWS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "AVAudioSession+OWS.h"; path = "util/UI Categories/AVAudioSession+OWS.h"; sourceTree = "<group>"; };
4C586925224FAB83003FD070 /* AVAudioSession+OWS.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "AVAudioSession+OWS.m"; path = "util/UI Categories/AVAudioSession+OWS.m"; sourceTree = "<group>"; };
4C618198219DF03A009BD6B5 /* OWSButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OWSButton.swift; sourceTree = "<group>"; };
@ -1379,7 +1372,6 @@
8981C8F64D94D3C52EB67A2C /* Pods-SignalTests.test.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SignalTests.test.xcconfig"; path = "Pods/Target Support Files/Pods-SignalTests/Pods-SignalTests.test.xcconfig"; sourceTree = "<group>"; };
8EEE74B0753448C085B48721 /* Pods-SignalMessaging.app store release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SignalMessaging.app store release.xcconfig"; path = "Pods/Target Support Files/Pods-SignalMessaging/Pods-SignalMessaging.app store release.xcconfig"; sourceTree = "<group>"; };
948239851C08032C842937CC /* Pods-SignalMessaging.test.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SignalMessaging.test.xcconfig"; path = "Pods/Target Support Files/Pods-SignalMessaging/Pods-SignalMessaging.test.xcconfig"; sourceTree = "<group>"; };
954AEE681DF33D32002E5410 /* ContactsPickerTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContactsPickerTest.swift; sourceTree = "<group>"; };
9B533A9FA46206D3D99C9ADA /* Pods-SignalMessaging.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SignalMessaging.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SignalMessaging/Pods-SignalMessaging.debug.xcconfig"; sourceTree = "<group>"; };
A11CD70C17FA230600A2D1B1 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
A163E8AA16F3F6A90094D68B /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
@ -2474,11 +2466,8 @@
458E38381D6699110094BD24 /* Models */ = {
isa = PBXGroup;
children = (
4C5250D321E7C51900CE3D95 /* PhoneNumberValidatorTest.swift */,
4C04F58321C860C50090D0BB /* MantlePerfTest.swift */,
4C4BC6C22102D697004040C9 /* ContactDiscoveryOperationTest.swift */,
458E38391D6699FA0094BD24 /* OWSDeviceProvisioningURLParserTest.m */,
458967101DC117CC00E9DD21 /* AccountManagerTest.swift */,
);
name = Models;
sourceTree = "<group>";
@ -2713,7 +2702,6 @@
children = (
34C6B0A41FA0E46F00D35993 /* Assets */,
B660F6731C29867F00687D6E /* call */,
B660F6751C29867F00687D6E /* contact */,
34843B29214FE295004DED45 /* mocks */,
458E38381D6699110094BD24 /* Models */,
34843B2321432293004DED45 /* SignalBaseTest.h */,
@ -2737,14 +2725,6 @@
path = call;
sourceTree = "<group>";
};
B660F6751C29867F00687D6E /* contact */ = {
isa = PBXGroup;
children = (
954AEE681DF33D32002E5410 /* ContactsPickerTest.swift */,
);
path = contact;
sourceTree = "<group>";
};
B660F69D1C29868000687D6E /* Supporting Files */ = {
isa = PBXGroup;
children = (
@ -4282,7 +4262,6 @@
buildActionMask = 2147483647;
files = (
456F6E2F1E261D1000FD2210 /* PeerConnectionClientTest.swift in Sources */,
458967111DC117CC00E9DD21 /* AccountManagerTest.swift in Sources */,
3491D9A121022DB7001EF5A1 /* CDSSigningCertificateTest.m in Sources */,
34BBC861220E883300857249 /* ImageEditorModelTest.swift in Sources */,
340B02BA1FA0D6C700F9CFEC /* ConversationViewItemTest.m in Sources */,
@ -4296,7 +4275,6 @@
34843B2C214FE296004DED45 /* MockEnvironment.m in Sources */,
45360B911F952AA900FA666C /* MarqueeLabel.swift in Sources */,
454EBAB41F2BE14C00ACE0BB /* OWSAnalytics.swift in Sources */,
954AEE6A1DF33E01002E5410 /* ContactsPickerTest.swift in Sources */,
45666F581D9B2880008FE134 /* OWSScrubbingLogFormatterTest.m in Sources */,
B660F6E01C29868000687D6E /* UtilTest.m in Sources */,
4C3EF7FD2107DDEE0007EBF7 /* ParamParserTest.swift in Sources */,
@ -4304,9 +4282,7 @@
45E7A6A81E71CA7E00D44FB5 /* DisplayableTextFilterTest.swift in Sources */,
34843B2421432293004DED45 /* SignalBaseTest.m in Sources */,
4C3EF802210918740007EBF7 /* SSKProtoEnvelopeTest.swift in Sources */,
4C5250D421E7C51900CE3D95 /* PhoneNumberValidatorTest.swift in Sources */,
452D1AF12081059C00A67F7F /* StringAdditionsTest.swift in Sources */,
4C4BC6C32102D697004040C9 /* ContactDiscoveryOperationTest.swift in Sources */,
455AC69E1F4F8B0300134004 /* ImageCacheTest.swift in Sources */,
34E8A8D12085238A00B272B1 /* ProtoParsingTest.m in Sources */,
);

View file

@ -1,157 +0,0 @@
//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
import XCTest
import PromiseKit
import SignalServiceKit
@testable import Session
struct VerificationFailedError: Error { }
struct FailedToGetRPRegistrationTokenError: Error { }
enum PushNotificationRequestResult: String {
case FailTSOnly = "FailTSOnly",
FailRPOnly = "FailRPOnly",
FailBoth = "FailBoth",
Succeed = "Succeed"
}
class FailingTSAccountManager: TSAccountManager {
override public init(primaryStorage: OWSPrimaryStorage) {
AssertIsOnMainThread()
super.init(primaryStorage: primaryStorage)
self.phoneNumberAwaitingVerification = "+13235555555"
}
override func verifyAccount(withCode: String,
pin: String?,
success: @escaping () -> Void, failure: @escaping (Error) -> Void) {
failure(VerificationFailedError())
}
override func registerForPushNotifications(pushToken: String, voipToken: String, isForcedUpdate: Bool, success successHandler: @escaping () -> Void, failure failureHandler: @escaping (Error) -> Void) {
if pushToken == PushNotificationRequestResult.FailTSOnly.rawValue || pushToken == PushNotificationRequestResult.FailBoth.rawValue {
failureHandler(OWSErrorMakeUnableToProcessServerResponseError())
} else {
successHandler()
}
}
}
class VerifyingTSAccountManager: FailingTSAccountManager {
override func verifyAccount(withCode: String,
pin: String?,
success: @escaping () -> Void, failure: @escaping (Error) -> Void) {
success()
}
override func performUpdateAccountAttributes() -> AnyPromise {
return AnyPromise(Promise.value(()))
}
}
class TokenObtainingTSAccountManager: VerifyingTSAccountManager {
}
class VerifyingPushRegistrationManager: PushRegistrationManager {
public override func requestPushTokens() -> Promise<(pushToken: String, voipToken: String)> {
return Promise.value(("a", "b"))
}
}
class AccountManagerTest: SignalBaseTest {
override func setUp() {
super.setUp()
let tsAccountManager = FailingTSAccountManager(primaryStorage: OWSPrimaryStorage.shared())
let sskEnvironment = SSKEnvironment.shared as! MockSSKEnvironment
sskEnvironment.tsAccountManager = tsAccountManager
}
override func tearDown() {
super.tearDown()
}
func testRegisterWhenEmptyCode() {
let accountManager = AccountManager()
let expectation = self.expectation(description: "should fail")
firstly {
accountManager.register(verificationCode: "", pin: "")
}.done {
XCTFail("Should fail")
}.catch { error in
let nserror = error as NSError
if OWSErrorCode(rawValue: nserror.code) == OWSErrorCode.userError {
expectation.fulfill()
} else {
XCTFail("Unexpected error: \(error)")
}
}.retainUntilComplete()
self.waitForExpectations(timeout: 1.0, handler: nil)
}
func testRegisterWhenVerificationFails() {
let accountManager = AccountManager()
let expectation = self.expectation(description: "should fail")
firstly {
accountManager.register(verificationCode: "123456", pin: "")
}.done {
XCTFail("Should fail")
}.catch { error in
if error is VerificationFailedError {
expectation.fulfill()
} else {
XCTFail("Unexpected error: \(error)")
}
}.retainUntilComplete()
self.waitForExpectations(timeout: 1.0, handler: nil)
}
func testSuccessfulRegistration() {
let tsAccountManager = TokenObtainingTSAccountManager(primaryStorage: OWSPrimaryStorage.shared())
let sskEnvironment = SSKEnvironment.shared as! MockSSKEnvironment
sskEnvironment.tsAccountManager = tsAccountManager
AppEnvironment.shared.pushRegistrationManager = VerifyingPushRegistrationManager()
let accountManager = AccountManager()
let expectation = self.expectation(description: "should succeed")
firstly {
accountManager.register(verificationCode: "123456", pin: "")
}.done {
expectation.fulfill()
}.catch { error in
XCTFail("Unexpected error: \(error)")
}.retainUntilComplete()
self.waitForExpectations(timeout: 1.0, handler: nil)
}
func testUpdatePushTokens() {
let accountManager = AccountManager()
let expectation = self.expectation(description: "should fail")
firstly {
accountManager.updatePushTokens(pushToken: PushNotificationRequestResult.FailTSOnly.rawValue, voipToken: "whatever", isForcedUpdate: false)
}.done {
XCTFail("Expected to fail.")
}.catch { _ in
expectation.fulfill()
}.retainUntilComplete()
self.waitForExpectations(timeout: 1.0, handler: nil)
}
}

View file

@ -1,69 +0,0 @@
//
// Copyright (c) 2019 Open Whisper Systems. All rights reserved.
//
import XCTest
import Session
class PhoneNumberValidatorTest: SignalBaseTest {
func assertValid(e164: String,
file: StaticString = #file,
line: UInt = #line) {
let validator = PhoneNumberValidator()
guard let phoneNumber = PhoneNumber(fromE164: e164) else {
XCTFail("unparseable phone number", file: file, line: line)
return
}
let isValid = validator.isValidForRegistration(phoneNumber: phoneNumber)
XCTAssertTrue(isValid, file: file, line: line)
}
func assertInvalid(e164: String,
file: StaticString = #file,
line: UInt = #line) {
let validator = PhoneNumberValidator()
guard let phoneNumber = PhoneNumber(fromE164: e164) else {
XCTFail("unparseable phone number", file: file, line: line)
return
}
let isValid = validator.isValidForRegistration(phoneNumber: phoneNumber)
XCTAssertFalse(isValid, file: file, line: line)
}
func testUnitedStates() {
// valid us number
assertValid(e164: "+13235551234")
// too short
assertInvalid(e164: "+1323555123")
// too long
assertInvalid(e164: "+132355512345")
// not a US phone number
assertValid(e164: "+3235551234")
}
func testBrazil() {
// valid mobile
assertValid(e164: "+5532912345678")
// valid landline
assertValid(e164: "+553212345678")
// mobile length, but with out the leading '9'
assertInvalid(e164: "+5532812345678")
// too short
assertInvalid(e164: "+5532812345678")
// too long landline
assertInvalid(e164: "+5532123456789")
assertInvalid(e164: "+55321234567890")
// too long mobile
assertInvalid(e164: "+55329123456789")
assertInvalid(e164: "+553291234567890")
}
}

View file

@ -1,60 +0,0 @@
//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
import XCTest
@testable import SignalServiceKit
class ContactDiscoveryOperationTest: SignalBaseTest {
override func setUp() {
super.setUp()
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
super.tearDown()
}
func tesBoolArrayFromEmptyData() {
let data = Data()
let bools = CDSBatchOperation.boolArray(data: data)
XCTAssert(bools == [])
}
func testBoolArrayFromFalseByte() {
let data = Data(repeating: 0x00, count: 4)
let bools = CDSBatchOperation.boolArray(data: data)
XCTAssert(bools == [false, false, false, false])
}
func testBoolArrayFromTrueByte() {
let data = Data(repeating: 0x01, count: 4)
let bools = CDSBatchOperation.boolArray(data: data)
XCTAssert(bools == [true, true, true, true])
}
func testBoolArrayFromMixedBytes() {
let data = Data(bytes: [0x01, 0x00, 0x01, 0x01])
let bools = CDSBatchOperation.boolArray(data: data)
XCTAssert(bools == [true, false, true, true])
}
func testEncodeNumber() {
let recipientIds = [ "+1011" ]
let actual = try! CDSBatchOperation.encodePhoneNumbers(recipientIds: recipientIds)
let expected: Data = Data(bytes: [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf3])
XCTAssertEqual(expected, actual)
}
func testEncodeMultipleNumber() {
let recipientIds = [ "+1011", "+15551231234"]
let actual = try! CDSBatchOperation.encodePhoneNumbers(recipientIds: recipientIds)
let expected: Data = Data(bytes: [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf3,
0x00, 0x00, 0x00, 0x03, 0x9e, 0xec, 0xf5, 0x02])
XCTAssertEqual(expected, actual)
}
}

View file

@ -1,83 +0,0 @@
//
// Copyright (c) 2019 Open Whisper Systems. All rights reserved.
//
import XCTest
import Contacts
@testable import Session
final class ContactsPickerTest: SignalBaseTest {
private var prevLang: Any?
override func setUp() {
super.setUp()
prevLang = getLang()
}
override func tearDown() {
super.tearDown()
if let prevLang = prevLang {
setLang(value: prevLang)
}
}
func testContactSectionMatchesEmailFirstLetterWhenOnlyEmailContact() {
setLangEN()
let emailOnlyContactB = CNMutableContact()
emailOnlyContactB.emailAddresses.append(CNLabeledValue(label: nil, value: "bla@bla.com"))
let emailOnlyContactD = CNMutableContact()
emailOnlyContactD.emailAddresses.append(CNLabeledValue(label: nil, value: "dude@bla.com"))
let contactsPicker = ContactsPicker(allowsMultipleSelection: false, subtitleCellType: .phoneNumber)
let collatedContacts = contactsPicker.collatedContacts([emailOnlyContactB, emailOnlyContactD])
let sectionTitles = contactsPicker.collationForTests.sectionTitles
if let bIndex = sectionTitles.firstIndex(of: "B") {
let bSectionContacts = collatedContacts[bIndex]
XCTAssertEqual(bSectionContacts.first, emailOnlyContactB)
}
if let dIndex = sectionTitles.firstIndex(of: "D") {
let dSectionContacts = collatedContacts[dIndex]
XCTAssertEqual(dSectionContacts.first, emailOnlyContactD)
}
}
func testContactSectionMatchesNameFirstLetterWhenNameExistsInContact() {
setLangEN()
let nameAndEmailContact = CNMutableContact()
nameAndEmailContact.givenName = "Alice"
nameAndEmailContact.emailAddresses.append(CNLabeledValue(label: nil, value: "nameAndEmail@bla.com"))
let contactsPicker = ContactsPicker(allowsMultipleSelection: false, subtitleCellType: .phoneNumber)
let collatedContacts = contactsPicker.collatedContacts([nameAndEmailContact])
let sectionTitles = contactsPicker.collationForTests.sectionTitles
if let aIndex = sectionTitles.firstIndex(of: "A") {
let aSectionContacts = collatedContacts[aIndex]
XCTAssertEqual(aSectionContacts.first, nameAndEmailContact)
}
}
private func setLangEN() {
setLang(value: "en")
}
private func setLang(value: Any) {
UserDefaults.standard.set(value, forKey: "AppleLanguages")
UserDefaults.standard.synchronize()
}
private func setLang(value: String) {
setLang(value: [value])
}
private func getLang() -> Any? {
return UserDefaults.standard.value(forKey: "AppleLanguages")
}
}

View file

@ -1,122 +0,0 @@
//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
#import "Contact.h"
#import "SSKBaseTestObjC.h"
@import Contacts;
NS_ASSUME_NONNULL_BEGIN
@interface ContactSortingTest : SSKBaseTestObjC
@end
@implementation ContactSortingTest
- (void)setUp
{
[super setUp];
srandom((unsigned int)time(NULL));
}
- (void)testSortingNamesByFirstLast
{
NSComparator comparator = [Contact comparatorSortingNamesByFirstThenLast:YES];
NSArray<Contact *>*sortedContacts = [self.class contactArrayForNames:@[@[@"Adam", @"Smith"],
@[@"Adam", @"West"],
@[@"", @"Daisy"],
@[@"Daisy", @"Chain"],
@[@"Daisy", @"Duke"],
@[@"James", @"Smith"],
@[@"James", @"Van"],
@[@"James", @"Van Der Beek"],
@[@"Kevin", @"Smith"],
@[@"Mae", @"West"],
@[@"Mary", @"Oliver"],
@[@"Mary Jo", @"Catlett"],
]];
NSUInteger numContacts = sortedContacts.count;
for (NSUInteger i = 0; i < 20; i++) {
NSArray *shuffledContacts = [self.class shuffleArray:sortedContacts];
NSArray *resortedContacts = [shuffledContacts sortedArrayUsingComparator:comparator];
for (NSUInteger j = 0; j < numContacts; j++) {
Contact *a = sortedContacts[j];
Contact *b = resortedContacts[j];
BOOL correct = ([a.firstName isEqualToString:b.firstName] && [a.lastName isEqualToString:b.lastName]);
if (!correct) {
XCTFail(@"Contacts failed to sort names by first, last");
break;
}
}
}
}
- (void)testSortingNamesByLastFirst
{
NSComparator comparator = [Contact comparatorSortingNamesByFirstThenLast:NO];
NSArray<Contact *>*sortedContacts = [self.class contactArrayForNames:@[@[@"Mary Jo", @"Catlett"],
@[@"Daisy", @"Chain"],
@[@"", @"Daisy"],
@[@"Daisy", @"Duke"],
@[@"Mary", @"Oliver"],
@[@"Adam", @"Smith"],
@[@"James", @"Smith"],
@[@"Kevin", @"Smith"],
@[@"James", @"Van"],
@[@"James", @"Van Der Beek"],
@[@"Adam", @"West"],
@[@"Mae", @"West"],
]];
NSUInteger numContacts = sortedContacts.count;
for (NSUInteger i = 0; i < 20; i++) {
NSArray *shuffledContacts = [self.class shuffleArray:sortedContacts];
NSArray *resortedContacts = [shuffledContacts sortedArrayUsingComparator:comparator];
for (NSUInteger j = 0; j < numContacts; j++) {
Contact *a = sortedContacts[j];
Contact *b = resortedContacts[j];
BOOL correct = ([a.firstName isEqualToString:b.firstName] && [a.lastName isEqualToString:b.lastName]);
if (!correct) {
XCTFail(@"Contacts failed to sort names by last, first");
break;
}
}
}
}
+ (NSArray<Contact *> *)contactArrayForNames:(NSArray<NSArray<NSString *>*>*)namePairs
{
NSMutableArray<Contact *>*contacts = [[NSMutableArray alloc] initWithCapacity:namePairs.count];
for (NSArray<NSString *>*namePair in namePairs) {
CNMutableContact *cnContact = [CNMutableContact new];
cnContact.givenName = namePair[0];
cnContact.familyName = namePair[1];
Contact *c = [[Contact alloc] initWithSystemContact:cnContact];
[contacts addObject:c];
}
return [contacts copy]; // Return an immutable for good hygene
}
+ (NSArray*)shuffleArray:(NSArray *)array
{
NSMutableArray *shuffled = [[NSMutableArray alloc] initWithArray:array];
for(NSUInteger i = [array count]; i > 1; i--) {
NSUInteger j = arc4random_uniform((uint32_t)i);
[shuffled exchangeObjectAtIndex:(i - 1) withObjectAtIndex:j];
}
return [shuffled copy]; // Return an immutable for good hygene
}
@end
NS_ASSUME_NONNULL_END

View file

@ -1,202 +0,0 @@
//
// Copyright (c) 2019 Open Whisper Systems. All rights reserved.
//
#import "PhoneNumber.h"
#import "SSKBaseTestObjC.h"
@interface PhoneNumberTest : SSKBaseTestObjC
@end
#pragma mark -
@implementation PhoneNumberTest
-(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]);
// Phone numbers missing a calling code.
XCTAssertEqualObjects(@"+19025555555", [[PhoneNumber tryParsePhoneNumberFromUserSpecifiedText:@"9025555555"] toE164]);
// Phone numbers with a calling code but without a plus
XCTAssertEqualObjects(@"+19025555555", [[PhoneNumber tryParsePhoneNumberFromUserSpecifiedText:@"19025555555"] toE164]);
// Empty input.
XCTAssertEqualObjects(nil, [[PhoneNumber tryParsePhoneNumberFromUserSpecifiedText:@""] toE164]);
}
- (void)testTryParsePhoneNumberFromUserSpecifiedTextAssumesLocalRegion {
PhoneNumber *actual = [PhoneNumber tryParsePhoneNumberFromUserSpecifiedText:@"3235551234"];
XCTAssertEqualObjects(@"+13235551234", [actual toE164]);
}
- (void)testTryParsePhoneNumberFromUserSpecifiedTextWithExplicitRegionCode {
PhoneNumber *actual = [PhoneNumber tryParsePhoneNumberFromUserSpecifiedText:@"+33 1 70 39 38 00"];
XCTAssertEqualObjects(@"+33170393800", [actual toE164]);
}
- (void)testTryParsePhoneNumberFromUserSpecifiedTextWithoutPlus {
PhoneNumber *actual = [PhoneNumber tryParsePhoneNumberFromUserSpecifiedText:@"33 1 70 39 38 00"];
// This might not be desired, but documents existing behavior.
// You *must* include a plus when dialing outside of your locale.
XCTAssertEqualObjects(@"+133170393800", [actual toE164]);
}
- (void)testTryParsePhoneNumberFromUserSpecifiedTextRemovesAnyFormatting {
PhoneNumber *actual = [PhoneNumber tryParsePhoneNumberFromUserSpecifiedText:@"323 555 1234"];
XCTAssertEqualObjects(@"+13235551234", [actual toE164]);
actual = [PhoneNumber tryParsePhoneNumberFromUserSpecifiedText:@"323-555-1234"];
XCTAssertEqualObjects(@"+13235551234", [actual toE164]);
actual = [PhoneNumber tryParsePhoneNumberFromUserSpecifiedText:@"323.555.1234"];
XCTAssertEqualObjects(@"+13235551234", [actual toE164]);
actual = [PhoneNumber tryParsePhoneNumberFromUserSpecifiedText:@"1-323-555-1234"];
XCTAssertEqualObjects(@"+13235551234", [actual toE164]);
}
- (NSArray<NSString *> *)unpackTryParsePhoneNumbersFromsUserSpecifiedText:(NSString *)text
clientPhoneNumber:(NSString *)clientPhoneNumber
{
NSArray<PhoneNumber *> *phoneNumbers =
[PhoneNumber tryParsePhoneNumbersFromsUserSpecifiedText:text clientPhoneNumber:clientPhoneNumber];
NSMutableArray<NSString *> *result = [NSMutableArray new];
for (PhoneNumber *phoneNumber in phoneNumbers) {
[result addObject:phoneNumber.toE164];
}
return result;
}
- (void)testTryParsePhoneNumbersFromsUserSpecifiedText_SimpleUSA
{
NSArray<NSString *> *parsed =
[self unpackTryParsePhoneNumbersFromsUserSpecifiedText:@"323 555 1234" clientPhoneNumber:@"+13213214321"];
XCTAssertTrue(parsed.count >= 1);
XCTAssertTrue([parsed containsObject:@"+13235551234"]);
XCTAssertEqualObjects(parsed.firstObject, @"+13235551234");
parsed = [self unpackTryParsePhoneNumbersFromsUserSpecifiedText:@"323-555-1234" clientPhoneNumber:@"+13213214321"];
XCTAssertTrue(parsed.count >= 1);
XCTAssertTrue([parsed containsObject:@"+13235551234"]);
XCTAssertEqualObjects(parsed.firstObject, @"+13235551234");
parsed = [self unpackTryParsePhoneNumbersFromsUserSpecifiedText:@"323.555.1234" clientPhoneNumber:@"+13213214321"];
XCTAssertTrue(parsed.count >= 1);
XCTAssertTrue([parsed containsObject:@"+13235551234"]);
XCTAssertEqualObjects(parsed.firstObject, @"+13235551234");
parsed =
[self unpackTryParsePhoneNumbersFromsUserSpecifiedText:@"1-323-555-1234" clientPhoneNumber:@"+13213214321"];
XCTAssertTrue(parsed.count >= 1);
XCTAssertTrue([parsed containsObject:@"+13235551234"]);
XCTAssertEqualObjects(parsed.firstObject, @"+13235551234");
parsed = [self unpackTryParsePhoneNumbersFromsUserSpecifiedText:@"+13235551234" clientPhoneNumber:@"+13213214321"];
XCTAssertTrue(parsed.count >= 1);
XCTAssertTrue([parsed containsObject:@"+13235551234"]);
XCTAssertEqualObjects(parsed.firstObject, @"+13235551234");
}
- (void)testTryParsePhoneNumbersFromsUserSpecifiedText_Mexico1
{
NSArray<NSString *> *parsed =
[self unpackTryParsePhoneNumbersFromsUserSpecifiedText:@"528341639157" clientPhoneNumber:@"+528341639144"];
XCTAssertTrue(parsed.count >= 1);
XCTAssertTrue([parsed containsObject:@"+528341639157"]);
parsed = [self unpackTryParsePhoneNumbersFromsUserSpecifiedText:@"8341639157" clientPhoneNumber:@"+528341639144"];
XCTAssertTrue(parsed.count >= 1);
XCTAssertTrue([parsed containsObject:@"+528341639157"]);
parsed = [self unpackTryParsePhoneNumbersFromsUserSpecifiedText:@"341639157" clientPhoneNumber:@"+528341639144"];
XCTAssertTrue(parsed.count >= 1);
// The parsing logic should try adding Mexico's national prefix for cell numbers "1"
// after the country code.
XCTAssertTrue([parsed containsObject:@"+52341639157"]);
XCTAssertTrue([parsed containsObject:@"+521341639157"]);
parsed = [self unpackTryParsePhoneNumbersFromsUserSpecifiedText:@"528341639157" clientPhoneNumber:@"+13213214321"];
XCTAssertTrue(parsed.count >= 1);
XCTAssertTrue([parsed containsObject:@"+528341639157"]);
parsed = [self unpackTryParsePhoneNumbersFromsUserSpecifiedText:@"13235551234" clientPhoneNumber:@"+528341639144"];
XCTAssertTrue(parsed.count >= 1);
XCTAssertTrue([parsed containsObject:@"+13235551234"]);
}
- (void)testMissingAreaCode_USA
{
// Add area code to numbers that look like "local" numbers
NSArray<NSString *> *parsed =
[self unpackTryParsePhoneNumbersFromsUserSpecifiedText:@"555-1234" clientPhoneNumber:@"+13233214321"];
XCTAssertTrue([parsed containsObject:@"+13235551234"]);
parsed = [self unpackTryParsePhoneNumbersFromsUserSpecifiedText:@"5551234" clientPhoneNumber:@"+13233214321"];
XCTAssertTrue([parsed containsObject:@"+13235551234"]);
parsed = [self unpackTryParsePhoneNumbersFromsUserSpecifiedText:@"555 1234" clientPhoneNumber:@"+13233214321"];
XCTAssertTrue([parsed containsObject:@"+13235551234"]);
// Don't touch numbers that look like e164, even if they're the same length as a "local" us number
parsed = [self unpackTryParsePhoneNumbersFromsUserSpecifiedText:@"+5551234" clientPhoneNumber:@"+13213214321"];
XCTAssertTrue([parsed containsObject:@"+5551234"]);
// Don't touch numbers that already have an area code
parsed = [self unpackTryParsePhoneNumbersFromsUserSpecifiedText:@"570 555 1234" clientPhoneNumber:@"+13233214321"];
XCTAssertTrue([parsed containsObject:@"+15705551234"]);
// Don't touch numbers that are already in e164
parsed = [self unpackTryParsePhoneNumbersFromsUserSpecifiedText:@"+33170393800" clientPhoneNumber:@"+13213214321"];
XCTAssertTrue([parsed containsObject:@"+33170393800"]);
}
- (void)testMissingAreaCode_Brazil
{
// Add area code to land-line numbers that look like "local" numbers
NSArray<NSString *> *parsed =
[self unpackTryParsePhoneNumbersFromsUserSpecifiedText:@"87654321" clientPhoneNumber:@"+5521912345678"];
XCTAssertTrue([parsed containsObject:@"+552187654321"]);
parsed = [self unpackTryParsePhoneNumbersFromsUserSpecifiedText:@"8765-4321" clientPhoneNumber:@"+5521912345678"];
XCTAssertTrue([parsed containsObject:@"+552187654321"]);
parsed = [self unpackTryParsePhoneNumbersFromsUserSpecifiedText:@"8765 4321" clientPhoneNumber:@"+5521912345678"];
XCTAssertTrue([parsed containsObject:@"+552187654321"]);
// Add area code to mobile numbers that look like "local" numbers
parsed = [self unpackTryParsePhoneNumbersFromsUserSpecifiedText:@"987654321" clientPhoneNumber:@"+5521912345678"];
XCTAssertTrue([parsed containsObject:@"+5521987654321"]);
parsed = [self unpackTryParsePhoneNumbersFromsUserSpecifiedText:@"9 8765-4321" clientPhoneNumber:@"+5521912345678"];
XCTAssertTrue([parsed containsObject:@"+5521987654321"]);
parsed = [self unpackTryParsePhoneNumbersFromsUserSpecifiedText:@"9 8765 4321" clientPhoneNumber:@"+5521912345678"];
XCTAssertTrue([parsed containsObject:@"+5521987654321"]);
// Don't touch numbers that look like e164, even if they're the same length as a "local" us number
parsed = [self unpackTryParsePhoneNumbersFromsUserSpecifiedText:@"+3365-4321" clientPhoneNumber:@"+5521912345678"];
XCTAssertTrue([parsed containsObject:@"+33654321"]);
// Don't touch land-line numbers that already have an area code
parsed =
[self unpackTryParsePhoneNumbersFromsUserSpecifiedText:@"22 8765 4321" clientPhoneNumber:@"+5521912345678"];
XCTAssertTrue([parsed containsObject:@"+552287654321"]);
// Don't touch mobile numbers that already have an area code
parsed =
[self unpackTryParsePhoneNumbersFromsUserSpecifiedText:@"22 9 8765 4321" clientPhoneNumber:@"+5521912345678"];
XCTAssertTrue([parsed containsObject:@"+5522987654321"]);
// Don't touch numbers that are already in e164
parsed =
[self unpackTryParsePhoneNumbersFromsUserSpecifiedText:@"+33170393800" clientPhoneNumber:@"+5521912345678"];
XCTAssertTrue([parsed containsObject:@"+33170393800"]);
}
@end

View file

@ -1,209 +0,0 @@
//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
#import "PhoneNumberUtil.h"
#import "SSKBaseTestObjC.h"
@interface PhoneNumberUtilTest : SSKBaseTestObjC
@end
@implementation PhoneNumberUtilTest
#ifdef BROKEN_TESTS
- (void)testQueryMatching
{
XCTAssertTrue([PhoneNumberUtil name:@"dave" matchesQuery:@"dave"]);
XCTAssertTrue([PhoneNumberUtil name:@"big dave" matchesQuery:@"big dave"]);
XCTAssertTrue([PhoneNumberUtil name:@"big dave" matchesQuery:@"big dave dave"]);
XCTAssertTrue([PhoneNumberUtil name:@"big big dave" matchesQuery:@"big dave"]);
XCTAssertTrue([PhoneNumberUtil name:@"big dave" matchesQuery:@"dave big"]);
XCTAssertTrue([PhoneNumberUtil name:@"big dave" matchesQuery:@"dave"]);
XCTAssertTrue([PhoneNumberUtil name:@"big dave" matchesQuery:@"big"]);
XCTAssertTrue([PhoneNumberUtil name:@"big dave" matchesQuery:@"big "]);
XCTAssertTrue([PhoneNumberUtil name:@"big dave" matchesQuery:@" big "]);
XCTAssertTrue([PhoneNumberUtil name:@"big dave" matchesQuery:@"dav"]);
XCTAssertTrue([PhoneNumberUtil name:@"big dave" matchesQuery:@"bi dav"]);
XCTAssertTrue([PhoneNumberUtil name:@"big dave"
matchesQuery:@"big big big big big big big big big big dave dave dave dave dave"]);
XCTAssertFalse([PhoneNumberUtil name:@"big dave" matchesQuery:@"ave"]);
XCTAssertFalse([PhoneNumberUtil name:@"big dave" matchesQuery:@"dare"]);
XCTAssertFalse([PhoneNumberUtil name:@"big dave" matchesQuery:@"mike"]);
XCTAssertFalse([PhoneNumberUtil name:@"dave" matchesQuery:@"big"]);
}
- (void)testTranslateCursorPosition
{
XCTAssertThrows([PhoneNumberUtil translateCursorPosition:0 from:nil to:@"" stickingRightward:true]);
XCTAssertThrows([PhoneNumberUtil translateCursorPosition:0 from:@"" to:nil stickingRightward:true]);
XCTAssertThrows([PhoneNumberUtil translateCursorPosition:1 from:@"" to:@"" stickingRightward:true]);
XCTAssertEqual(0, [PhoneNumberUtil translateCursorPosition:0 from:@"" to:@"" stickingRightward:true]);
XCTAssertEqual(0, [PhoneNumberUtil translateCursorPosition:0 from:@"12" to:@"1" stickingRightward:true]);
XCTAssertEqual(1, [PhoneNumberUtil translateCursorPosition:1 from:@"12" to:@"1" stickingRightward:true]);
XCTAssertEqual(1, [PhoneNumberUtil translateCursorPosition:2 from:@"12" to:@"1" stickingRightward:true]);
XCTAssertEqual(0, [PhoneNumberUtil translateCursorPosition:0 from:@"1" to:@"12" stickingRightward:false]);
XCTAssertEqual(0, [PhoneNumberUtil translateCursorPosition:0 from:@"1" to:@"12" stickingRightward:true]);
XCTAssertEqual(1, [PhoneNumberUtil translateCursorPosition:1 from:@"1" to:@"12" stickingRightward:false]);
XCTAssertEqual(2, [PhoneNumberUtil translateCursorPosition:1 from:@"1" to:@"12" stickingRightward:true]);
XCTAssertEqual(0, [PhoneNumberUtil translateCursorPosition:0 from:@"12" to:@"132" stickingRightward:false]);
XCTAssertEqual(0, [PhoneNumberUtil translateCursorPosition:0 from:@"12" to:@"132" stickingRightward:true]);
XCTAssertEqual(1, [PhoneNumberUtil translateCursorPosition:1 from:@"12" to:@"132" stickingRightward:false]);
XCTAssertEqual(2, [PhoneNumberUtil translateCursorPosition:1 from:@"12" to:@"132" stickingRightward:true]);
XCTAssertEqual(3, [PhoneNumberUtil translateCursorPosition:2 from:@"12" to:@"132" stickingRightward:false]);
XCTAssertEqual(3, [PhoneNumberUtil translateCursorPosition:2 from:@"12" to:@"132" stickingRightward:true]);
XCTAssertEqual(0,
[PhoneNumberUtil translateCursorPosition:0 from:@"(55) 123-4567" to:@"(551) 234-567" stickingRightward:true]);
XCTAssertEqual(1,
[PhoneNumberUtil translateCursorPosition:1 from:@"(55) 123-4567" to:@"(551) 234-567" stickingRightward:true]);
XCTAssertEqual(2,
[PhoneNumberUtil translateCursorPosition:2 from:@"(55) 123-4567" to:@"(551) 234-567" stickingRightward:true]);
XCTAssertEqual(3,
[PhoneNumberUtil translateCursorPosition:3 from:@"(55) 123-4567" to:@"(551) 234-567" stickingRightward:true]);
XCTAssertEqual(3,
[PhoneNumberUtil translateCursorPosition:4 from:@"(55) 123-4567" to:@"(551) 234-567" stickingRightward:true]);
XCTAssertEqual(3,
[PhoneNumberUtil translateCursorPosition:5 from:@"(55) 123-4567" to:@"(551) 234-567" stickingRightward:true]);
XCTAssertEqual(6,
[PhoneNumberUtil translateCursorPosition:6 from:@"(55) 123-4567" to:@"(551) 234-567" stickingRightward:true]);
XCTAssertEqual(7,
[PhoneNumberUtil translateCursorPosition:7 from:@"(55) 123-4567" to:@"(551) 234-567" stickingRightward:true]);
XCTAssertEqual(8,
[PhoneNumberUtil translateCursorPosition:8 from:@"(55) 123-4567" to:@"(551) 234-567" stickingRightward:true]);
XCTAssertEqual(8,
[PhoneNumberUtil translateCursorPosition:9 from:@"(55) 123-4567" to:@"(551) 234-567" stickingRightward:true]);
XCTAssertEqual(0,
[PhoneNumberUtil translateCursorPosition:0 from:@"(55) 123-4567" to:@"(551) 234-567" stickingRightward:false]);
XCTAssertEqual(1,
[PhoneNumberUtil translateCursorPosition:1 from:@"(55) 123-4567" to:@"(551) 234-567" stickingRightward:false]);
XCTAssertEqual(2,
[PhoneNumberUtil translateCursorPosition:2 from:@"(55) 123-4567" to:@"(551) 234-567" stickingRightward:false]);
XCTAssertEqual(3,
[PhoneNumberUtil translateCursorPosition:3 from:@"(55) 123-4567" to:@"(551) 234-567" stickingRightward:false]);
XCTAssertEqual(3,
[PhoneNumberUtil translateCursorPosition:4 from:@"(55) 123-4567" to:@"(551) 234-567" stickingRightward:false]);
XCTAssertEqual(3,
[PhoneNumberUtil translateCursorPosition:5 from:@"(55) 123-4567" to:@"(551) 234-567" stickingRightward:false]);
XCTAssertEqual(4,
[PhoneNumberUtil translateCursorPosition:6 from:@"(55) 123-4567" to:@"(551) 234-567" stickingRightward:false]);
XCTAssertEqual(7,
[PhoneNumberUtil translateCursorPosition:7 from:@"(55) 123-4567" to:@"(551) 234-567" stickingRightward:false]);
XCTAssertEqual(8,
[PhoneNumberUtil translateCursorPosition:8 from:@"(55) 123-4567" to:@"(551) 234-567" stickingRightward:false]);
XCTAssertEqual(8,
[PhoneNumberUtil translateCursorPosition:9 from:@"(55) 123-4567" to:@"(551) 234-567" stickingRightward:false]);
XCTAssertEqual(0,
[PhoneNumberUtil translateCursorPosition:0 from:@"(5551) 234-567" to:@"(555) 123-4567" stickingRightward:true]);
XCTAssertEqual(1,
[PhoneNumberUtil translateCursorPosition:1 from:@"(5551) 234-567" to:@"(555) 123-4567" stickingRightward:true]);
XCTAssertEqual(2,
[PhoneNumberUtil translateCursorPosition:2 from:@"(5551) 234-567" to:@"(555) 123-4567" stickingRightward:true]);
XCTAssertEqual(3,
[PhoneNumberUtil translateCursorPosition:3 from:@"(5551) 234-567" to:@"(555) 123-4567" stickingRightward:true]);
XCTAssertEqual(6,
[PhoneNumberUtil translateCursorPosition:4 from:@"(5551) 234-567" to:@"(555) 123-4567" stickingRightward:true]);
XCTAssertEqual(7,
[PhoneNumberUtil translateCursorPosition:5 from:@"(5551) 234-567" to:@"(555) 123-4567" stickingRightward:true]);
XCTAssertEqual(0,
[PhoneNumberUtil translateCursorPosition:0
from:@"(5551) 234-567"
to:@"(555) 123-4567"
stickingRightward:false]);
XCTAssertEqual(1,
[PhoneNumberUtil translateCursorPosition:1
from:@"(5551) 234-567"
to:@"(555) 123-4567"
stickingRightward:false]);
XCTAssertEqual(2,
[PhoneNumberUtil translateCursorPosition:2
from:@"(5551) 234-567"
to:@"(555) 123-4567"
stickingRightward:false]);
XCTAssertEqual(3,
[PhoneNumberUtil translateCursorPosition:3
from:@"(5551) 234-567"
to:@"(555) 123-4567"
stickingRightward:false]);
XCTAssertEqual(4,
[PhoneNumberUtil translateCursorPosition:4
from:@"(5551) 234-567"
to:@"(555) 123-4567"
stickingRightward:false]);
XCTAssertEqual(7,
[PhoneNumberUtil translateCursorPosition:5
from:@"(5551) 234-567"
to:@"(555) 123-4567"
stickingRightward:false]);
}
- (void)testCallingCodeFromCountryCode
{
XCTAssertEqualObjects([PhoneNumberUtil callingCodeFromCountryCode:@"US"], @"+1");
XCTAssertEqualObjects([PhoneNumberUtil callingCodeFromCountryCode:@"GB"], @"+44");
// Invalid country code.
XCTAssertEqualObjects([PhoneNumberUtil callingCodeFromCountryCode:@"EK"], @"+0");
XCTAssertEqualObjects([PhoneNumberUtil callingCodeFromCountryCode:@"ZZZ"], @"+0");
XCTAssertEqualObjects([PhoneNumberUtil callingCodeFromCountryCode:nil], @"+0");
}
- (void)testCountryNameFromCountryCode
{
XCTAssertEqualObjects([PhoneNumberUtil countryNameFromCountryCode:@"US"], @"United States");
XCTAssertEqualObjects([PhoneNumberUtil countryNameFromCountryCode:@"GB"], @"United Kingdom");
// Invalid country code.
XCTAssertEqualObjects([PhoneNumberUtil countryNameFromCountryCode:@"EK"], @"EK");
XCTAssertEqualObjects([PhoneNumberUtil countryNameFromCountryCode:@"ZZZ"], @"ZZZ");
XCTAssertThrows([PhoneNumberUtil countryNameFromCountryCode:nil]);
}
- (void)testCountryCodesForSearchTerm
{
// Empty search.
XCTAssertGreaterThan([PhoneNumberUtil countryCodesForSearchTerm:nil].count, (NSUInteger)30);
XCTAssertGreaterThan([PhoneNumberUtil countryCodesForSearchTerm:@""].count, (NSUInteger)30);
XCTAssertGreaterThan([PhoneNumberUtil countryCodesForSearchTerm:@" "].count, (NSUInteger)30);
// Searches with no results.
XCTAssertEqual([PhoneNumberUtil countryCodesForSearchTerm:@" . "].count, (NSUInteger)0);
XCTAssertEqual([PhoneNumberUtil countryCodesForSearchTerm:@" XXXXX "].count, (NSUInteger)0);
XCTAssertEqual([PhoneNumberUtil countryCodesForSearchTerm:@" ! "].count, (NSUInteger)0);
// Search by country code.
XCTAssertEqualObjects([PhoneNumberUtil countryCodesForSearchTerm:@"GB"], (@[ @"GB" ]));
XCTAssertEqualObjects([PhoneNumberUtil countryCodesForSearchTerm:@"gb"], (@[ @"GB" ]));
XCTAssertEqualObjects([PhoneNumberUtil countryCodesForSearchTerm:@"GB "], (@[ @"GB" ]));
XCTAssertEqualObjects([PhoneNumberUtil countryCodesForSearchTerm:@" GB"], (@[ @"GB" ]));
XCTAssertTrue([[PhoneNumberUtil countryCodesForSearchTerm:@" G"] containsObject:@"GB"]);
XCTAssertFalse([[PhoneNumberUtil countryCodesForSearchTerm:@" B"] containsObject:@"GB"]);
// Search by country name.
XCTAssertEqualObjects([PhoneNumberUtil countryCodesForSearchTerm:@"united kingdom"], (@[ @"GB" ]));
XCTAssertEqualObjects([PhoneNumberUtil countryCodesForSearchTerm:@" UNITED KINGDOM "], (@[ @"GB" ]));
XCTAssertEqualObjects([PhoneNumberUtil countryCodesForSearchTerm:@" UNITED KING "], (@[ @"GB" ]));
XCTAssertEqualObjects([PhoneNumberUtil countryCodesForSearchTerm:@" UNI KING "], (@[ @"GB" ]));
XCTAssertEqualObjects([PhoneNumberUtil countryCodesForSearchTerm:@" u k "], (@[ @"GB" ]));
XCTAssertTrue([[PhoneNumberUtil countryCodesForSearchTerm:@" u"] containsObject:@"GB"]);
XCTAssertTrue([[PhoneNumberUtil countryCodesForSearchTerm:@" k"] containsObject:@"GB"]);
XCTAssertFalse([[PhoneNumberUtil countryCodesForSearchTerm:@" m"] containsObject:@"GB"]);
// Search by calling code.
XCTAssertTrue([[PhoneNumberUtil countryCodesForSearchTerm:@" +44 "] containsObject:@"GB"]);
XCTAssertTrue([[PhoneNumberUtil countryCodesForSearchTerm:@" 44 "] containsObject:@"GB"]);
XCTAssertTrue([[PhoneNumberUtil countryCodesForSearchTerm:@" +4 "] containsObject:@"GB"]);
XCTAssertTrue([[PhoneNumberUtil countryCodesForSearchTerm:@" 4 "] containsObject:@"GB"]);
XCTAssertFalse([[PhoneNumberUtil countryCodesForSearchTerm:@" +123 "] containsObject:@"GB"]);
XCTAssertFalse([[PhoneNumberUtil countryCodesForSearchTerm:@" +444 "] containsObject:@"GB"]);
}
#endif
@end

View file

@ -1,40 +0,0 @@
//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
import Foundation
import SignalServiceKit
import XCTest
class OWSSignalAddressTest: SSKBaseTestSwift {
override func setUp() {
super.setUp()
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
super.tearDown()
}
func testInitializer() {
let recipientId = "+13213214321"
let deviceId: UInt = 1
let address = try! OWSSignalAddress(recipientId: recipientId, deviceId: deviceId)
XCTAssertEqual(address.recipientId, recipientId)
XCTAssertEqual(address.deviceId, deviceId)
}
func testInitializer_badRecipientId() {
let recipientId = ""
let deviceId: UInt = 1
XCTAssertThrowsError(try OWSSignalAddress(recipientId: recipientId, deviceId: deviceId))
}
func testInitializer_badDeviceId() {
let recipientId = "+13213214321"
let deviceId: UInt = 0
XCTAssertThrowsError(try OWSSignalAddress(recipientId: recipientId, deviceId: deviceId))
}
}

View file

@ -1,45 +0,0 @@
//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
#import "OWSAnalytics.h"
#import "SSKBaseTestObjC.h"
#import <SignalCoreKit/NSData+OWS.h>
NS_ASSUME_NONNULL_BEGIN
@interface OWSAnalyticsTests : SSKBaseTestObjC
@end
#pragma mark -
@implementation OWSAnalyticsTests
- (void)testOrderOfMagnitudeOf
{
XCTAssertEqual(0, [OWSAnalytics orderOfMagnitudeOf:-1]);
XCTAssertEqual(0, [OWSAnalytics orderOfMagnitudeOf:0]);
XCTAssertEqual(1, [OWSAnalytics orderOfMagnitudeOf:1]);
XCTAssertEqual(1, [OWSAnalytics orderOfMagnitudeOf:5]);
XCTAssertEqual(1, [OWSAnalytics orderOfMagnitudeOf:9]);
XCTAssertEqual(10, [OWSAnalytics orderOfMagnitudeOf:10]);
XCTAssertEqual(10, [OWSAnalytics orderOfMagnitudeOf:11]);
XCTAssertEqual(10, [OWSAnalytics orderOfMagnitudeOf:19]);
XCTAssertEqual(10, [OWSAnalytics orderOfMagnitudeOf:99]);
XCTAssertEqual(100, [OWSAnalytics orderOfMagnitudeOf:100]);
XCTAssertEqual(100, [OWSAnalytics orderOfMagnitudeOf:303]);
XCTAssertEqual(100, [OWSAnalytics orderOfMagnitudeOf:999]);
XCTAssertEqual(1000, [OWSAnalytics orderOfMagnitudeOf:1000]);
XCTAssertEqual(1000, [OWSAnalytics orderOfMagnitudeOf:3030]);
XCTAssertEqual(10000, [OWSAnalytics orderOfMagnitudeOf:10000]);
XCTAssertEqual(10000, [OWSAnalytics orderOfMagnitudeOf:30303]);
XCTAssertEqual(10000, [OWSAnalytics orderOfMagnitudeOf:99999]);
XCTAssertEqual(100000, [OWSAnalytics orderOfMagnitudeOf:100000]);
XCTAssertEqual(100000, [OWSAnalytics orderOfMagnitudeOf:303030]);
XCTAssertEqual(100000, [OWSAnalytics orderOfMagnitudeOf:999999]);
}
@end
NS_ASSUME_NONNULL_END