public void GetExtenderProviders_InvokeWithoutParent_ReturnsEmpty()
        {
            var provider = new SubTypeDescriptionProvider();

            Assert.Empty(provider.GetExtenderProviders(new object()));

            // Call again.
            Assert.Empty(provider.GetExtenderProviders(new object()));
        }
        public void GetExtenderProviders_InvokeWithParent_ReturnsExpected(object instance, IExtenderProvider[] result)
        {
            var mockParentProvider = new Mock <TypeDescriptionProvider>(MockBehavior.Strict);

            mockParentProvider
            .Protected()
            .Setup <IExtenderProvider[]>("GetExtenderProviders", instance ?? ItExpr.IsNull <object>())
            .Returns(result)
            .Verifiable();
            var provider = new SubTypeDescriptionProvider(mockParentProvider.Object);

            Assert.Same(result, provider.GetExtenderProviders(instance));
            mockParentProvider.Protected().Verify("GetExtenderProviders", Times.Once(), instance ?? ItExpr.IsNull <object>());

            // Call again.
            Assert.Same(result, provider.GetExtenderProviders(instance));
            mockParentProvider.Protected().Verify("GetExtenderProviders", Times.Exactly(2), instance ?? ItExpr.IsNull <object>());
        }
        public void GetExtenderProviders_NullInstance_ThrowsArgumentNullException()
        {
            var provider = new SubTypeDescriptionProvider();

            AssertExtensions.Throws <ArgumentNullException>("instance", () => provider.GetExtenderProviders(null));
        }