public void Initialization_BaseMembersSerialized_CallsNoCtor()
        {
            CallGetObjectDataForGeneratedTypes(true);

            var helper             = new MixinSerializationHelper(_serializationInfo, _context);
            var deserializedObject = (FakeConcreteMixinType)helper.GetRealObject(_context);

            Assert.That(deserializedObject.CtorCalled, Is.False);
        }
        public void Initialization_SignalsOnDeserializing()
        {
            CallGetObjectDataForGeneratedTypes(true);

            var helper             = new MixinSerializationHelper(_serializationInfo, _context);
            var deserializedObject = (FakeConcreteMixinType)helper.GetRealObject(_context);

            Assert.That(deserializedObject.OnDeserializingCalled, Is.True);
        }
        public void GetRealObject_ReturnsConcreteMixinTypeInstance()
        {
            CallGetObjectDataForGeneratedTypes(true);

            var helper = new MixinSerializationHelper(_serializationInfo, _context);

            var realObject = helper.GetRealObject(_context);

            Assert.That(realObject.GetType(), Is.SameAs(_pipeline.ReflectionService.GetAdditionalType(_identifier)));
        }
        public void OnDeserialization_RestoresBaseMembers_NotWhenNoBaseMembers()
        {
            _concreteMixin.I = 4711;
            CallGetObjectDataForGeneratedTypes(false);
            var helper = new MixinSerializationHelper(_serializationInfo, _context);

            var deserializedObject = (MixinWithAbstractMembers)helper.GetRealObject(_context);

            Assert.That(deserializedObject.I, Is.EqualTo(0));

            helper.OnDeserialization(null);
            Assert.That(deserializedObject.I, Is.EqualTo(0));
        }
        public void OnDeserialization_RaisesEvents()
        {
            CallGetObjectDataForGeneratedTypes(true);
            var helper = new MixinSerializationHelper(_serializationInfo, _context);

            var deserializedObject = (FakeConcreteMixinType)helper.GetRealObject(_context);

            Assert.That(deserializedObject.OnDeserializedCalled, Is.False);
            Assert.That(deserializedObject.OnDeserializationCalled, Is.False);

            helper.OnDeserialization(null);

            Assert.That(deserializedObject.OnDeserializedCalled, Is.True);
            Assert.That(deserializedObject.OnDeserializationCalled, Is.True);
        }
 private void CallGetObjectDataForGeneratedTypes(bool serializeBaseMembers)
 {
     MixinSerializationHelper.GetObjectDataForGeneratedTypes(
         _serializationInfo, _context, _concreteMixin, _identifier, serializeBaseMembers, _pipeline.ParticipantConfigurationID);
 }