// // Copyright (c) 2019 Open Whisper Systems. All rights reserved. // import XCTest class StringAdditionsTest: 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 test_truncated_ASCII() { let originalString = "Hello World" var truncatedString = originalString.truncated(toByteCount: 8) XCTAssertEqual("Hello Wo", truncatedString) truncatedString = originalString.truncated(toByteCount: 0) XCTAssertEqual("", truncatedString) truncatedString = originalString.truncated(toByteCount: 11) XCTAssertEqual("Hello World", truncatedString) truncatedString = originalString.truncated(toByteCount: 12) XCTAssertEqual("Hello World", truncatedString) truncatedString = originalString.truncated(toByteCount: 100) XCTAssertEqual("Hello World", truncatedString) } func test_truncated_MultiByte() { let originalString = "🇨🇦🇨🇦🇨🇦🇨🇦" var truncatedString = originalString.truncated(toByteCount: 0) XCTAssertEqual("", truncatedString) truncatedString = originalString.truncated(toByteCount: 1) XCTAssertEqual("", truncatedString) truncatedString = originalString.truncated(toByteCount: 7) XCTAssertEqual("", truncatedString) truncatedString = originalString.truncated(toByteCount: 8) XCTAssertEqual("🇨🇦", truncatedString) truncatedString = originalString.truncated(toByteCount: 9) XCTAssertEqual("🇨🇦", truncatedString) truncatedString = originalString.truncated(toByteCount: 15) XCTAssertEqual("🇨🇦", truncatedString) truncatedString = originalString.truncated(toByteCount: 16) XCTAssertEqual("🇨🇦🇨🇦", truncatedString) truncatedString = originalString.truncated(toByteCount: 17) XCTAssertEqual("🇨🇦🇨🇦", truncatedString) } func test_truncated_Mixed() { let originalString = "Oh🇨🇦Canada🇨🇦" var truncatedString = originalString.truncated(toByteCount: 0) XCTAssertEqual("", truncatedString) truncatedString = originalString.truncated(toByteCount: 1) XCTAssertEqual("O", truncatedString) truncatedString = originalString.truncated(toByteCount: 7) XCTAssertEqual("Oh", truncatedString) truncatedString = originalString.truncated(toByteCount: 9) XCTAssertEqual("Oh", truncatedString) truncatedString = originalString.truncated(toByteCount: 10) XCTAssertEqual("Oh🇨🇦", truncatedString) truncatedString = originalString.truncated(toByteCount: 11) XCTAssertEqual("Oh🇨🇦C", truncatedString) truncatedString = originalString.truncated(toByteCount: 23) XCTAssertEqual("Oh🇨🇦Canada", truncatedString) truncatedString = originalString.truncated(toByteCount: 24) XCTAssertEqual("Oh🇨🇦Canada🇨🇦", truncatedString) truncatedString = originalString.truncated(toByteCount: 25) XCTAssertEqual("Oh🇨🇦Canada🇨🇦", truncatedString) truncatedString = originalString.truncated(toByteCount: 100) XCTAssertEqual("Oh🇨🇦Canada🇨🇦", truncatedString) } func test_caesar() { XCTAssertEqual("abc", try! "abc".caesar(shift: 0)) XCTAssertEqual("abc", try! "abc".caesar(shift: 127)) XCTAssertEqual("bcd", try! "abc".caesar(shift: 1)) XCTAssertEqual("bcd", try! "abc".caesar(shift: 128)) XCTAssertEqual("z{b", try! "yza".caesar(shift: 1)) XCTAssertEqual("|}d", try! "yza".caesar(shift: 3)) XCTAssertEqual("ef=g", try! "bc:d".caesar(shift: 3)) let shifted = try! "abc".caesar(shift: 32) let roundTrip = try! shifted.caesar(shift: 127 - 32) XCTAssertEqual("abc", roundTrip) } func test_encodedForSelector() { XCTAssertEqual("cnN0", "abc".encodedForSelector) XCTAssertEqual("abc", "abc".encodedForSelector!.decodedForSelector) XCTAssertNotEqual("abcWithFoo:bar:", "abcWithFoo:bar:".encodedForSelector) XCTAssertEqual("abcWithFoo:bar:", "abcWithFoo:bar:".encodedForSelector!.decodedForSelector) XCTAssertNotEqual("abcWithFoo:bar:zaz1:", "abcWithFoo:bar:zaz1:".encodedForSelector) XCTAssertEqual("abcWithFoo:bar:zaz1:", "abcWithFoo:bar:zaz1:".encodedForSelector!.decodedForSelector) } }