public void BuilderIsCorrect()
        {
            var builder = new Fixture();
            var sut = new ParameterToPropertyComparer(builder);

            var actual = sut.Builder;

            Assert.Same(builder, actual);
        }
        public void EqualsParameterToNonPropertyReturnsFalse()
        {
            var sut = new ParameterToPropertyComparer(new Fixture());
            var parameterInfoElement = Constructors.Select(() => new ClassWithMembers(0))
                .GetParameters().First().ToElement();
            var nonPropertyInfoElement = GetType().ToElement();

            var actual = sut.Equals(parameterInfoElement, nonPropertyInfoElement);

            Assert.False(actual, "Not Equals.");
        }
        public void EqualsParameterToPrivateGetPropertyReturnsTrueWhenTheyHaveEqualEnumerable()
        {
            var parameterInfoElement = Constructors.Select(() => new TypeForPropertyEqualValue(new int[0]))
                .GetParameters().First().ToElement();
            var sut = new ParameterToPropertyComparer(new Fixture());
            var propertyInfoElement = new Properties<TypeForPropertyEqualValue>()
                .Select(x => x.Values).ToElement();

            var actual = sut.Equals(parameterInfoElement, propertyInfoElement);

            Assert.True(actual, "Equals.");
        }
        public void EqualsParameterToIndexerAlwaysReturnsFalse()
        {
            var sut = new ParameterToPropertyComparer(new Fixture());
            var parameterInfoElement = Constructors.Select(() => new TypeForPropertyEqualValue(0))
                .GetParameters().Single().ToElement();
            var propetyInfoElement = typeof(TypeForPropertyEqualValue)
                .GetProperty("Item").ToElement();

            var actual = sut.Equals(parameterInfoElement, propetyInfoElement);

            Assert.False(actual, "Not Equals.");
        }
        public void EqualsNonParameterToPropertyReturnsFalse()
        {
            var sut = new ParameterToPropertyComparer(new Fixture());
            var nonParameterInfoElement = GetType().ToElement();
            var propertyInfoElement = new Properties<ClassWithMembers>()
                .Select(x => x.PublicProperty)
                .ToElement();

            var actual = sut.Equals(nonParameterInfoElement, propertyInfoElement);

            Assert.False(actual, "Not Equals.");
        }
        public void EqualsParameterToPropertyAlwaysReturnsFalseWhenConstructorThrows()
        {
            var parameterInfoElement = Constructors
                .Select(() => new TypeForPropertyEqualValue(default(object)))
                .GetParameters().Single().ToElement();
            var sut = new ParameterToPropertyComparer(new Fixture());
            var propetyInfoElement = new Properties<TypeForPropertyEqualValue>()
                .Select(x => x.Value).ToElement();

            var actual = sut.Equals(parameterInfoElement, propetyInfoElement);

            Assert.False(actual);
        }
        public void EqualsParameterToPrivateGetPropertyReturnsTrueWhenTheyHaveEqualValue()
        {
            var parameterInfoElement = Constructors.Select(() => new TypeForPropertyEqualValue(0))
                .GetParameters().First().ToElement();
            var sut = new ParameterToPropertyComparer(new Fixture());
            var propetyInfoElement = typeof(TypeForPropertyEqualValue)
                .GetProperty("PrivateGetProperty").ToElement();

            var actual = sut.Equals(parameterInfoElement, propetyInfoElement);

            Assert.True(actual, "Equals.");
        }
 public void SutIsEqualityComparer()
 {
     var sut = new ParameterToPropertyComparer(new Fixture());
     Assert.IsAssignableFrom<IEqualityComparer<IReflectionElement>>(sut);
 }
 public void GetHashCodeReturnsZero()
 {
     var sut = new ParameterToPropertyComparer(new Fixture());
     var actual = sut.GetHashCode(null);
     Assert.Equal(0, actual);
 }
        public void EqualsParameterToWritableOnlyPropertyReturnsFalse()
        {
            var parameterInfoElement = Constructors.Select(() => new TypeForPropertyEqualValue(0))
                .GetParameters().First().ToElement();
            var sut = new ParameterToPropertyComparer(new Fixture());
            var propetyInfoElement = typeof(TypeForPropertyEqualValue)
                .GetProperty("WritableOnlyProperty").ToElement();

            var actual = sut.Equals(parameterInfoElement, propetyInfoElement);

            Assert.False(actual, "Not Equals.");
        }
        public void EqualsParameterToPropertyReturnsFalseWhenTheyRepresentDifferentReflectedTypes()
        {
            var sut = new ParameterToPropertyComparer(new Fixture());
            var parameterInfoElement = Constructors.Select(() => new TypeForPropertyEqualValue(0))
                .GetParameters().First().ToElement();
            var propetyInfoElement = new Properties<Version>()
                .Select(x => x.Major).ToElement();

            var actual = sut.Equals(parameterInfoElement, propetyInfoElement);

            Assert.False(actual, "Not Equals.");
        }
        public void EqualsParameterToPropertyReturnsFalseWhenParameterIsFromNonConstructor()
        {
            var sut = new ParameterToPropertyComparer(new Fixture());
            var parameterInfoElement = new Methods<TypeForPropertyEqualValue>()
                .Select(x => x.Mehtod(null))
                .GetParameters().First().ToElement();
            var propertyInfoElement = new Properties<TypeForPropertyEqualValue>()
                .Select(x => x.Value).ToElement();

            var actual = sut.Equals(parameterInfoElement, propertyInfoElement);

            Assert.False(actual, "Not Equals.");
        }