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) } }