示例#1
0
        public void Equals_False_ComplexPoco_NUllableDateTime_Lhs()
        {
            // Arrange
            var componentUnderTest = new FieldValueEqualityComparer();

            FieldValueEqualityComparer.SetAssembliesWithTypesToUseValueSemanticsOn(new[] { typeof(SimplePoco).Assembly });

            // Act
            var actual = componentUnderTest.Equals(new ComplexPoco
            {
            }, new ComplexPoco
            {
                MyNullableDateTime = new DateTime()
            });

            // Assert
            Assert.AreEqual(false, actual);
        }
示例#2
0
        public void AreEqual_True_ComplexPoco()
        {
            // Arrange
            var componentUnderTest = new FieldValueEqualityComparer();

            FieldValueEqualityComparer.SetAssembliesWithTypesToUseValueSemanticsOn(new[] { typeof(SimplePoco).Assembly });
            var simplePoco = new SimplePoco {
                MyInt = 23
            };
            var lhs = new ComplexPoco
            {
                MyInt                = 1,
                MyStrings            = new[] { "1", "2" },
                SimplePocoArray      = new[] { new SimplePoco(), simplePoco },
                SimplePocoDictionary = new Dictionary <string, SimplePoco>
                {
                    { "1", new SimplePoco {
                          MyString = "test"
                      } },
                    { "2", simplePoco }
                },
                Bytes = Encoding.Default.GetBytes("test")
            };
            var rhs = new ComplexPoco
            {
                MyInt                = 1,
                MyStrings            = new[] { "1", "2" },
                SimplePocoArray      = new[] { new SimplePoco(), simplePoco },
                SimplePocoDictionary = new Dictionary <string, SimplePoco>
                {
                    { "1", new SimplePoco {
                          MyString = "test"
                      } },
                    { "2", simplePoco }
                },
                Bytes = Encoding.Default.GetBytes("test")
            };

            // Act
            var actual = FieldValueEqualityComparer.AreEqual(lhs, rhs);

            // Assert
            Assert.AreEqual(true, actual);
        }
示例#3
0
        public void Equals_False_ComplexPoco_InDictionary_RhsNull()
        {
            // Arrange
            var componentUnderTest = new FieldValueEqualityComparer();

            FieldValueEqualityComparer.SetAssembliesWithTypesToUseValueSemanticsOn(new[] { typeof(SimplePoco).Assembly });

            var lhs = new Dictionary <string, ComplexPoco>
            {
                { "a", new ComplexPoco() },
                { "b", new ComplexPoco() }
            };

            // Act
            var actual = componentUnderTest.Equals(lhs, null);

            // Assert
            Assert.AreEqual(false, actual);
        }
示例#4
0
        public void Equals_False_ComplexPoco_ArraysNotEqual_DifferentSizes()
        {
            // Arrange
            var componentUnderTest = new FieldValueEqualityComparer();

            FieldValueEqualityComparer.SetAssembliesWithTypesToUseValueSemanticsOn(new[] { typeof(SimplePoco).Assembly });

            // Act
            var actual = componentUnderTest.Equals(new ComplexPoco
            {
                MyStrings = new[] { "1", "2" }
            }, new ComplexPoco
            {
                MyStrings = new[] { "1" }
            });

            // Assert
            Assert.AreEqual(false, actual);
        }
示例#5
0
        public void Equals_True_ComplexPoco_ArraysEqual_BothNull()
        {
            // Arrange
            var componentUnderTest = new FieldValueEqualityComparer();

            FieldValueEqualityComparer.SetAssembliesWithTypesToUseValueSemanticsOn(new[] { typeof(SimplePoco).Assembly });

            // Act
            var actual = componentUnderTest.Equals(new ComplexPoco
            {
                MyStrings = null
            }, new ComplexPoco
            {
                MyStrings = null
            });

            // Assert
            Assert.AreEqual(true, actual);
        }
示例#6
0
        public void Equals_False_ComplexPoco_DictionaryNotEqual_NullDictionary_Rhs()
        {
            // Arrange
            var componentUnderTest = new FieldValueEqualityComparer();

            FieldValueEqualityComparer.SetAssembliesWithTypesToUseValueSemanticsOn(new[] { typeof(SimplePoco).Assembly });

            // Act
            var actual = componentUnderTest.Equals(new ComplexPoco
            {
                SimplePocoDictionary = new Dictionary <string, SimplePoco>
                {
                    { "2", new SimplePoco() }
                }
            }, new ComplexPoco
            {
                SimplePocoDictionary = null
            });

            // Assert
            Assert.AreEqual(false, actual);
        }
示例#7
0
        public void Equals_True_WithEqualityComparer_AtTopLevel()
        {
            // Arrange
            var componentUnderTest = new FieldValueEqualityComparer();

            FieldValueEqualityComparer.SetAssembliesWithTypesToUseValueSemanticsOn(new[] { typeof(SimplePoco).Assembly });

            var lhs = new SimplePoco
            {
                MyString = "1"
            };
            var rhs = new InheritedSimplePoco
            {
                MyString = "xxx"
            };

            // Act
            FieldValueEqualityComparer.AddFieldValueEqualityComparer(new SimplePocoEqualityComparer());
            var actual = componentUnderTest.Equals(lhs, rhs);

            // Assert
            Assert.AreEqual(true, actual);
        }
示例#8
0
        public void Equals_False_List_SimpleType()
        {
            // Arrange
            var componentUnderTest = new FieldValueEqualityComparer();

            FieldValueEqualityComparer.SetAssembliesWithTypesToUseValueSemanticsOn(new[] { typeof(SimplePoco).Assembly });

            var list1 = new[]
            {
                "a", "b", "c"
            };

            var list2 = new[]
            {
                "a", "a", "a"
            };

            // Act
            var actual = componentUnderTest.Equals(list1, list2);

            // Assert
            Assert.AreEqual(false, actual);
        }
示例#9
0
        public void Equals_True_ComplexPoco_InList()
        {
            // Arrange
            var componentUnderTest = new FieldValueEqualityComparer();

            FieldValueEqualityComparer.SetAssembliesWithTypesToUseValueSemanticsOn(new[] { typeof(SimplePoco).Assembly });

            var lhs = new List <ComplexPoco>
            {
                new ComplexPoco(),
                new ComplexPoco()
            };
            var rhs = new List <ComplexPoco>
            {
                new ComplexPoco(),
                new ComplexPoco()
            };

            // Act
            var actual = componentUnderTest.Equals(lhs, rhs);

            // Assert
            Assert.AreEqual(true, actual);
        }