@testable import PureYAML import Testing @Suite("Validator configuration") struct ValidationConfigurationTests { private var duplicateKeys: PureYAML.Model.Value { .mapping(.init([ .init(key: "a", value: .int(1)), .init(key: "a", value: .int(2)), ])) } @Test("The blank validator has no rules; the default set is pinned by description") func test_configurationDescriptionsArePinned() { #expect(PureYAML.Validation.Validator.blank.validationDescriptions == []) #expect(PureYAML.Validation.Validator().validationDescriptions == ["Mapping keys are unique"]) } @Test("Default rule descriptions are unique, the identity withoutValidating removes by") func test_defaultDescriptionsAreUnique() { let descriptions = PureYAML.Validation.Validator().validationDescriptions #expect(Set(descriptions).count == descriptions.count) } @Test("withoutValidating removes a rule by its description") func test_withoutValidatingRemovesByDescription() throws { let validator = PureYAML.Validation.Validator().withoutValidating("Mapping keys are unique") #expect(validator.validationDescriptions == []) // With the rule removed, a document with duplicate keys validates clean. _ = try validator.validate(duplicateKeys) } @Test("The default validator still catches what its removable rule guards") func test_defaultStillValidates() { #expect(throws: PureYAML.Validation.ValidationErrorCollection.self) { try PureYAML.Validation.Validator().validate(duplicateKeys) } } }