public void bson_serialize_object_test() { var propName = "Value"; var propValue = "Dummy"; MemoryStream ms = new MemoryStream(); var bs = new BsonDataWriter(ms); bs.WriteStartObject(); bs.WritePropertyName(propName); bs.WriteValue(propValue); bs.WriteEnd(); ms.Seek(0, SeekOrigin.Begin); var reader = new BsonDataReader(ms); // object reader.Read(); // property name reader.Read(); Assert.Equal(propName, (string)reader.Value); reader.Read(); Assert.Equal(propValue, (string)reader.Value); }
public void bson_serialize_message_test() { var prop1 = "prop1"; var prop2 = "prop2"; var msg = new WoftamEvent(prop1, prop2); MemoryStream ms = new MemoryStream(); var bs = new BsonDataWriter(ms); bs.WriteStartObject(); bs.WritePropertyName(msg.GetType().FullName); bs.WriteValue(JsonConvert.SerializeObject(msg)); bs.WriteEnd(); ms.Seek(0, SeekOrigin.Begin); Message msg2; var reader = new BsonDataReader(ms); // read object reader.Read(); // read type name reader.Read(); var messageType = MessageHierarchy.GetTypeByFullName((string)reader.Value); reader.Read(); //property value msg2 = (Message)JsonConvert.DeserializeObject((string)reader.Value, messageType); Assert.IsType <WoftamEvent>(msg2); Assert.Equal(prop1, ((WoftamEvent)msg2).Property1); }
public void WriteOid() { MemoryStream ms = new MemoryStream(); BsonDataWriter writer = new BsonDataWriter(ms); byte[] oid = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; writer.WriteStartObject(); writer.WritePropertyName("_oid"); writer.WriteObjectId(oid); writer.WriteEndObject(); string bson = BytesToHex(ms.ToArray()); Assert.AreEqual("17-00-00-00-07-5F-6F-69-64-00-01-02-03-04-05-06-07-08-09-0A-0B-0C-00", bson); ms.Seek(0, SeekOrigin.Begin); BsonDataReader reader = new BsonDataReader(ms); Assert.IsTrue(reader.Read()); Assert.AreEqual(JsonToken.StartObject, reader.TokenType); Assert.IsTrue(reader.Read()); Assert.AreEqual(JsonToken.PropertyName, reader.TokenType); Assert.IsTrue(reader.Read()); Assert.AreEqual(JsonToken.Bytes, reader.TokenType); CollectionAssert.AreEquivalent(oid, (byte[])reader.Value); Assert.IsTrue(reader.Read()); Assert.AreEqual(JsonToken.EndObject, reader.TokenType); }
public void WriteBigInteger() { BigInteger i = BigInteger.Parse("1999999999999999999999999999999999999999999999999999999999990"); MemoryStream ms = new MemoryStream(); BsonDataWriter writer = new BsonDataWriter(ms); writer.WriteStartObject(); writer.WritePropertyName("Blah"); writer.WriteValue(i); writer.WriteEndObject(); string bson = BytesToHex(ms.ToArray()); Assert.AreEqual("2A-00-00-00-05-42-6C-61-68-00-1A-00-00-00-00-F6-FF-FF-FF-FF-FF-FF-1F-B2-21-CB-28-59-84-C4-AE-03-8A-44-34-2F-4C-4E-9E-3E-01-00", bson); ms.Seek(0, SeekOrigin.Begin); BsonDataReader reader = new BsonDataReader(ms); Assert.IsTrue(reader.Read()); Assert.AreEqual(JsonToken.StartObject, reader.TokenType); Assert.IsTrue(reader.Read()); Assert.AreEqual(JsonToken.PropertyName, reader.TokenType); Assert.IsTrue(reader.Read()); Assert.AreEqual(JsonToken.Bytes, reader.TokenType); CollectionAssert.AreEqual(new byte[] { 246, 255, 255, 255, 255, 255, 255, 31, 178, 33, 203, 40, 89, 132, 196, 174, 3, 138, 68, 52, 47, 76, 78, 158, 62, 1 }, (byte[])reader.Value); Assert.AreEqual(i, new BigInteger((byte[])reader.Value)); Assert.IsTrue(reader.Read()); Assert.AreEqual(JsonToken.EndObject, reader.TokenType); Assert.IsFalse(reader.Read()); }
public void WriteBytes() { byte[] data = Encoding.UTF8.GetBytes("Hello world!"); MemoryStream ms = new MemoryStream(); BsonDataWriter writer = new BsonDataWriter(ms); writer.WriteStartArray(); writer.WriteValue("a"); writer.WriteValue("b"); writer.WriteValue(data); writer.WriteEndArray(); writer.Flush(); ms.Seek(0, SeekOrigin.Begin); string expected = "2B-00-00-00-02-30-00-02-00-00-00-61-00-02-31-00-02-00-00-00-62-00-05-32-00-0C-00-00-00-00-48-65-6C-6C-6F-20-77-6F-72-6C-64-21-00"; string bson = BytesToHex(ms.ToArray()); Assert.AreEqual(expected, bson); BsonDataReader reader = new BsonDataReader(new MemoryStream(ms.ToArray())); reader.ReadRootValueAsArray = true; reader.Read(); reader.Read(); reader.Read(); reader.Read(); Assert.AreEqual(JsonToken.Bytes, reader.TokenType); CollectionAssert.AreEquivalent(data, (byte[])reader.Value); }
public void Deserialize(BsonDataReader rdr) { rdr.Read(); rdr.Read(); Key = rdr.ReadAsString(); rdr.Read(); Value = rdr.ReadAsString(); rdr.Read(); }
public void Deserialize(BsonDataReader rdr) { //begin array rdr.Read(); rdr.Read(); Path = rdr.ReadAsString(); rdr.Read(); PacketId = (byte)(rdr.ReadAsInt32() ?? 0); //end array rdr.Read(); }
public void Deserialize(BsonDataReader rdr) { //begin array rdr.Read(); rdr.Read(); Res = (ErrorType)(rdr.ReadAsInt32() ?? 0); rdr.Read(); Msg = rdr.ReadAsString(); //end array rdr.Read(); }
public static void Bson_ValueOnly <TItem>(TItem value, Action <JsonWriter, TItem> write, Func <JsonReader, Database, TItem> read) { TItem roundTripped = default; using (MemoryStream stream = new MemoryStream()) { using (BinaryWriter bw = new BinaryWriter(stream, Encoding.UTF8, leaveOpen: true)) using (BsonDataWriter bdw = new BsonDataWriter(bw)) { // Write value alone write(bdw, value); } long bytesWritten = stream.Position; stream.Seek(0, SeekOrigin.Begin); using (BinaryReader br = new BinaryReader(stream, Encoding.UTF8, leaveOpen: true)) using (BsonDataReader bdr = new BsonDataReader(br)) { bdr.Read(); // Read value roundTripped = read(bdr, default(Database)); } // Ensure everything written is read back Assert.Equal(bytesWritten, stream.Position); // Ensure value returned matches value written Assert.Equal(value, roundTripped); } }
public void can_create_tcp_message_from_byte_array() { var tcpMsg = new TcpMessage(_testEvent); Assert.NotNull(tcpMsg.Data.Array); // ReSharper disable once AssignNullToNotNullAttribute var reader = new BsonDataReader(new MemoryStream(tcpMsg.Data.Array)); // read object reader.Read(); // read type name reader.Read(); var messageType = MessageHierarchy.GetTypeByFullName((string)reader.Value); reader.Read(); //read json value var msg2 = (Message)JsonConvert.DeserializeObject((string)reader.Value, messageType, Json.JsonSettings); Assert.IsType <WoftamEvent>(msg2); Assert.Equal(Prop1, ((WoftamEvent)msg2).Property1); }
public void WriteByteArray() { MemoryStream ms = new MemoryStream(); BsonDataWriter writer = new BsonDataWriter(ms); writer.WriteStartObject(); writer.WritePropertyName("array0"); writer.WriteValue(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7 }); writer.WritePropertyName("array1"); writer.WriteValue(default(byte[])); writer.WriteEndObject(); ms.Seek(0, SeekOrigin.Begin); BsonDataReader reader = new BsonDataReader(ms); Assert.IsTrue(reader.Read()); Assert.AreEqual(JsonToken.StartObject, reader.TokenType); Assert.IsTrue(reader.Read()); Assert.AreEqual(JsonToken.PropertyName, reader.TokenType); Assert.AreEqual(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7 }, reader.ReadAsBytes()); Assert.IsTrue(reader.Read()); Assert.AreEqual(JsonToken.PropertyName, reader.TokenType); Assert.IsNull(reader.ReadAsBytes()); }
public void WriteUri() { MemoryStream ms = new MemoryStream(); BsonDataWriter writer = new BsonDataWriter(ms); writer.WriteStartObject(); writer.WritePropertyName("uri0"); writer.WriteValue(new Uri("http://example.net/")); writer.WritePropertyName("uri1"); writer.WriteValue(default(Uri)); writer.WriteEndObject(); ms.Seek(0, SeekOrigin.Begin); BsonDataReader reader = new BsonDataReader(ms); Assert.IsTrue(reader.Read()); Assert.AreEqual(JsonToken.StartObject, reader.TokenType); Assert.IsTrue(reader.Read()); Assert.AreEqual(JsonToken.PropertyName, reader.TokenType); Assert.AreEqual("http://example.net/", reader.ReadAsString()); Assert.IsTrue(reader.Read()); Assert.AreEqual(JsonToken.PropertyName, reader.TokenType); Assert.IsNull(reader.ReadAsString()); }
public void WriteDateTimes() { MemoryStream ms = new MemoryStream(); BsonDataWriter writer = new BsonDataWriter(ms); writer.DateTimeKindHandling = DateTimeKind.Unspecified; writer.WriteStartArray(); writer.WriteValue(new DateTime(2000, 10, 12, 20, 55, 0, DateTimeKind.Utc)); writer.WriteValue(new DateTime(2000, 10, 12, 20, 55, 0, DateTimeKind.Local)); writer.WriteValue(new DateTime(2000, 10, 12, 20, 55, 0, DateTimeKind.Unspecified)); writer.WriteEndArray(); ms.Seek(0, SeekOrigin.Begin); BsonDataReader reader = new BsonDataReader(ms); reader.ReadRootValueAsArray = true; reader.DateTimeKindHandling = DateTimeKind.Utc; Assert.IsTrue(reader.Read()); Assert.AreEqual(JsonToken.StartArray, reader.TokenType); Assert.IsTrue(reader.Read()); Assert.AreEqual(JsonToken.Date, reader.TokenType); Assert.AreEqual(new DateTime(2000, 10, 12, 20, 55, 0, DateTimeKind.Utc), reader.Value); Assert.IsTrue(reader.Read()); Assert.AreEqual(JsonToken.Date, reader.TokenType); Assert.AreEqual(new DateTime(2000, 10, 12, 20, 55, 0, DateTimeKind.Utc), reader.Value); Assert.IsTrue(reader.Read()); Assert.AreEqual(JsonToken.Date, reader.TokenType); Assert.AreEqual(new DateTime(2000, 10, 12, 20, 55, 0, DateTimeKind.Utc), reader.Value); Assert.IsTrue(reader.Read()); Assert.AreEqual(JsonToken.EndArray, reader.TokenType); Assert.IsFalse(reader.Read()); }
public void WriteReadEmptyAndNullStrings() { MemoryStream ms = new MemoryStream(); BsonDataWriter writer = new BsonDataWriter(ms); writer.WriteStartArray(); writer.WriteValue("Content!"); writer.WriteValue(""); writer.WriteValue((string)null); writer.WriteEndArray(); ms.Seek(0, SeekOrigin.Begin); BsonDataReader reader = new BsonDataReader(ms); reader.ReadRootValueAsArray = true; Assert.IsTrue(reader.Read()); Assert.AreEqual(JsonToken.StartArray, reader.TokenType); Assert.IsTrue(reader.Read()); Assert.AreEqual(JsonToken.String, reader.TokenType); Assert.AreEqual("Content!", reader.Value); Assert.IsTrue(reader.Read()); Assert.AreEqual(JsonToken.String, reader.TokenType); Assert.AreEqual("", reader.Value); Assert.IsTrue(reader.Read()); Assert.AreEqual(JsonToken.Null, reader.TokenType); Assert.AreEqual(null, reader.Value); Assert.IsTrue(reader.Read()); Assert.AreEqual(JsonToken.EndArray, reader.TokenType); Assert.IsFalse(reader.Read()); }