public void WriteBigInteger() { BigInteger i = BigInteger.Parse("1999999999999999999999999999999999999999999999999999999999990"); MemoryStream ms = new MemoryStream(); CborDataWriter writer = new CborDataWriter(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); CborDataReader reader = new CborDataReader(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(); CborDataWriter writer = new CborDataWriter(ms); writer.WriteStartArray(); writer.WriteValue("a"); writer.WriteValue("b"); writer.WriteValue(data); writer.WriteEndArray(); writer.Flush(); ms.Seek(0, SeekOrigin.Begin); string expected = "83-61-61-61-62-4C-48-65-6C-6C-6F-20-77-6F-72-6C-64-21"; string bson = BytesToHex(ms.ToArray()); Assert.AreEqual(expected, bson); CborDataReader reader = new CborDataReader(new MemoryStream(ms.ToArray())); reader.Read(); reader.Read(); reader.Read(); reader.Read(); Assert.AreEqual(JsonToken.Bytes, reader.TokenType); CollectionAssert.AreEquivalent(data, (byte[])reader.Value); }
public void WriteReadEmptyAndNullStrings() { MemoryStream ms = new MemoryStream(); CborDataWriter writer = new CborDataWriter(ms); writer.WriteStartArray(); writer.WriteValue("Content!"); writer.WriteValue(""); writer.WriteValue((string)null); writer.WriteEndArray(); ms.Seek(0, SeekOrigin.Begin); CborDataReader reader = new CborDataReader(ms); 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()); }
/// <summary> /// Load a <see cref="JObject"/> from a byte array that contains CBOR. /// </summary> /// <param name="cbor">A <see cref="byte[]"/> that contains CBOR.</param> /// <param name="settings">The <see cref="JsonLoadSettings"/> used to load the CBOR. /// If this is <c>null</c>, default load settings will be used.</param> /// <returns>A <see cref="JObject"/> populated from the byte array that contains CBOR.</returns> /// <exception cref="JsonReaderException"> /// <paramref name="cbor"/> is not valid CBOR. /// </exception> public static JObject Parse(byte[] cbor, JsonLoadSettings settings) { using (var reader = new CborDataReader(new MemoryStream(cbor))) { JObject o = JObject.Load(reader, settings); while (reader.Read()) { // Any content encountered here other than a comment will throw in the reader. } return(o); } }
public void WriteByteArray() { MemoryStream ms = new MemoryStream(); CborDataWriter writer = new CborDataWriter(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); CborDataReader reader = new CborDataReader(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(); CborDataWriter writer = new CborDataWriter(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); CborDataReader reader = new CborDataReader(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(); CborDataWriter writer = new CborDataWriter(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); CborDataReader reader = new CborDataReader(ms); 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()); }