@testable import PureYAML import Testing @Suite("Implicit null mapping keys") struct ImplicitNullKeyTests { @Test("A `:` opening a line is an implicit null key") func test_implicitNullKey() throws { #expect(try PureYAML.parse(": value\n") == .mapping(.init([ .init(keyNode: .string(""), value: .string("value")), ]))) } @Test("Several null-keyed entries and a bare `:` parse") func test_multipleNullKeys() throws { _ = try PureYAML.parse(": a\n: b\n") _ = try PureYAML.parse(":\n") #expect(try PureYAML.parse("a: 1\n: b\n") == .mapping(.init([ .init(key: "a", value: .int(1)), .init(keyNode: .string(""), value: .string("b")), ]))) } @Test("Explicit keys, including a complex one, are not mistaken for null keys") func test_explicitKeysUnaffected() throws { #expect(try PureYAML.parse("? a\n: b\n") == .mapping(.init([ .init(key: "a", value: .string("b")), ]))) // The `:` after a flow complex key is the key's value, not a null key. #expect(try PureYAML.parse("? {a: b}\n: c\n") == .mapping(.init([ .init(keyNode: .mapping(.init([.init(key: "a", value: .string("b"))])), value: .string("c")), ]))) } }