Merge pull request #32 from roji/deserialize_empty

Fixed empty document deserialization
This commit is contained in:
Antoine Aubry 2013-05-31 04:51:00 -07:00
Родитель 2a53997ddd 7a4d062347
Коммит 5573322ea6
3 изменённых файлов: 23 добавлений и 2 удалений

Просмотреть файл

@ -167,7 +167,9 @@ namespace YamlDotNet.RepresentationModel.Serialization
var hasDocumentStart = reader.Allow<DocumentStart>() != null;
var result = valueDeserializer.DeserializeValue(reader, type, new SerializerState(), valueDeserializer);
object result = null;
if (!reader.Accept<DocumentEnd>() && !reader.Accept<StreamEnd>())
result = valueDeserializer.DeserializeValue(reader, type, new SerializerState(), valueDeserializer);
if (hasDocumentStart)
{

Просмотреть файл

@ -296,7 +296,9 @@ namespace YamlDotNet.RepresentationModel.Serialization
reader.Expect<DocumentStart>();
}
object result = DeserializeValue(reader, serializedType, internalContext);
object result = null;
if (!reader.Accept<DocumentEnd>() && !reader.Accept<StreamEnd>())
result = DeserializeValue(reader, serializedType, internalContext);
if (hasDocumentStart)
{

Просмотреть файл

@ -1094,6 +1094,23 @@ Name: Charles
Assert.Equal("Brad", people[1].Name);
Assert.Equal("Charles", people[2].Name);
}
[Fact]
public void DeserializeEmptyDocument()
{
var deserializer = new Deserializer();
var arr = (int[])deserializer.Deserialize(new StringReader(""), typeof(int[]));
Assert.Null(arr);
}
[Fact]
[Obsolete]
public void DeserializeEmptyDocumentYamlDeserializer()
{
var deserializer = new YamlSerializer<int[]>();
var arr = deserializer.Deserialize(new StringReader(""));
Assert.Null(arr);
}
}
}