コード例 #1
0
        private static object DeserializeInstance(Func <IParticipant>[] participantProviders, byte[] serializedData)
        {
            // Register a factory for deserialization in current (new) app domain.

            Assert.That(PipelineRegistry.HasInstanceProvider, Is.False);
            var defaultPipelineMock = MockRepository.GenerateStrictMock <IPipeline>();

            defaultPipelineMock.Stub(_ => _.ParticipantConfigurationID).Return("Mock Default Pipeline");
            IPipelineRegistry pipelineRegistry = new DefaultPipelineRegistry(defaultPipelineMock);

            PipelineRegistry.SetInstanceProvider(() => pipelineRegistry);

            var participants = participantProviders.Select(pp => pp()).Concat(new[] { new ModifyingParticipant() });
            // Avoid no-modification optimization.
            var pipeline = new DefaultPipelineFactory().Create(c_participantConfigurationID, participants.ToArray());

            pipelineRegistry.Register(pipeline);

            try
            {
                return(Serializer.Deserialize(serializedData));
            }
            finally
            {
                PipelineRegistryTestHelper.ResetPipelineRegistry();
            }
        }
コード例 #2
0
        public void GetHasInstanceProvider()
        {
            Assert.That(PipelineRegistry.HasInstanceProvider, Is.False);

            PipelineRegistry.SetInstanceProvider(() => _registry);
            Assert.That(PipelineRegistry.HasInstanceProvider, Is.True);
        }
コード例 #3
0
        public override void SetUp()
        {
            base.SetUp();

            // Use a dedicated pipeline to ensure that this test does not interfere with other tests.
            _savedPipeline = CreatePipeline();
            PipelineRegistry.SetDefaultPipeline(_savedPipeline);
        }
コード例 #4
0
 public void GetInstance_InstanceProviderReturnedNull_ThrowsInvalidOperationException()
 {
     PipelineRegistry.SetInstanceProvider(() => null);
     Assert.That(
         () => PipelineRegistry.Instance,
         Throws.InvalidOperationException.With.Message.EqualTo(
             "The registered instance provider returned null. "
             + "Use PipelineRegistry.SetInstanceProvider (() => thePipelineRegistry) during application startup to initialize the TypePipe infrastructure."));
 }
コード例 #5
0
        /// <summary>
        /// Initializes the <see cref="PipelineRegistry"/> with lookup based on the <see cref="SafeServiceLocator"/>. Call this method from within the
        /// static constructor of the TypePipe particpants.
        /// </summary>
        public static void InitializeWithServiceLocator()
        {
            // Note: It is still possible that a manual initialization is required in application code if mixin deserialization takes place
            //       before TypeFactoryImplementation is requested.

            // Note: No Synchronization is required. Either the setup is already done during single-threaded application startup
            //       or the operation is idem-potent within the PipelineRegistryInitializer. Race-conditions between this method and 3rd-party code
            //       that does not support SafeServiceLocator cannot be handled from within the infrastructure code.
            if (!PipelineRegistry.HasInstanceProvider)
            {
                PipelineRegistry.SetInstanceProvider(() => SafeServiceLocator.Current.GetInstance <IPipelineRegistry>());
            }
        }
コード例 #6
0
        public void SetUp()
        {
            var serializableType   = ReflectionObjectMother.GetSomeSerializableType();
            var formatterConverter = new FormatterConverter();

            _info    = new SerializationInfo(serializableType, formatterConverter);
            _context = new StreamingContext((StreamingContextStates)7);

            _pipelineRegistryStub = MockRepository.GenerateStub <IPipelineRegistry>();
            Assert.That(PipelineRegistry.HasInstanceProvider, Is.False);
            PipelineRegistry.SetInstanceProvider(() => _pipelineRegistryStub);

            _deserializationMethodInvokerMock = MockRepository.GenerateMock <IDeserializationMethodInvoker>();
            _createRealObjectAssertions       = (instance, info, ctx, typeName) => { throw new Exception("Setup assertions and return real object."); };

            // Use testable class instead of partial mock, because RhinoMocks chokes on non-virtual ISerializable.GetObjectData.
            _objectDeserializationProxyBase = new TestableObjectDeserializationProxyBase(
                _info,
                _context,
                (instance, info, ctx, typeName) => _createRealObjectAssertions(instance, info, ctx, typeName));

            PrivateInvoke.SetNonPublicField(_objectDeserializationProxyBase, "_deserializationMethodInvoker", _deserializationMethodInvokerMock);
        }
コード例 #7
0
 public void SetInstanceProvider_GetInstance()
 {
     PipelineRegistry.SetInstanceProvider(() => _registry);
     Assert.That(PipelineRegistry.Instance, Is.SameAs(_registry));
 }
コード例 #8
0
 public virtual void TearDown()
 {
     PipelineRegistry.SetDefaultPipeline(_previousDefaultPipeline);
 }
コード例 #9
0
 public virtual void SetUp()
 {
     _previousDefaultPipeline = PipelineRegistry.DefaultPipeline;
     PipelineRegistry.SetDefaultPipeline(Pipeline);
 }