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 = "Titel
Text mit kursiv und fett.
"
let expected = "Titel\nText mit kursiv und fett."
XCTAssertEqual(html.stripHTML, expected)
}
func testStripHTML_WithAttributes() {
let html = "Text mit Attributen
"
let expected = "Text mit Attributen\n"
XCTAssertEqual(html.stripHTML, expected)
}
func testStripHTML_EmptyTags() {
let html = "Inhalt
"
let expected = "\nInhalt\n"
XCTAssertEqual(html.stripHTML, expected)
}
func testStripHTML_SelfClosingTags() {
let html = "Text mit
Zeilenumbruch und
Bild.
"
let expected = "Text mit \nZeilenumbruch und Bild.\n"
XCTAssertEqual(html.stripHTML, expected)
}
func testStripHTML_NoTags() {
let plainText = "Dies ist normaler Text ohne HTML."
XCTAssertEqual(plainText.stripHTML, plainText)
}
func testStripHTML_EmptyString() {
let emptyString = ""
XCTAssertEqual(emptyString.stripHTML, emptyString)
}
func testStripHTML_OnlyTags() {
let onlyTags = "
"
let expected = "\n"
XCTAssertEqual(onlyTags.stripHTML, expected)
}
// 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: 🚀📱
"
let expected = "Text mit Umlauten: äöüß und Emojis: 🚀📱"
XCTAssertEqual(html.stripHTML, expected)
}
func testStripHTML_Newlines() {
let html = "Erste Zeile
Zweite Zeile
"
let expected = "Erste Zeile\nZweite Zeile"
XCTAssertEqual(html.stripHTML, expected)
}
func testStripHTML_ListItems() {
let html = "- Erster Punkt
- Zweiter Punkt
- Dritter Punkt
"
let expected = "Erster Punkt\nZweiter Punkt\nDritter Punkt"
XCTAssertEqual(html.stripHTML, expected)
}
}