public void DefaultConversionCallback_ExtensionNotIHaveDefaultConversionCallback_ShouldUseDefault()
        {
            var extension = new Mock <IExtension>();

            var testee = new HaveDefaultConversionCallback(extension.Object);

            testee.DefaultConversionCallback.Should().BeOfType <DefaultConversionCallback>();
        }
        public void DefaultConversionCallback_ExtensionIsIHaveDefaultConversionCallback_ShouldAcquireDefaultCallbackFromExtension()
        {
            var extension = new Mock <IExtension>();
            var consumer  = extension.As <IHaveDefaultConversionCallback>();
            var expected  = Mock.Of <IConversionCallback>();

            consumer.Setup(n => n.DefaultConversionCallback).Returns(expected);

            var testee = new HaveDefaultConversionCallback(extension.Object);

            testee.DefaultConversionCallback.Should().Be(expected);
        }
        public void DefaultConversionCallback_ExtensionIsIHaveDefaultConversionCallback_ShouldAcquireDefaultCallbackFromExtension()
        {
            var extension = A.Fake <IExtension>(builder => builder.Implements(typeof(IHaveDefaultConversionCallback)));
            var consumer  = extension as IHaveDefaultConversionCallback;
            var expected  = A.Fake <IConversionCallback>();

            A.CallTo(() => consumer.DefaultConversionCallback).Returns(expected);

            var testee = new HaveDefaultConversionCallback(extension);

            testee.DefaultConversionCallback.Should().Be(expected);
        }