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"]);
|
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]
|
[Test]
|
||||||
public void CloseInput()
|
public void CloseInput()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -370,6 +370,11 @@ namespace Newtonsoft.Json.Bson
|
|||||||
ContainerContext context = _currentContext;
|
ContainerContext context = _currentContext;
|
||||||
if (context == null)
|
if (context == null)
|
||||||
{
|
{
|
||||||
|
if (SupportMultipleContent)
|
||||||
|
{
|
||||||
|
goto case State.Start;
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user