# YAML Test Matrix

--- &test-JR7V
  Title: Question marks in scalars
  Tags: [ flow, scalar ]

YAML

- a?string
- another ? string
- key: value?
- [a?string]
- [another ? string]
- {key: value? }
- {key: value?}
- {key?: value }

Expected Events

+STR
+DOC
+SEQ
=VAL :a?string
=VAL :another ? string
+MAP
=VAL :key
=VAL :value?
-MAP
+SEQ
=VAL :a?string
-SEQ
+SEQ
=VAL :another ? string
-SEQ
+MAP
=VAL :key
=VAL :value?
-MAP
+MAP
=VAL :key
=VAL :value?
-MAP
+MAP
=VAL :key?
=VAL :value
-MAP
-SEQ
-DOC
-STR

Expected JSON

[
"a?string",
"another ? string",
{
"key": "value?"
},
[
"a?string"
],
[
"another ? string"
],
{
"key": "value?"
},
{
"key": "value?"
},
{
"key?": "value"
}
]

c-libfyaml-event

 ok

hs-hsyaml-event

 ok

js-yaml-event

 ok

nim-nimyaml-event

 ok

perl-pp-event

 ok

py-ruamel-event

 ok

c-libfyaml-json

 json_ok

hs-hsyaml-json

 json_ok

js-jsyaml-json

 json_ok

js-yaml-json

 json_ok

perl-pp-json

 json_ok

perl-syck-json

 json_ok

perl-yaml-json

 json_ok

py-ruamel-json

 json_ok

perl-tiny-json

 json_diff
[
  "a?string",
  "another ? string",
  {
    "key": "value?"
  },
  "[a?string]",
  "[another ? string]",
  {
    "{key": "value? }"
  },
  {
    "{key": "value?}"
  },
  {
    "{key?": "value }"
  }
]

c-libyaml-event

 error
+STR
+DOC
+SEQ
=VAL :a?string
=VAL :another ? string
+MAP
=VAL :key
=VAL :value?
-MAP
+SEQ
=VAL :a
Parse error: did not find expected ',' or ']'

cpp-yamlcpp-event

 error
+STR
+DOC
+SEQ
=VAL :a?string
=VAL :another ? string
+MAP
=VAL :key
=VAL :value?
-MAP
Exception:
yaml-cpp: error at line 4, column 5: unknown token

dotnet-yamldotnet-event

 error
+STR
+DOC
+SEQ
=VAL :a?string
=VAL :another ? string
+MAP
=VAL :key
=VAL :value?
-MAP
+SEQ
=VAL :a
Unhandled exception. YamlDotNet.Core.SemanticErrorException: (Line: 4, Col: 5, Idx: 48) - (Line: 4, Col: 6, Idx: 49): While parsing a flow sequence, did not find expected ',' or ']'.
   at YamlDotNet.Core.Parser.ParseFlowSequenceEntry(Boolean isFirst)
   at YamlDotNet.Core.Parser.StateMachine()
   at YamlDotNet.Core.Parser.MoveNext()
   at Program.ConvertToLibYamlStyleAnnotatedEventStream(TextReader textReader, TextWriter textWriter)
   at Program.Main(String[] commandLineArguments)
Aborted (core dumped)

dotnet-yamldotnet-json

 error
Unhandled exception. YamlDotNet.Core.SemanticErrorException: (Line: 4, Col: 5, Idx: 48) - (Line: 4, Col: 6, Idx: 49): While parsing a flow sequence, did not find expected ',' or ']'.
   at YamlDotNet.Core.Parser.ParseFlowSequenceEntry(Boolean isFirst)
   at YamlDotNet.Core.Parser.StateMachine()
   at YamlDotNet.Core.Parser.MoveNext()
   at YamlDotNet.Core.ParserExtensions.Allow[T](IParser parser)
   at YamlDotNet.Serialization.NodeDeserializers.ScalarNodeDeserializer.YamlDotNet.Serialization.INodeDeserializer.Deserialize(IParser parser, Type expectedType, Func`3 nestedObjectDeserializer, Object& value)
   at YamlDotNet.Serialization.ValueDeserializers.NodeValueDeserializer.DeserializeValue(IParser parser, Type expectedType, SerializerState state, IValueDeserializer nestedObjectDeserializer)
   at YamlDotNet.Serialization.ValueDeserializers.AliasValueDeserializer.DeserializeValue(IParser parser, Type expectedType, SerializerState state, IValueDeserializer nestedObjectDeserializer)
   at YamlDotNet.Serialization.ValueDeserializers.NodeValueDeserializer.<>c__DisplayClass3_0.<DeserializeValue>b__0(IParser r, Type t)
   at YamlDotNet.Serialization.NodeDeserializers.CollectionNodeDeserializer.DeserializeHelper(Type tItem, IParser parser, Func`3 nestedObjectDeserializer, IList result, Boolean canUpdate)
   at YamlDotNet.Serialization.NodeDeserializers.CollectionNodeDeserializer.YamlDotNet.Serialization.INodeDeserializer.Deserialize(IParser parser, Type expectedType, Func`3 nestedObjectDeserializer, Object& value)
   at YamlDotNet.Serialization.ValueDeserializers.NodeValueDeserializer.DeserializeValue(IParser parser, Type expectedType, SerializerState state, IValueDeserializer nestedObjectDeserializer)
   at YamlDotNet.Serialization.ValueDeserializers.AliasValueDeserializer.DeserializeValue(IParser parser, Type expectedType, SerializerState state, IValueDeserializer nestedObjectDeserializer)
   at YamlDotNet.Serialization.ValueDeserializers.NodeValueDeserializer.<>c__DisplayClass3_0.<DeserializeValue>b__0(IParser r, Type t)
   at YamlDotNet.Serialization.NodeDeserializers.CollectionNodeDeserializer.DeserializeHelper(Type tItem, IParser parser, Func`3 nestedObjectDeserializer, IList result, Boolean canUpdate)
   at YamlDotNet.Serialization.NodeDeserializers.CollectionNodeDeserializer.YamlDotNet.Serialization.INodeDeserializer.Deserialize(IParser parser, Type expectedType, Func`3 nestedObjectDeserializer, Object& value)
   at YamlDotNet.Serialization.ValueDeserializers.NodeValueDeserializer.DeserializeValue(IParser parser, Type expectedType, SerializerState state, IValueDeserializer nestedObjectDeserializer)
   at YamlDotNet.Serialization.ValueDeserializers.AliasValueDeserializer.DeserializeValue(IParser parser, Type expectedType, SerializerState state, IValueDeserializer nestedObjectDeserializer)
   at YamlDotNet.Serialization.Deserializer.Deserialize(IParser parser, Type type)
   at YamlDotNet.Serialization.Deserializer.Deserialize(TextReader input, Type type)
   at YamlDotNet.Serialization.Deserializer.Deserialize(TextReader input)
   at Program.Main(String[] commandLineArguments)
Aborted (core dumped)

java-snakeyaml-event

 error
Exception in thread "main" while parsing a flow sequence
 in 'reader', line 4, column 3:
    - [a?string]
      ^
expected ',' or ']', but got ?
 in 'reader', line 4, column 5:
    - [a?string]
        ^

	at org.yaml.snakeyaml.parser.ParserImpl$ParseFlowSequenceEntry.produce(ParserImpl.java:637)
	at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158)
	at org.yaml.snakeyaml.Yaml$3.hasNext(Yaml.java:654)
	at org.yaml.editor.Snake2Events.yamlToEvents(Snake2Events.java:111)
	at org.yaml.editor.Snake2Events.main(Snake2Events.java:119)

java-snakeyaml-json

 error
Exception in thread "main" while parsing a flow sequence
 in 'reader', line 4, column 3:
    - [a?string]
      ^
expected ',' or ']', but got ?
 in 'reader', line 4, column 5:
    - [a?string]
        ^

	at org.yaml.snakeyaml.parser.ParserImpl$ParseFlowSequenceEntry.produce(ParserImpl.java:637)
	at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158)
	at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148)
	at org.yaml.snakeyaml.composer.Composer.composeSequenceNode(Composer.java:208)
	at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160)
	at org.yaml.snakeyaml.composer.Composer.composeSequenceNode(Composer.java:209)
	at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160)
	at org.yaml.snakeyaml.composer.Composer.getNode(Composer.java:95)
	at org.yaml.snakeyaml.constructor.BaseConstructor.getData(BaseConstructor.java:134)
	at org.yaml.snakeyaml.Yaml$1.next(Yaml.java:494)
	at org.yaml.editor.Snake2Json.yamlToJson(Snake2Json.java:18)
	at org.yaml.editor.Snake2Json.main(Snake2Json.java:25)

lua-lyaml-json

 error
luajit: 4:4: did not find expected ',' or ']'
stack traceback:
	[C]: in function 'error'
	/usr/local/share/lua/5.1/lyaml/init.lua:291: in function 'error'
	/usr/local/share/lua/5.1/lyaml/init.lua:310: in function 'parse'
	/usr/local/share/lua/5.1/lyaml/init.lua:428: in function 'load_node'
	/usr/local/share/lua/5.1/lyaml/init.lua:378: in function 'load_node'
	/usr/local/share/lua/5.1/lyaml/init.lua:378: in function 'load_node'
	/usr/local/share/lua/5.1/lyaml/init.lua:482: in function 'load'
	/yaml/bin/lua-lyaml-json:6: in main chunk
	[C]: at 0x556fc0f8af97

perl-pplibyaml-event

 error
YAML::PP::LibYAML Error: The problem:

    did not find expected ',' or ']'

was found at , line: 4, column: 5
while parsing a flow sequence at line: 4, column: 3

perl-pplibyaml-json

 error
YAML::PP::LibYAML Error: The problem:

    did not find expected ',' or ']'

was found at , line: 4, column: 5
while parsing a flow sequence at line: 4, column: 3

perl-pplibyaml-perl

 error
YAML::PP::LibYAML Error: The problem:

    did not find expected ',' or ']'

was found at , line: 4, column: 5
while parsing a flow sequence at line: 4, column: 3

perl-xs-json

 error
YAML::XS::Load Error: The problem:

    did not find expected ',' or ']'

was found at document: 1, line: 4, column: 5
while parsing a flow sequence at line: 4, column: 3

perl-xs-perl

 error
YAML::XS::Load Error: The problem:

    did not find expected ',' or ']'

was found at document: 1, line: 4, column: 5
while parsing a flow sequence at line: 4, column: 3

py-pyyaml-event

 error
+STR
+DOC
+SEQ
=VAL :a?string
=VAL :another ? string
+MAP
=VAL :key
=VAL :value?
-MAP
+SEQ
=VAL :a
Traceback (most recent call last):
  File "/yaml/bin/py-pyyaml-event", line 7, in <module>
    for event in yaml.parse(sys.stdin.read()):
  File "/python/lib/python3.7/site-packages/yaml/__init__.py", line 75, in parse
    while loader.check_event():
  File "/python/lib/python3.7/site-packages/yaml/parser.py", line 98, in check_event
    self.current_event = self.state()
  File "/python/lib/python3.7/site-packages/yaml/parser.py", line 484, in parse_flow_sequence_entry
    "expected ',' or ']', but got %r" % token.id, token.start_mark)
yaml.parser.ParserError: while parsing a flow sequence
  in "<unicode string>", line 4, column 3:
    - [a?string]
      ^
expected ',' or ']', but got '?'
  in "<unicode string>", line 4, column 5:
    - [a?string]
        ^

py-pyyaml-json

 error
Traceback (most recent call last):
  File "/yaml/bin/py-pyyaml-json", line 19, in <module>
    for doc in yaml.load_all(sys.stdin.read(), Loader=yaml.FullLoader):
  File "/python/lib/python3.7/site-packages/yaml/__init__.py", line 130, in load_all
    yield loader.get_data()
  File "/python/lib/python3.7/site-packages/yaml/constructor.py", line 45, in get_data
    return self.construct_document(self.get_node())
  File "/python/lib/python3.7/site-packages/yaml/composer.py", line 27, in get_node
    return self.compose_document()
  File "/python/lib/python3.7/site-packages/yaml/composer.py", line 55, in compose_document
    node = self.compose_node(None, None)
  File "/python/lib/python3.7/site-packages/yaml/composer.py", line 82, in compose_node
    node = self.compose_sequence_node(anchor)
  File "/python/lib/python3.7/site-packages/yaml/composer.py", line 111, in compose_sequence_node
    node.value.append(self.compose_node(node, index))
  File "/python/lib/python3.7/site-packages/yaml/composer.py", line 82, in compose_node
    node = self.compose_sequence_node(anchor)
  File "/python/lib/python3.7/site-packages/yaml/composer.py", line 110, in compose_sequence_node
    while not self.check_event(SequenceEndEvent):
  File "/python/lib/python3.7/site-packages/yaml/parser.py", line 98, in check_event
    self.current_event = self.state()
  File "/python/lib/python3.7/site-packages/yaml/parser.py", line 484, in parse_flow_sequence_entry
    "expected ',' or ']', but got %r" % token.id, token.start_mark)
yaml.parser.ParserError: while parsing a flow sequence
  in "<unicode string>", line 4, column 3:
    - [a?string]
      ^
expected ',' or ']', but got '?'
  in "<unicode string>", line 4, column 5:
    - [a?string]
        ^

py-pyyaml-py

 error
Traceback (most recent call last):
  File "/yaml/bin/py-pyyaml-py", line 36, in <module>
    for doc in yaml.load_all(sys.stdin.read(), Loader=yaml.FullLoader):
  File "/python/lib/python3.7/site-packages/yaml/__init__.py", line 130, in load_all
    yield loader.get_data()
  File "/python/lib/python3.7/site-packages/yaml/constructor.py", line 45, in get_data
    return self.construct_document(self.get_node())
  File "/python/lib/python3.7/site-packages/yaml/composer.py", line 27, in get_node
    return self.compose_document()
  File "/python/lib/python3.7/site-packages/yaml/composer.py", line 55, in compose_document
    node = self.compose_node(None, None)
  File "/python/lib/python3.7/site-packages/yaml/composer.py", line 82, in compose_node
    node = self.compose_sequence_node(anchor)
  File "/python/lib/python3.7/site-packages/yaml/composer.py", line 111, in compose_sequence_node
    node.value.append(self.compose_node(node, index))
  File "/python/lib/python3.7/site-packages/yaml/composer.py", line 82, in compose_node
    node = self.compose_sequence_node(anchor)
  File "/python/lib/python3.7/site-packages/yaml/composer.py", line 110, in compose_sequence_node
    while not self.check_event(SequenceEndEvent):
  File "/python/lib/python3.7/site-packages/yaml/parser.py", line 98, in check_event
    self.current_event = self.state()
  File "/python/lib/python3.7/site-packages/yaml/parser.py", line 484, in parse_flow_sequence_entry
    "expected ',' or ']', but got %r" % token.id, token.start_mark)
yaml.parser.ParserError: while parsing a flow sequence
  in "<unicode string>", line 4, column 3:
    - [a?string]
      ^
expected ',' or ']', but got '?'
  in "<unicode string>", line 4, column 5:
    - [a?string]
        ^

ruby-psych-json

 error
/usr/lib/ruby/2.5.0/psych.rb:405:in `parse': (<unknown>): did not find expected ',' or ']' while parsing a flow sequence at line 4 column 3 (Psych::SyntaxError)
	from /usr/lib/ruby/2.5.0/psych.rb:405:in `parse_stream'
	from /usr/lib/ruby/2.5.0/psych.rb:488:in `load_stream'
	from /yaml/bin/ruby-psych-json:6:in `<main>'

perl-pp-perl

 na
[
  'a?string',
  'another ? string',
  {
    'key' => 'value?'
  },
  [
    'a?string'
  ],
  [
    'another ? string'
  ],
  {
    'key' => 'value?'
  },
  {
    'key' => 'value?'
  },
  {
    'key?' => 'value'
  }
]

perl-syck-perl

 na
[
  'a?string',
  'another ? string',
  {
    'key' => 'value?'
  },
  [
    'a?string'
  ],
  [
    'another ? string'
  ],
  {
    'key' => 'value?'
  },
  {
    'key' => 'value?'
  },
  {
    'key?' => 'value'
  }
]

perl-tiny-perl

 na
[
  'a?string',
  'another ? string',
  {
    'key' => 'value?'
  },
  '[a?string]',
  '[another ? string]',
  {
    '{key' => 'value? }'
  },
  {
    '{key' => 'value?}'
  },
  {
    '{key?' => 'value }'
  }
]

perl-yaml-perl

 na
[
  'a?string',
  'another ? string',
  {
    'key' => 'value?'
  },
  [
    'a?string'
  ],
  [
    'another ? string'
  ],
  {
    'key' => 'value?'
  },
  {
    'key' => 'value?'
  },
  {
    'key?' => 'value'
  }
]

py-ruamel-py

 na
['a?string',
 'another ? string',
 {'key': 'value?'},
 ['a?string'],
 ['another ? string'],
 {'key': 'value?'},
 {'key': 'value?'},
 {'key?': 'value'}]