@testable import PureXML import Testing @Suite("XSD identity constraints") struct XSDIdentityTests { private func validate(_ xsd: String, _ xml: String) throws -> [PureXML.Validation.ValidationError] { try PureXML.Schema.Document(xsd).validate(xml) } private let head = "" @Test("xs:unique rejects a duplicated field value") func test_unique() throws { let xsd = """ \(head) """ #expect(try validate(xsd, "").isEmpty) #expect(try !validate(xsd, "").isEmpty) // unique tolerates a missing field #expect(try validate(xsd, "").isEmpty) } @Test("xs:key requires every field to be present and distinct") func test_key() throws { let xsd = """ \(head) """ #expect(try validate(xsd, "").isEmpty) #expect(try !validate(xsd, "").isEmpty) // a key field may not be absent #expect(try !validate(xsd, "").isEmpty) } @Test("xs:keyref requires a matching key value") func test_keyref() throws { let xsd = """ \(head) """ let valid = "" let dangling = "" #expect(try validate(xsd, valid).isEmpty) #expect(try !validate(xsd, dangling).isEmpty) } }