import Testing
@testable import PureXML
@Suite("DTD ID and IDREF validation")
struct DTDIdentifierTests {
private func issues(_ xml: String) throws -> [PureXML.Validation.ValidationError] {
try PureXML.validateAgainstInternalDTD(xml)
}
private let idDTD = ""
+ "]>"
@Test("Unique IDs validate; duplicate IDs are rejected")
func test_idUniqueness() throws {
try #expect(issues("\(idDTD) ").isEmpty)
try #expect(!issues("\(idDTD) ").isEmpty)
}
@Test("IDREF resolves to an ID anywhere in the document, including forward")
func test_idrefForwardReference() throws {
try #expect(issues("\(idDTD) ").isEmpty)
}
@Test("A dangling IDREF is rejected")
func test_danglingIdref() throws {
try #expect(!issues("\(idDTD) ").isEmpty)
}
@Test("IDREFS resolves each token; a dangling token is rejected")
func test_idrefs() throws {
let valid = "\(idDTD) "
try #expect(issues(valid).isEmpty)
let dangling = "\(idDTD) "
try #expect(!issues(dangling).isEmpty)
}
}