import Testing
@testable import PureXML
@Suite("HTML conformance validator (composable Validation rules)")
struct HTMLValidationTests {
private typealias Element = PureXML.Model.Element
private typealias Node = PureXML.Model.Node
private func errors(_ node: Node) -> [PureXML.Validation.ValidationError] {
PureXML.HTML.validationErrors(in: node)
}
@Test("A void element carrying content is flagged")
func test_voidWithContent() {
let node = Node.element(Element("br", children: [.text("x")]))
let found = errors(node)
#expect(found.count == 1)
#expect(found.first?.reason == "void element
must not have content")
}
@Test("li inside ul is valid; li with no list parent is flagged")
func test_requiredParent() {
let valid = Node.document([.element(Element("ul", children: [.element(Element("li", children: [.text("a")]))]))])
#expect(errors(valid).isEmpty)
let invalid = Node.document([.element(Element("li", children: [.text("a")]))])
let found = errors(invalid)
#expect(found.count == 1)
#expect(found.first?.reason == "element
must appear inside