public void Convert_ImagemapMessage_InstanceIsPreserved()
        {
            ImagemapMessage message = new ImagemapMessage()
            {
                BaseUrl         = new Uri("https://foo.bar"),
                BaseSize        = new ImagemapSize(1040, 1040),
                AlternativeText = "Alternative",
                Actions         = new ImagemapAction[]
                {
                    new ImagemapMessageAction("Text", 1, 2, 3, 4),
                    new ImagemapUriAction("https://url.foo", 1, 2, 3, 4),
                }
            };

            ISendMessage[] messages = MessageConverter.Convert(new ISendMessage[] { message });

            Assert.AreEqual(1, messages.Length);

            IImagemapMessage imagemapMessage = messages[0] as IImagemapMessage;

            Assert.AreEqual(message, imagemapMessage);
            Assert.AreEqual(message.BaseSize, imagemapMessage.BaseSize);

            IImagemapAction[] actions = imagemapMessage.Actions.ToArray();
            Assert.AreEqual(message.Actions.First(), actions[0]);

            ImagemapAction action = message.Actions.Skip(1).First();

            Assert.AreEqual(action, actions[1]);
            Assert.AreEqual(action.Area, actions[1].Area);
        }
            public void ShouldThrowExceptionWhenActionIsInvalid()
            {
                var action = new InvalidAction();

                ExceptionAssert.Throws <NotSupportedException>("Invalid action type.", () =>
                {
                    ImagemapAction.Convert(action);
                });
            }