Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/Newtonsoft.Json.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJamesNK <james@newtonking.com>2010-03-27 09:18:40 +0300
committerJamesNK <james@newtonking.com>2010-03-27 09:18:40 +0300
commitb0c6db675ef57848c9aa7bdb5614193fc241fecf (patch)
tree148e7ee3d1ed4bb49c3cfe6c175eb8d55a2c7845 /Src/Newtonsoft.Json.Tests/Bson
parent6ce972156dd187cb428593ec7a51574169b58ff6 (diff)
-Added WriteRegex to BsonWriter
-Added RegexConverter -Fixed BsonWriter writing empty string instead of null
Diffstat (limited to 'Src/Newtonsoft.Json.Tests/Bson')
-rw-r--r--Src/Newtonsoft.Json.Tests/Bson/BsonReaderTests.cs35
-rw-r--r--Src/Newtonsoft.Json.Tests/Bson/BsonWriterTests.cs86
2 files changed, 121 insertions, 0 deletions
diff --git a/Src/Newtonsoft.Json.Tests/Bson/BsonReaderTests.cs b/Src/Newtonsoft.Json.Tests/Bson/BsonReaderTests.cs
index a648982..939e347 100644
--- a/Src/Newtonsoft.Json.Tests/Bson/BsonReaderTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Bson/BsonReaderTests.cs
@@ -979,5 +979,40 @@ namespace Newtonsoft.Json.Tests.Bson
string expected = sb.ToString();
Assert.AreEqual(expected, WriteAndReadStringPropertyName(expected));
}
+
+ [Test]
+ public void ReadRegexWithOptions()
+ {
+ string hexdoc = "1A-00-00-00-0B-72-65-67-65-78-00-61-62-63-00-69-00-0B-74-65-73-74-00-00-00-00";
+
+ byte[] data = MiscellaneousUtils.HexToBytes(hexdoc);
+
+ MemoryStream ms = new MemoryStream(data);
+ BsonReader reader = new BsonReader(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.String, reader.TokenType);
+ Assert.AreEqual("/abc/i", reader.Value);
+ Assert.AreEqual(typeof(string), reader.ValueType);
+
+ Assert.IsTrue(reader.Read());
+ Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+ Assert.IsTrue(reader.Read());
+ Assert.AreEqual(JsonToken.String, reader.TokenType);
+ Assert.AreEqual("//", reader.Value);
+ Assert.AreEqual(typeof(string), reader.ValueType);
+
+ Assert.IsTrue(reader.Read());
+ Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+ Assert.IsFalse(reader.Read());
+ }
}
} \ No newline at end of file
diff --git a/Src/Newtonsoft.Json.Tests/Bson/BsonWriterTests.cs b/Src/Newtonsoft.Json.Tests/Bson/BsonWriterTests.cs
index e99595e..ca64132 100644
--- a/Src/Newtonsoft.Json.Tests/Bson/BsonWriterTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Bson/BsonWriterTests.cs
@@ -472,5 +472,91 @@ namespace Newtonsoft.Json.Tests.Bson
Assert.AreEqual(expected, ms.ToArray());
}
+
+ [Test]
+ public void WriteRegexPlusContent()
+ {
+ MemoryStream ms = new MemoryStream();
+ BsonWriter writer = new BsonWriter(ms);
+
+ writer.WriteStartObject();
+ writer.WritePropertyName("regex");
+ writer.WriteRegex("abc", "i");
+ writer.WritePropertyName("test");
+ writer.WriteRegex(string.Empty, null);
+ writer.WriteEndObject();
+
+ byte[] expected = MiscellaneousUtils.HexToBytes("1A-00-00-00-0B-72-65-67-65-78-00-61-62-63-00-69-00-0B-74-65-73-74-00-00-00-00");
+
+ Assert.AreEqual(expected, ms.ToArray());
+ }
+
+ [Test]
+ public void SerializeEmptyAndNullStrings()
+ {
+ Product p = new Product();
+ p.ExpiryDate = DateTime.Parse("2009-04-05T14:45:00Z");
+ p.Name = null;
+ p.Price = 9.95m;
+ p.Sizes = new[] { "Small", "", null };
+
+ MemoryStream ms = new MemoryStream();
+ JsonSerializer serializer = new JsonSerializer();
+
+ BsonWriter writer = new BsonWriter(ms);
+ serializer.Serialize(writer, p);
+
+ ms.Seek(0, SeekOrigin.Begin);
+
+ BsonReader reader = new BsonReader(ms);
+ Product deserializedProduct = serializer.Deserialize<Product>(reader);
+
+ Console.WriteLine(deserializedProduct.Name);
+
+ Assert.AreEqual(null, deserializedProduct.Name);
+ Assert.AreEqual(9.95m, deserializedProduct.Price);
+ Assert.AreEqual(3, deserializedProduct.Sizes.Length);
+ Assert.AreEqual("Small", deserializedProduct.Sizes[0]);
+ Assert.AreEqual("", deserializedProduct.Sizes[1]);
+ Assert.AreEqual(null, deserializedProduct.Sizes[2]);
+ }
+
+ [Test]
+ public void WriteReadEmptyAndNullStrings()
+ {
+ MemoryStream ms = new MemoryStream();
+ BsonWriter writer = new BsonWriter(ms);
+
+ writer.WriteStartArray();
+ writer.WriteValue("Content!");
+ writer.WriteValue("");
+ writer.WriteValue((string)null);
+ writer.WriteEndArray();
+
+ ms.Seek(0, SeekOrigin.Begin);
+
+ BsonReader reader = new BsonReader(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());
+ }
}
} \ No newline at end of file