public void should_throw_if_serialized_directly()
        {
            IdentitySerializer.RegisterForIdentityTypes(typeof(SchoolId));

            var schoolId = new SchoolId("school-56");

            Assert.Throws <InvalidOperationException>(() =>
            {
                MongoSerializer.Serialize(schoolId);
            });
        }
        public void bson_serialize_and_deserialise_performance()
        {
            var obj = Developer.Create();

            var watch = Stopwatch.StartNew();

            for (int i = 0; i < _iterations; i++)
            {
                var bson = MongoSerializer.Serialize(obj);
                var back = (Developer)MongoSerializer.Deserialize(bson, typeof(Developer));
            }
            watch.Stop();

            Console.WriteLine("Bson. Done in {0} msec", watch.ElapsedMilliseconds);
        }
        public void should_serialize_and_deserialize()
        {
            IdentitySerializer.RegisterForIdentityTypes(typeof(SchoolId));

            var doc = new SchoolDocument()
            {
                Name           = "Minsk",
                Year           = 2012,
                SchoolIdentity = new SchoolId("school-67")
            };

            var bson      = MongoSerializer.Serialize(doc);
            var idElement = bson["SchoolIdentity"];

            Assert.That(idElement.IsString, Is.True);
            Assert.That(idElement.AsString, Is.EqualTo(doc.SchoolIdentity.Value));

            var back = (SchoolDocument)MongoSerializer.Deserialize(bson, typeof(SchoolDocument));

            Assert.That(back.SchoolIdentity.Value, Is.EqualTo(doc.SchoolIdentity.Value));
            Assert.That(back.Name, Is.EqualTo(doc.Name));
            Assert.That(back.Year, Is.EqualTo(doc.Year));
        }