Exemplo n.º 1
0
        public void ReserializationWithoutDataLoss()
        {
            EntityMapping.AddMappingProcessor(new TypeDiscoveryProcessor());
            EntityMapping.RegisterType(typeof(CollectionBaseModel));

            var initialEntity = new CollectionBaseModel
            {
                KnownList = new List <KnownBaseModel>
                {
                    new KnownBaseModel(),
                    new UnknownChildModel(),
                    new UnknownGrandChildModel()
                }
            };

            var document = new BsonDocument();

            using (var writer = new BsonDocumentWriter(document))
            {
                BsonSerializer.Serialize(writer, initialEntity);
            }

            var deserializedResult = BsonSerializer.Deserialize <CollectionBaseModel>(document);

            Assert.AreEqual(3, deserializedResult.KnownList.Count);
            Assert.IsInstanceOfType(deserializedResult.KnownList[0], typeof(KnownBaseModel));
            Assert.IsInstanceOfType(deserializedResult.KnownList[1], typeof(UnknownChildModel));
            Assert.IsInstanceOfType(deserializedResult.KnownList[2], typeof(UnknownGrandChildModel));
        }
        public void ReserializationWithoutDataLoss()
        {
            var entityMapper = new EntityMapper <CollectionBaseModel>();

            var initialEntity = new CollectionBaseModel
            {
                KnownList = new List <KnownBaseModel>
                {
                    new KnownBaseModel(),
                    new UnknownChildModel(),
                    new UnknownGrandChildModel()
                }
            };

            var document = new BsonDocument();

            using (var writer = new BsonDocumentWriter(document))
            {
                BsonSerializer.Serialize(writer, initialEntity);
            }

            var deserializedResult = BsonSerializer.Deserialize <CollectionBaseModel>(document);

            Assert.AreEqual(3, deserializedResult.KnownList.Count);
            Assert.AreEqual(typeof(KnownBaseModel), deserializedResult.KnownList[0].GetType());
            Assert.AreEqual(typeof(UnknownChildModel), deserializedResult.KnownList[1].GetType());
            Assert.AreEqual(typeof(UnknownGrandChildModel), deserializedResult.KnownList[2].GetType());
        }