47 lines
1.1 KiB
Swift
47 lines
1.1 KiB
Swift
@testable import PureYAML
|
|
import Testing
|
|
|
|
private struct TestFailure: Swift.Error, CustomStringConvertible {
|
|
var description: String
|
|
}
|
|
|
|
func recordIssue(_ message: String) {
|
|
Issue.record(TestFailure(description: message))
|
|
}
|
|
|
|
func requireMapping(
|
|
_ value: PureYAML.Model.Value,
|
|
_ message: String = "expected mapping",
|
|
) -> PureYAML.Model.Mapping? {
|
|
guard case let .mapping(mapping) = value else {
|
|
recordIssue(message)
|
|
return nil
|
|
}
|
|
return mapping
|
|
}
|
|
|
|
func requireSequence(
|
|
_ value: PureYAML.Model.Value?,
|
|
_ message: String = "expected sequence",
|
|
) -> [PureYAML.Model.Value]? {
|
|
guard case let .sequence(values)? = value else {
|
|
recordIssue(message)
|
|
return nil
|
|
}
|
|
return values
|
|
}
|
|
|
|
func expectParseError(
|
|
_ yaml: String,
|
|
_ expected: PureYAML.Parsing.ParseError,
|
|
) {
|
|
do {
|
|
_ = try PureYAML.parse(yaml)
|
|
recordIssue("expected parse error \(expected)")
|
|
} catch let error as PureYAML.Parsing.ParseError {
|
|
#expect(error == expected)
|
|
} catch {
|
|
recordIssue("unexpected error \(error)")
|
|
}
|
|
}
|