2022-10-28 16:11:10 +02:00
|
|
|
|
//
|
2024-09-06 16:34:30 +03:00
|
|
|
|
// Copyright 2022-2024 New Vector Ltd.
|
2022-10-28 16:11:10 +02:00
|
|
|
|
//
|
2025-01-06 11:27:37 +01:00
|
|
|
|
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
|
|
|
|
// Please see LICENSE files in the repository root for full details.
|
2022-10-28 16:11:10 +02:00
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
import XCTest
|
|
|
|
|
|
|
|
|
|
@testable import ElementX
|
|
|
|
|
|
|
|
|
|
class StringTests: XCTestCase {
|
|
|
|
|
func testEmptyIsAscii() {
|
|
|
|
|
XCTAssertTrue("".isASCII)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func testSpaceIsAscii() {
|
|
|
|
|
XCTAssertTrue("".isASCII)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func testJohnnyIsAscii() {
|
|
|
|
|
XCTAssertTrue("johnny".isASCII)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func testJöhnnyIsNotAscii() {
|
|
|
|
|
XCTAssertFalse("jöhnny".isASCII)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func testJ🅾️hnnyIsNotAscii() {
|
|
|
|
|
XCTAssertFalse("j🅾️hnny".isASCII)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func testAsciiStaysAscii() {
|
|
|
|
|
XCTAssertEqual("johnny".asciified(), "johnny")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func testÖBecomesO() {
|
|
|
|
|
XCTAssertEqual("jöhnny".asciified(), "johnny")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func testÅBecomesA() {
|
|
|
|
|
XCTAssertEqual("jåhnny".asciified(), "jahnny")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func test1️⃣2️⃣3️⃣Becomes123() {
|
|
|
|
|
XCTAssertEqual("1️⃣2️⃣3️⃣".asciified(), "123")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func testStripsTheHeartbreakHotel() {
|
|
|
|
|
XCTAssertEqual("Heartbreak Hotel 🏩".asciified(), "Heartbreak Hotel")
|
|
|
|
|
}
|
2023-05-25 12:13:45 +02:00
|
|
|
|
|
|
|
|
|
func testGenerateBreakableWhitespaceEnd() {
|
|
|
|
|
var count = 5
|
2023-06-09 13:49:02 +02:00
|
|
|
|
var result = "\u{2066}" + String(repeating: "\u{2004}", count: count) + "\u{2800}"
|
|
|
|
|
XCTAssertEqual(String.generateBreakableWhitespaceEnd(whitespaceCount: count, layoutDirection: .leftToRight), result)
|
2023-05-25 12:13:45 +02:00
|
|
|
|
|
|
|
|
|
count = 3
|
2023-06-09 13:49:02 +02:00
|
|
|
|
result = "\u{2066}" + String(repeating: "\u{2004}", count: count) + "\u{2800}"
|
|
|
|
|
XCTAssertEqual(String.generateBreakableWhitespaceEnd(whitespaceCount: count, layoutDirection: .leftToRight), result)
|
2023-05-25 12:13:45 +02:00
|
|
|
|
|
|
|
|
|
count = 0
|
|
|
|
|
result = ""
|
2023-06-09 13:49:02 +02:00
|
|
|
|
XCTAssertEqual(String.generateBreakableWhitespaceEnd(whitespaceCount: count, layoutDirection: .leftToRight), result)
|
2023-05-25 12:13:45 +02:00
|
|
|
|
|
|
|
|
|
count = 4
|
2023-06-09 13:49:02 +02:00
|
|
|
|
result = "\u{2067}" + String(repeating: "\u{2004}", count: count) + "\u{2800}"
|
|
|
|
|
XCTAssertEqual(String.generateBreakableWhitespaceEnd(whitespaceCount: count, layoutDirection: .rightToLeft), result)
|
2023-05-25 12:13:45 +02:00
|
|
|
|
|
|
|
|
|
count = 0
|
|
|
|
|
result = ""
|
2023-06-09 13:49:02 +02:00
|
|
|
|
XCTAssertEqual(String.generateBreakableWhitespaceEnd(whitespaceCount: count, layoutDirection: .rightToLeft), result)
|
2023-05-25 12:13:45 +02:00
|
|
|
|
}
|
2023-07-31 12:16:52 +01:00
|
|
|
|
|
|
|
|
|
func testEllipsizeWorks() {
|
|
|
|
|
XCTAssertEqual("ellipsize".ellipsize(length: 5), "ellip…")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func testEllipsizeNotNeeded() {
|
|
|
|
|
XCTAssertEqual("ellipsize".ellipsize(length: 15), "ellipsize")
|
|
|
|
|
}
|
2023-12-11 16:43:31 +01:00
|
|
|
|
|
|
|
|
|
func testReplaceBreakOccurrences() {
|
|
|
|
|
let input0 = "</p><p>"
|
|
|
|
|
let input1 = "</p>\n<p>"
|
|
|
|
|
let input2 = "</p>\n\n<p>"
|
|
|
|
|
let input3 = "</p>\n\n\n\n<p>"
|
|
|
|
|
let input4 = "<p>a</p>\n<p>b</p>"
|
|
|
|
|
let input5 = "empty"
|
|
|
|
|
|
|
|
|
|
let expectedOutput0 = input0
|
|
|
|
|
let expectedOutput1 = "<br><br>"
|
|
|
|
|
let expectedOutput2 = "<br><br><br>"
|
|
|
|
|
let expectedOutput3 = "<br><br><br><br><br>"
|
|
|
|
|
let expectedOutput4 = "<p>a<br><br>b</p>"
|
|
|
|
|
let expectedOutput5 = input5
|
|
|
|
|
|
|
|
|
|
XCTAssertEqual(input0.replacingHtmlBreaksOccurrences(), expectedOutput0)
|
|
|
|
|
XCTAssertEqual(input1.replacingHtmlBreaksOccurrences(), expectedOutput1)
|
|
|
|
|
XCTAssertEqual(input2.replacingHtmlBreaksOccurrences(), expectedOutput2)
|
|
|
|
|
XCTAssertEqual(input3.replacingHtmlBreaksOccurrences(), expectedOutput3)
|
|
|
|
|
XCTAssertEqual(input4.replacingHtmlBreaksOccurrences(), expectedOutput4)
|
|
|
|
|
XCTAssertEqual(input5.replacingHtmlBreaksOccurrences(), expectedOutput5)
|
|
|
|
|
}
|
2022-10-28 16:11:10 +02:00
|
|
|
|
}
|