Fix BsonReader reading multiple content (#1870)
This commit is contained in:
@@ -69,6 +69,53 @@ namespace Newtonsoft.Json.Tests.Bson
|
||||
Assert.AreEqual("1", (string)o["$id"]);
|
||||
}
|
||||
|
||||
public class MyTest
|
||||
{
|
||||
public DateTime TimeStamp { get; set; }
|
||||
public string UserName { get; set; }
|
||||
public MemoryStream Blob { get; set; }
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Bson_SupportMultipleContent()
|
||||
{
|
||||
MemoryStream myStream = new MemoryStream();
|
||||
BsonWriter writer = new BsonWriter(myStream);
|
||||
JsonSerializer serializer = new JsonSerializer();
|
||||
MyTest tst1 = new MyTest
|
||||
{
|
||||
TimeStamp = new DateTime(2000, 12, 20, 12, 59, 59, DateTimeKind.Utc),
|
||||
UserName = "Joe Doe"
|
||||
};
|
||||
MyTest tst2 = new MyTest
|
||||
{
|
||||
TimeStamp = new DateTime(2010, 12, 20, 12, 59, 59, DateTimeKind.Utc),
|
||||
UserName = "Bob"
|
||||
};
|
||||
serializer.Serialize(writer, tst1);
|
||||
serializer.Serialize(writer, tst2);
|
||||
|
||||
myStream.Seek(0, SeekOrigin.Begin);
|
||||
|
||||
BsonReader reader = new BsonReader(myStream)
|
||||
{
|
||||
SupportMultipleContent = true,
|
||||
DateTimeKindHandling = DateTimeKind.Utc
|
||||
};
|
||||
|
||||
MyTest tst1A = serializer.Deserialize<MyTest>(reader);
|
||||
|
||||
reader.Read();
|
||||
|
||||
MyTest tst2A = serializer.Deserialize<MyTest>(reader);
|
||||
|
||||
Assert.AreEqual(tst1.UserName, tst1A.UserName);
|
||||
Assert.AreEqual(tst1.TimeStamp, tst1A.TimeStamp);
|
||||
|
||||
Assert.AreEqual(tst2.UserName, tst2A.UserName);
|
||||
Assert.AreEqual(tst2.TimeStamp, tst2A.TimeStamp);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CloseInput()
|
||||
{
|
||||
|
||||
@@ -370,6 +370,11 @@ namespace Newtonsoft.Json.Bson
|
||||
ContainerContext context = _currentContext;
|
||||
if (context == null)
|
||||
{
|
||||
if (SupportMultipleContent)
|
||||
{
|
||||
goto case State.Start;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user