public void TestConvertToBsonViaJson()
        {
            Person person = new Person
                            {
                                Id = "51ca5da43d1b18cc15000000",
                                Name = "Luke Skywalker",
                                Gender = "Male",
                                DateOfBirth = new DateTime(1977, 5, 25)
                            };
            //// person.DateOfDeath = Deliberately excluded

            BsonDocument document = BsonConverter.ConvertToBsonViaJson(person);
            Assert.AreEqual(person.Id, document["_id"].AsObjectId.ToString());
            Assert.AreEqual(person.Name, document["Name"].AsString);
            Assert.AreEqual(person.Gender, document["Gender"].AsString);
            Assert.AreEqual(person.DateOfBirth.ToUniversalTime(), document["DateOfBirth"].ToUniversalTime());
            Assert.IsTrue(document["DateOfDeath"].IsBsonNull);
        }
        public void TestTwoWay()
        {
            Person p1 = new Person
                        {
                DateOfBirth = DateTime.Now,
                Gender = "Female",
                Id = Guid.NewGuid().ToString("N"),
                Name = "Jane Bloggs"
            };

            string token = EncryptedJsonSerializer.Serialize(this.crypto, p1);
            Person p2 = EncryptedJsonSerializer.Deserialize<Person>(this.crypto, token);

            Assert.AreEqual(p1.DateOfBirth.ToUniversalTime().ToShortDateString(), p2.DateOfBirth.ToUniversalTime().ToShortDateString());
            Assert.IsNull(p2.DateOfDeath);
            Assert.AreEqual(p1.Gender, p2.Gender);
            Assert.AreEqual(p1.Id, p2.Id);
            Assert.AreEqual(p1.Name, p2.Name);
        }
        public void TestConvertToBsonViaJsonNewDocument()
        {
            Person person = new Person
                            {
                                Name = "Luke Skywalker",
                                Gender = "Male",
                                DateOfBirth = new DateTime(1977, 5, 25)
                            };
            //// person.Id = Deliberately excluded
            //// person.DateOfDeath = Deliberately excluded

            BsonDocument document = BsonConverter.ConvertToBsonViaJson(person);
            Assert.IsFalse(document.Contains("_id"));
        }
            public void SerializeDateTimeValue()
            {
                Person person = new Person
                                {
                    DateOfBirth = new DateTime(2012, 9, 11, 1, 12, 56, 345, DateTimeKind.Utc)
                };

                string json = JsonConvert.SerializeObject(person);
                Assert.AreNotEqual(-1, json.IndexOf("\"DateOfBirth\":{\"$date\":1347325976345}", StringComparison.Ordinal));
            }
            public void SerializeNull()
            {
                Person person = new Person
                                {
                    DateOfBirth = new DateTime(2012, 9, 11, 1, 12, 56, 345, DateTimeKind.Utc)
                };

                string json = JsonConvert.SerializeObject(person);
                Assert.AreNotEqual(-1, json.IndexOf("\"DateOfDeath\":null", StringComparison.Ordinal));
            }
            public void CanSerializeBsonId()
            {
                Person person = new Person
                                {
                                    Id = "503bfe78d7eaf00e5c903ecc",
                                    Name = "Joe Bloggs",
                                    Gender = "Male",
                                    DateOfBirth = DateTime.Now
                                };

                string json = JsonConvert.SerializeObject(person);
                Assert.AreNotEqual(-1, json.IndexOf("\"_id\":{\"$oid\":\"503bfe78d7eaf00e5c903ecc\"", StringComparison.Ordinal));

                JObject jObject = JObject.Parse(json);
                Assert.AreEqual(person.Id, jObject.SelectToken("_id").Value<string>("$oid"));
            }