You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
585 lines
21 KiB
585 lines
21 KiB
/* Copyright 2010 10gen Inc.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using NUnit.Framework;
|
|
|
|
using MongoDB.Bson;
|
|
using MongoDB.Bson.DefaultSerializer;
|
|
using MongoDB.Bson.IO;
|
|
using MongoDB.Bson.Serialization;
|
|
|
|
namespace MongoDB.BsonUnitTests.DefaultSerializer {
|
|
[TestFixture]
|
|
public class BooleanSerializerTests {
|
|
public class TestClass {
|
|
public bool Boolean { get; set; }
|
|
}
|
|
|
|
[Test]
|
|
public void TestFalse() {
|
|
var obj = new TestClass {
|
|
Boolean = false
|
|
};
|
|
var json = obj.ToJson();
|
|
var expected = "{ 'Boolean' : false }".Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
|
|
[Test]
|
|
public void TestTrue() {
|
|
var obj = new TestClass {
|
|
Boolean = true
|
|
};
|
|
var json = obj.ToJson();
|
|
var expected = "{ 'Boolean' : true }".Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
}
|
|
|
|
[TestFixture]
|
|
public class DateTimeSerializerTests {
|
|
public class TestClass {
|
|
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
|
|
public DateTime DateTime { get; set; }
|
|
}
|
|
|
|
[Test]
|
|
public void TestMinLocal() {
|
|
var obj = new TestClass {
|
|
DateTime = DateTime.SpecifyKind(DateTime.MinValue, DateTimeKind.Local)
|
|
};
|
|
long milliseconds = (long) (DateTime.MinValue - BsonConstants.UnixEpoch).TotalMilliseconds;
|
|
var json = obj.ToJson();
|
|
var expected = ("{ 'DateTime' : { '$date' : " + milliseconds.ToString() + " } }").Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
|
|
[Test]
|
|
public void TestMinUnspecified() {
|
|
var obj = new TestClass {
|
|
DateTime = DateTime.SpecifyKind(DateTime.MinValue, DateTimeKind.Unspecified)
|
|
};
|
|
long milliseconds = (long) (DateTime.MinValue - BsonConstants.UnixEpoch).TotalMilliseconds;
|
|
var json = obj.ToJson();
|
|
var expected = ("{ 'DateTime' : { '$date' : " + milliseconds.ToString() + " } }").Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
|
|
[Test]
|
|
public void TestMinUtc() {
|
|
var obj = new TestClass {
|
|
DateTime = DateTime.SpecifyKind(DateTime.MinValue, DateTimeKind.Utc)
|
|
};
|
|
long milliseconds = (long) (DateTime.MinValue - BsonConstants.UnixEpoch).TotalMilliseconds;
|
|
var json = obj.ToJson();
|
|
var expected = ("{ 'DateTime' : { '$date' : " + milliseconds.ToString() + " } }").Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
|
|
[Test]
|
|
public void TestMaxLocal() {
|
|
var obj = new TestClass {
|
|
DateTime = DateTime.SpecifyKind(DateTime.MaxValue, DateTimeKind.Local)
|
|
};
|
|
long milliseconds = (long) (DateTime.MaxValue - BsonConstants.UnixEpoch).TotalMilliseconds;
|
|
var json = obj.ToJson();
|
|
var expected = ("{ 'DateTime' : { '$date' : " + milliseconds.ToString() + " } }").Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
|
|
[Test]
|
|
public void TestMaxUnspecified() {
|
|
var obj = new TestClass {
|
|
DateTime = DateTime.SpecifyKind(DateTime.MaxValue, DateTimeKind.Unspecified)
|
|
};
|
|
long milliseconds = (long) (DateTime.MaxValue - BsonConstants.UnixEpoch).TotalMilliseconds;
|
|
var json = obj.ToJson();
|
|
var expected = ("{ 'DateTime' : { '$date' : " + milliseconds.ToString() + " } }").Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
|
|
[Test]
|
|
public void TestMaxUtc() {
|
|
var obj = new TestClass {
|
|
DateTime = DateTime.SpecifyKind(DateTime.MaxValue, DateTimeKind.Utc)
|
|
};
|
|
long milliseconds = (long) (DateTime.MaxValue - BsonConstants.UnixEpoch).TotalMilliseconds;
|
|
var json = obj.ToJson();
|
|
var expected = ("{ 'DateTime' : { '$date' : " + milliseconds.ToString() + " } }").Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
|
|
[Test]
|
|
public void TestLocal() {
|
|
var obj = new TestClass {
|
|
DateTime = new DateTime(2010, 10, 08, 13, 30, 0, DateTimeKind.Local)
|
|
};
|
|
long milliseconds = (long) (obj.DateTime.ToUniversalTime() - BsonConstants.UnixEpoch).TotalMilliseconds;
|
|
var json = obj.ToJson();
|
|
var expected = ("{ 'DateTime' : { '$date' : " + milliseconds.ToString() + " } }").Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
|
|
[Test]
|
|
public void TestUnspecified() {
|
|
var obj = new TestClass {
|
|
DateTime = new DateTime(2010, 10, 08, 13, 30, 0, DateTimeKind.Unspecified)
|
|
};
|
|
long milliseconds = (long) (obj.DateTime.ToUniversalTime() - BsonConstants.UnixEpoch).TotalMilliseconds;
|
|
var json = obj.ToJson();
|
|
var expected = ("{ 'DateTime' : { '$date' : " + milliseconds.ToString() + " } }").Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
|
|
[Test]
|
|
public void TestUtc() {
|
|
var obj = new TestClass {
|
|
DateTime = new DateTime(2010, 10, 08, 13, 30, 0, DateTimeKind.Utc)
|
|
};
|
|
long milliseconds = (long) (obj.DateTime - BsonConstants.UnixEpoch).TotalMilliseconds;
|
|
var json = obj.ToJson();
|
|
var expected = ("{ 'DateTime' : { '$date' : " + milliseconds.ToString() + " } }").Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
}
|
|
|
|
[TestFixture]
|
|
public class DoubleSerializerTests {
|
|
public class TestClass {
|
|
public double Double { get; set; }
|
|
}
|
|
|
|
[Test]
|
|
public void TestMin() {
|
|
var obj = new TestClass {
|
|
Double = double.MinValue
|
|
};
|
|
var json = obj.ToJson();
|
|
var expected = ("{ 'Double' : " + double.MinValue.ToString() + " }").Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
|
|
[Test]
|
|
public void TestMinusOne() {
|
|
var obj = new TestClass {
|
|
Double = -1.0
|
|
};
|
|
var json = obj.ToJson();
|
|
var expected = "{ 'Double' : -1 }".Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
|
|
[Test]
|
|
public void TestZero() {
|
|
var obj = new TestClass {
|
|
Double = 0.0
|
|
};
|
|
var json = obj.ToJson();
|
|
var expected = "{ 'Double' : 0 }".Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
|
|
[Test]
|
|
public void TestOne() {
|
|
var obj = new TestClass {
|
|
Double = 1.0
|
|
};
|
|
var json = obj.ToJson();
|
|
var expected = "{ 'Double' : 1 }".Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
|
|
[Test]
|
|
public void TestMax() {
|
|
var obj = new TestClass {
|
|
Double = double.MaxValue
|
|
};
|
|
var json = obj.ToJson();
|
|
var expected = ("{ 'Double' : " + double.MaxValue.ToString() + " }").Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
|
|
[Test]
|
|
public void TestNaN() {
|
|
var obj = new TestClass {
|
|
Double = double.NaN
|
|
};
|
|
var json = obj.ToJson();
|
|
var expected = "{ 'Double' : NaN }".Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
|
|
[Test]
|
|
public void TestNegativeInfinity() {
|
|
var obj = new TestClass {
|
|
Double = double.NegativeInfinity
|
|
};
|
|
var json = obj.ToJson();
|
|
var expected = "{ 'Double' : -Infinity }".Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
|
|
[Test]
|
|
public void TestPositiveInfinity() {
|
|
var obj = new TestClass {
|
|
Double = double.PositiveInfinity
|
|
};
|
|
var json = obj.ToJson();
|
|
var expected = "{ 'Double' : Infinity }".Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
}
|
|
|
|
[TestFixture]
|
|
public class GuidSerializerTests {
|
|
public class TestClass {
|
|
public Guid Guid { get; set; }
|
|
}
|
|
|
|
[Test]
|
|
public void TestEmpty() {
|
|
var obj = new TestClass {
|
|
Guid = Guid.Empty
|
|
};
|
|
var json = obj.ToJson();
|
|
var expected = ("{ 'Guid' : { '$binary' : 'AAAAAAAAAAAAAAAAAAAAAA==', '$type' : '03' } }").Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
|
|
[Test]
|
|
public void TestNew() {
|
|
var obj = new TestClass {
|
|
Guid = Guid.NewGuid()
|
|
};
|
|
var json = obj.ToJson();
|
|
var base64 = Convert.ToBase64String(obj.Guid.ToByteArray()).Replace("\\", "\\\\");
|
|
var expected = ("{ 'Guid' : { '$binary' : '" + base64 + "', '$type' : '03' } }").Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
}
|
|
|
|
[TestFixture]
|
|
public class Int32SerializerTests {
|
|
public class TestClass {
|
|
public int Int32 { get; set; }
|
|
}
|
|
|
|
[Test]
|
|
public void TestMin() {
|
|
var obj = new TestClass {
|
|
Int32 = int.MinValue
|
|
};
|
|
var json = obj.ToJson();
|
|
var expected = ("{ 'Int32' : " + int.MinValue.ToString() + " }").Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
|
|
[Test]
|
|
public void TestMinusOne() {
|
|
var obj = new TestClass {
|
|
Int32 = -1
|
|
};
|
|
var json = obj.ToJson();
|
|
var expected = "{ 'Int32' : -1 }".Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
|
|
[Test]
|
|
public void TestZero() {
|
|
var obj = new TestClass {
|
|
Int32 = 0
|
|
};
|
|
var json = obj.ToJson();
|
|
var expected = "{ 'Int32' : 0 }".Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
|
|
[Test]
|
|
public void TestOne() {
|
|
var obj = new TestClass {
|
|
Int32 = 1
|
|
};
|
|
var json = obj.ToJson();
|
|
var expected = "{ 'Int32' : 1 }".Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
|
|
[Test]
|
|
public void TestMax() {
|
|
var obj = new TestClass {
|
|
Int32 = int.MaxValue
|
|
};
|
|
var json = obj.ToJson();
|
|
var expected = ("{ 'Int32' : " + int.MaxValue.ToString() + " }").Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
}
|
|
|
|
[TestFixture]
|
|
public class Int64SerializerTests {
|
|
public class TestClass {
|
|
public long Int64 { get; set; }
|
|
}
|
|
|
|
[Test]
|
|
public void TestMin() {
|
|
var obj = new TestClass {
|
|
Int64 = long.MinValue
|
|
};
|
|
var json = obj.ToJson();
|
|
var expected = ("{ 'Int64' : " + long.MinValue.ToString() + " }").Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
|
|
[Test]
|
|
public void TestMinusOne() {
|
|
var obj = new TestClass {
|
|
Int64 = -1
|
|
};
|
|
var json = obj.ToJson();
|
|
var expected = "{ 'Int64' : -1 }".Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
|
|
[Test]
|
|
public void TestZero() {
|
|
var obj = new TestClass {
|
|
Int64 = 0
|
|
};
|
|
var json = obj.ToJson();
|
|
var expected = "{ 'Int64' : 0 }".Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
|
|
[Test]
|
|
public void TestOne() {
|
|
var obj = new TestClass {
|
|
Int64 = 1
|
|
};
|
|
var json = obj.ToJson();
|
|
var expected = "{ 'Int64' : 1 }".Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
|
|
[Test]
|
|
public void TestMax() {
|
|
var obj = new TestClass {
|
|
Int64 = long.MaxValue
|
|
};
|
|
var json = obj.ToJson();
|
|
var expected = ("{ 'Int64' : " + long.MaxValue.ToString() + " }").Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
}
|
|
|
|
[TestFixture]
|
|
public class ObjectIdSerializerTests {
|
|
public class TestClass {
|
|
public ObjectId ObjectId { get; set; }
|
|
}
|
|
|
|
[Test]
|
|
public void TestSerializer() {
|
|
var obj = new TestClass {
|
|
ObjectId = new ObjectId(1, 2)
|
|
};
|
|
var json = obj.ToJson();
|
|
var expected = ("{ 'ObjectId' : { '$oid' : '000000010000000000000002' } }").Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
}
|
|
|
|
[TestFixture]
|
|
public class StringSerializerTests {
|
|
public class TestClass {
|
|
public String String { get; set; }
|
|
}
|
|
|
|
[Test]
|
|
public void TestNull() {
|
|
var obj = new TestClass {
|
|
String = null
|
|
};
|
|
var json = obj.ToJson();
|
|
var expected = ("{ 'String' : null }").Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
|
|
[Test]
|
|
public void TestEmpty() {
|
|
var obj = new TestClass {
|
|
String = String.Empty
|
|
};
|
|
var json = obj.ToJson();
|
|
var expected = ("{ 'String' : '' }").Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
|
|
[Test]
|
|
public void TestHelloWorld() {
|
|
var obj = new TestClass {
|
|
String = "Hello World"
|
|
};
|
|
var json = obj.ToJson();
|
|
var expected = ("{ 'String' : 'Hello World' }").Replace("'", "\"");
|
|
Assert.AreEqual(expected, json);
|
|
|
|
var bson = obj.ToBson();
|
|
var rehydrated = BsonSerializer.Deserialize<TestClass>(bson);
|
|
Assert.IsTrue(bson.SequenceEqual(rehydrated.ToBson()));
|
|
}
|
|
}
|
|
}
|