public void ToMessage()
        {
            var serializers = new Mock <IStoreObjectSerializers>();
            {
                serializers.Setup(s => s.HasSerializerFor(It.IsAny <Type>()))
                .Callback <Type>(t => Assert.IsTrue(typeof(int).Equals(t)))
                .Returns(true);
                serializers.Setup(s => s.SerializerFor(It.IsAny <Type>()))
                .Returns(new NonTransformingObjectSerializer());
            }

            var translator = new CommandInvocationConverter(serializers.Object);

            var id   = CommandId.Create(typeof(int).GetMethod("CompareTo", new[] { typeof(object) }));
            var data = new CommandInvocationData
            {
                Id             = new MessageId(),
                InResponseTo   = new MessageId(),
                Sender         = new EndpointId("a"),
                CommandId      = CommandIdExtensions.Serialize(id),
                ParameterTypes = new[]
                {
                    new SerializedType
                    {
                        FullName     = typeof(int).FullName,
                        AssemblyName = typeof(int).Assembly.GetName().Name
                    },
                },
                ParameterNames = new[]
                {
                    "other",
                },
                ParameterValues = new object[]
                {
                    1,
                }
            };
            var msg = translator.ToMessage(data);

            Assert.IsInstanceOf(typeof(CommandInvokedMessage), msg);
            Assert.AreSame(data.Id, msg.Id);
            Assert.AreSame(data.Sender, msg.Sender);
            Assert.AreEqual(id, ((CommandInvokedMessage)msg).Invocation.Command);
            Assert.AreEqual(data.ParameterTypes.Length, ((CommandInvokedMessage)msg).Invocation.Parameters.Length);
            Assert.AreEqual(typeof(int), ((CommandInvokedMessage)msg).Invocation.Parameters[0].Parameter.Type);
            Assert.AreEqual("other", ((CommandInvokedMessage)msg).Invocation.Parameters[0].Parameter.Name);
            Assert.AreEqual(1, ((CommandInvokedMessage)msg).Invocation.Parameters[0].Value);
        }
        public void ToMessageWithNonMatchingDataType()
        {
            var serializers = new Mock <IStoreObjectSerializers>();
            var translator  = new CommandInvocationConverter(serializers.Object);

            var data = new SuccessData
            {
                Id           = new MessageId(),
                InResponseTo = new MessageId(),
                Sender       = new EndpointId("a"),
            };
            var msg = translator.ToMessage(data);

            Assert.IsInstanceOf(typeof(UnknownMessageTypeMessage), msg);
            Assert.AreSame(data.Id, msg.Id);
            Assert.AreSame(data.Sender, msg.Sender);
            Assert.AreSame(data.InResponseTo, msg.InResponseTo);
        }