import XCTest @testable import readeck final class StringExtensionsTests: XCTestCase { // MARK: - stripHTML Tests func testStripHTML_SimpleTags() { let html = "
Dies ist ein wichtiger Artikel.
" let expected = "Dies ist ein wichtiger Artikel.\n" XCTAssertEqual(html.stripHTML, expected) } func testStripHTML_ComplexNestedTags() { let html = "Text mit kursiv und fett.
Text mit Attributen
" let expected = "Text mit Attributen\n" XCTAssertEqual(html.stripHTML, expected) } func testStripHTML_EmptyTags() { let html = "Text mit
Zeilenumbruch und
Bild.
Text mit fett.
" let expected = "Text mit fett." XCTAssertEqual(html.stripHTMLSimple, expected) } func testStripHTMLSimple_HTMLEntities() { let html = "Text mit Leerzeichen, & Zeichen und "Anführungszeichen".
" let expected = "Text mit Leerzeichen, & Zeichen und \"Anführungszeichen\"." XCTAssertEqual(html.stripHTMLSimple, expected) } func testStripHTMLSimple_MoreEntities() { let html = "<Tag> und 'Apostroph'
" let expected = "Absatz mit kursiv und fett.
Text mit Whitespace
" let expected = "Text mit Whitespace" XCTAssertEqual(html.stripHTMLSimple, expected) } // MARK: - Performance Tests func testStripHTML_Performance() { let largeHTML = String(repeating: "Dies ist ein Test mit vielen HTML Tags.
", count: 1000) measure { _ = largeHTML.stripHTML } } func testStripHTMLSimple_Performance() { let largeHTML = String(repeating: "Dies ist ein Test mit vielen HTML Tags.
", count: 1000) measure { _ = largeHTML.stripHTMLSimple } } // MARK: - Edge Cases func testStripHTML_MalformedHTML() { let malformed = "Unvollständiger Tag"
let expected = "Unvollständiger Tag"
XCTAssertEqual(malformed.stripHTML, expected)
}
func testStripHTML_UnicodeCharacters() {
let html = " Text mit Umlauten: äöüß und Emojis: 🚀📱 Erste Zeile
Zweite Zeile
"
let expected = "Erster Punkt\nZweiter Punkt\nDritter Punkt"
XCTAssertEqual(html.stripHTML, expected)
}
}