mirror of https://github.com/oxen-io/session-ios
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
4.6 KiB
Swift
127 lines
4.6 KiB
Swift
//
|
|
// 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)
|
|
}
|
|
}
|