public void SutIsMethodQuery()
        {
            // Arrange
            // Act
            var sut = new NSubstituteMethodQuery();

            // Assert
            Assert.IsAssignableFrom <IMethodQuery>(sut);
        }
        public void SelectMethodReturnsMethodForInterface()
        {
            // Arrange
            var type = typeof(IInterface);
            var sut  = new NSubstituteMethodQuery();
            // Act
            var result = sut.SelectMethods(type);

            // Assert
            Assert.NotEmpty(result);
        }
        public void SelectMethodReturnsMethodWithoutParametersForInterface()
        {
            // Arrange
            var type = typeof(IInterface);
            var sut  = new NSubstituteMethodQuery();
            // Act
            var result = sut.SelectMethods(type);

            // Assert
            Assert.Empty(result.First().Parameters);
        }
        public void SelectMethodReturnsMethodWithoutParametersForDelegate()
        {
            // Arrange
            var type = typeof(Func <int>);
            var sut  = new NSubstituteMethodQuery();
            // Act
            var result = sut.SelectMethods(type);

            // Assert
            Assert.Empty(result.Single().Parameters);
        }
        public void SelectMethodsReturnsCorrectNumberOfConstructorsForTypesWithConstructors(Type type)
        {
            // Arrange
            var expectedCount = type.GetConstructors(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).Length;
            var sut           = new NSubstituteMethodQuery();
            // Act
            var result = sut.SelectMethods(type);

            // Assert
            Assert.Equal(expectedCount, result.Count());
        }
        public void SutIsMethodQuery()
        {
            // Fixture setup
            // Exercise system
            var sut = new NSubstituteMethodQuery();

            // Verify outcome
            Assert.IsAssignableFrom <IMethodQuery>(sut);

            // Teardown
        }
        public void SelectMethodReturnsMethodWithoutParametersForInterface()
        {
            // Fixture setup
            var type = typeof(IInterface);
            var sut  = new NSubstituteMethodQuery();

            // Exercise system
            var result = sut.SelectMethods(type);

            // Verify outcome
            Assert.Empty(result.First().Parameters);
        }
        public void SelectMethodReturnsMethodForInterface()
        {
            // Fixture setup
            var type = typeof(IInterface);
            var sut = new NSubstituteMethodQuery();

            // Exercise system
            var result = sut.SelectMethods(type);

            // Verify outcome
            Assert.NotEmpty(result);
        }
        public void MethodsDefineCorrectParameters(Type type)
        {
            // Arrange
            var typeCtorArgs = from ci in type.GetConstructors(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic) select ci.GetParameters();

            var sut = new NSubstituteMethodQuery();
            // Act
            var result = sut.SelectMethods(type);
            // Assert
            var actualArgs = from ci in result select ci.Parameters;

            Assert.True(typeCtorArgs.All(expectedParams => actualArgs.Any(expectedParams.SequenceEqual)));
        }
        public void SelectMethodsReturnsCorrectNumberOfConstructorsForTypesWithConstructors(Type type)
        {
            // Fixture setup
            var expectedCount = type.GetConstructors(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).Length;
            var sut           = new NSubstituteMethodQuery();

            // Exercise system
            var result = sut.SelectMethods(type);

            // Verify outcome
            Assert.Equal(expectedCount, result.Count());

            // Teardown
        }
        public void SelectMethodsReturnsCorrectNumberOfConstructorsForTypesWithConstructors(Type type)
        {
            // Fixture setup
            var expectedCount = type.GetConstructors(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).Length;
            var sut = new NSubstituteMethodQuery();

            // Exercise system
            var result = sut.SelectMethods(type);

            // Verify outcome
            Assert.Equal(expectedCount, result.Count());

            // Teardown
        }
        public void MethodsAreReturnedInCorrectOrder(Type type)
        {
            // Arrange
            var typeCtorArgCounts = from ci in type.GetConstructors(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
                                    let paramCount = ci.GetParameters().Length
                                                     orderby paramCount ascending
                                                     select paramCount;
            var sut = new NSubstituteMethodQuery();
            // Act
            var result = sut.SelectMethods(type);
            // Assert
            var actualArgCounts = from ci in result select ci.Parameters.Count();

            Assert.True(typeCtorArgCounts.SequenceEqual(actualArgCounts));
        }
        public void MethodsDefineCorrectParameters(Type type)
        {
            // Fixture setup
            var typeCtorArgs = from ci in type.GetConstructors(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic) select ci.GetParameters();
            var sut = new NSubstituteMethodQuery();

            // Exercise system
            var result = sut.SelectMethods(type);

            // Verify outcome
            var actualArgs = from ci in result select ci.Parameters;
            Assert.True(typeCtorArgs.All(expectedParams => actualArgs.Any(expectedParams.SequenceEqual)));

            // Teardown
        }
        public void MethodsDefineCorrectParameters(Type type)
        {
            // Fixture setup
            var typeCtorArgs = from ci in type.GetConstructors(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic) select ci.GetParameters();

            var sut = new NSubstituteMethodQuery();

            // Exercise system
            var result = sut.SelectMethods(type);

            // Verify outcome
            var actualArgs = from ci in result select ci.Parameters;

            Assert.True(typeCtorArgs.All(expectedParams => actualArgs.Any(expectedParams.SequenceEqual)));

            // Teardown
        }
        public void MethodsAreReturnedInCorrectOrder(Type type)
        {
            // Fixture setup
            var typeCtorArgCounts = from ci in type.GetConstructors(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
                                    let paramCount = ci.GetParameters().Length
                                    orderby paramCount ascending
                                    select paramCount;
            var sut = new NSubstituteMethodQuery();

            // Exercise system
            var result = sut.SelectMethods(type);

            // Verify outcome
            var actualArgCounts = from ci in result select ci.Parameters.Count();
            Assert.True(typeCtorArgCounts.SequenceEqual(actualArgCounts));

            // Teardown
        }
        public void SutIsMethodQuery()
        {
            // Fixture setup
            // Exercise system
            var sut = new NSubstituteMethodQuery();

            // Verify outcome
            Assert.IsAssignableFrom<IMethodQuery>(sut);

            // Teardown
        }