public void Equals_True_SimplePoco_ValuesSet_SqlServerDateTimeEqualityComparer() { // Arrange var componentUnderTest = new FieldValueEqualityComparer(); FieldValueEqualityComparer.SetAssembliesWithTypesToUseValueSemanticsOn(new[] { typeof(SimplePoco).Assembly }); FieldValueEqualityComparer.UseDateTimeEqualityComparer(new SqlServerDateTimeEqualityComparer()); // Act var actual = componentUnderTest.Equals(new SimplePoco { MyInt = 1, MyString = "test", MyIgnoredString = "xxx", MyDateTime = new DateTime(2000, 1, 1, 0, 0, 1).AddMilliseconds(999) }, new SimplePoco { MyInt = 1, MyString = "test", MyIgnoredString = "xxx", MyDateTime = new DateTime(2000, 1, 1, 0, 0, 2).AddMilliseconds(998) }); // Assert Assert.AreEqual(true, actual); }
public void Equals_True_ComplexPoco_DictionaryNotEqual() { // Arrange var componentUnderTest = new FieldValueEqualityComparer(); FieldValueEqualityComparer.SetAssembliesWithTypesToUseValueSemanticsOn(new[] { typeof(SimplePoco).Assembly }); // Act var actual = componentUnderTest.Equals(new ComplexPoco { SimplePocoDictionary = new Dictionary <string, SimplePoco> { { "1", new SimplePoco() } } }, new ComplexPoco { SimplePocoDictionary = new Dictionary <string, SimplePoco> { { "2", new SimplePoco() } } }); // Assert Assert.AreEqual(false, actual); }
public void Equals_False_SimplePoco_ValuesSet_Dictionaries() { // Arrange var componentUnderTest = new FieldValueEqualityComparer(); FieldValueEqualityComparer.SetAssembliesWithTypesToUseValueSemanticsOn(new[] { typeof(SimplePoco).Assembly }); var list1 = new Dictionary <string, SimplePoco> { { "1", new SimplePoco { MyInt = 1, MyString = "test", MyIgnoredString = "some value", MyDateTime = new DateTime(2000, 1, 1) } } }; var list2 = new Dictionary <string, SimplePoco> { { "1", new SimplePoco { MyInt = 2, MyString = "test", MyIgnoredString = "some value", MyDateTime = new DateTime(2000, 1, 1) } } }; // Act var actual = componentUnderTest.Equals(list1, list2); // Assert Assert.AreEqual(false, actual); }
public void Equals_True_WithEqualityComparer_InComplexType() { // Arrange var componentUnderTest = new FieldValueEqualityComparer(); FieldValueEqualityComparer.SetAssembliesWithTypesToUseValueSemanticsOn(new[] { typeof(SimplePoco).Assembly }); var lhs = new ComplexPoco { SimplePoco = new SimplePoco { MyString = "1" } }; var rhs = new ComplexPoco { SimplePoco = new SimplePoco { MyString = "xxx" } }; // Act FieldValueEqualityComparer.AddFieldValueEqualityComparer(new SimplePocoEqualityComparer()); var actual = componentUnderTest.Equals(lhs, rhs); // Assert Assert.AreEqual(true, actual); }
public void Equals_True_SimplePoco_ValuesSet_Use_NoValueCompareAttribute() { // Arrange var componentUnderTest = new FieldValueEqualityComparer(); FieldValueEqualityComparer.SetAssembliesWithTypesToUseValueSemanticsOn(new[] { typeof(SimplePoco).Assembly }); // Act var actual = componentUnderTest.Equals(new SimplePoco { MyInt = 1, MyString = "test", MyIgnoredString = "some value", MyDateTime = new DateTime(2000, 1, 1) }, new SimplePoco { MyInt = 1, MyString = "test", MyIgnoredString = "some different value", MyDateTime = new DateTime(2000, 1, 1) }); // Assert Assert.AreEqual(true, actual); }
public void Equals_False_GenericType_ComplexPoco() { // Arrange var componentUnderTest = new FieldValueEqualityComparer(); FieldValueEqualityComparer.SetAssembliesWithTypesToUseValueSemanticsOn(new[] { typeof(SimplePoco).Assembly }); // Act var actual = componentUnderTest.Equals( new GenericType <ComplexPoco> { Instance = new ComplexPoco { MyStrings = new[] { "1", "2" } } }, new GenericType <ComplexPoco> { Instance = new ComplexPoco { MyStrings = new[] { "1", "2" } } }); // Assert Assert.AreEqual(true, actual); }
public void Equals_True_CircularReference_DoubleNavigation() { // Arrange var componentUnderTest = new FieldValueEqualityComparer(); FieldValueEqualityComparer.SetAssembliesWithTypesToUseValueSemanticsOn(new[] { typeof(SimplePoco).Assembly }); var parent1 = new CircularReference(); var child1 = new CircularReference(); var other1 = new CircularReference(); parent1.Child = child1; child1.Parent = parent1; child1.OtheReference = other1; other1.Child = parent1; var parent2 = new CircularReference(); var child2 = new CircularReference(); var other2 = new CircularReference(); parent2.Child = child2; child2.Parent = parent2; child2.OtheReference = other2; other2.Child = parent2; // Act var actual = componentUnderTest.Equals(parent1, parent2); // Assert Assert.AreEqual(true, actual); }
public void Equals_False_CircularReference() { // Arrange var componentUnderTest = new FieldValueEqualityComparer(); FieldValueEqualityComparer.SetAssembliesWithTypesToUseValueSemanticsOn(new[] { typeof(SimplePoco).Assembly }); var parent1 = new CircularReference(); var child1 = new CircularReference(); parent1.Child = child1; child1.Parent = parent1; child1.MyString = "test"; var parent2 = new CircularReference(); var child2 = new CircularReference(); parent2.Child = child2; child2.Parent = parent2; // Act var actual = componentUnderTest.Equals(parent1, parent2); // Assert Assert.AreEqual(false, actual); }
public void Equals_False_ComplexPoco_InList_ValuesDifferent() { // Arrange var componentUnderTest = new FieldValueEqualityComparer(); FieldValueEqualityComparer.SetAssembliesWithTypesToUseValueSemanticsOn(new[] { typeof(SimplePoco).Assembly }); var lhs = new List <ComplexPoco> { new ComplexPoco(), new ComplexPoco { MyInt = 1 } }; var rhs = new List <ComplexPoco> { new ComplexPoco(), new ComplexPoco { MyInt = 2 } }; // Act var actual = componentUnderTest.Equals(lhs, rhs); // Assert Assert.AreEqual(false, actual); }
public void Equals_False_SimplePoco_ValuesSet() { // Arrange var componentUnderTest = new FieldValueEqualityComparer(); FieldValueEqualityComparer.SetAssembliesWithTypesToUseValueSemanticsOn(new[] { typeof(SimplePoco).Assembly }); // Act var actual = componentUnderTest.Equals(new SimplePoco { MyInt = 1, MyString = "test", MyIgnoredString = "xxx", MyDateTime = new DateTime(2000, 1, 1) }, new SimplePoco { MyInt = 1, MyString = "test other", MyIgnoredString = "xxx", MyDateTime = new DateTime(2000, 1, 1) }); // Assert Assert.AreEqual(false, actual); }
public void Equals_True_SimplePoco() { // Arrange var componentUnderTest = new FieldValueEqualityComparer(); FieldValueEqualityComparer.SetAssembliesWithTypesToUseValueSemanticsOn(new[] { typeof(SimplePoco).Assembly }); // Act var actual = componentUnderTest.Equals(new SimplePoco(), new SimplePoco()); // Assert Assert.AreEqual(true, actual); }
public void Equals_False_SimplePoco_NotSetTheAssembly() { // Arrange var componentUnderTest = new FieldValueEqualityComparer(); FieldValueEqualityComparer.SetAssembliesWithTypesToUseValueSemanticsOn(new Assembly[] { }); // Act var actual = componentUnderTest.Equals(new SimplePoco(), new SimplePoco()); // Assert Assert.AreEqual(false, actual); }
public void Equals_True_List_SingleLevel() { // Arrange var componentUnderTest = new FieldValueEqualityComparer(); FieldValueEqualityComparer.SetAssembliesWithTypesToUseValueSemanticsOn(new[] { typeof(SimplePoco).Assembly }); var list1 = new[] { new SimplePoco { MyInt = 1, MyString = "test", MyIgnoredString = "xxx", MyDateTime = new DateTime(2000, 1, 1) }, new SimplePoco { MyInt = 1, MyString = "test", MyIgnoredString = "xxx", MyDateTime = new DateTime(2000, 1, 1) } }; var list2 = new[] { new SimplePoco { MyInt = 1, MyString = "test", MyIgnoredString = "xxx", MyDateTime = new DateTime(2000, 1, 1) }, new SimplePoco { MyInt = 1, MyString = "test", MyIgnoredString = "xxx", MyDateTime = new DateTime(2000, 1, 1) } }; // Act var actual = componentUnderTest.Equals(list1, list2); // Assert Assert.AreEqual(true, actual); }
public void Equals_False_WithNoTypeComparer() { // Arrange var componentUnderTest = new FieldValueEqualityComparer(); FieldValueEqualityComparer.SetAssembliesWithTypesToUseValueSemanticsOn(new[] { typeof(SimplePoco).Assembly }); var lhs = new SimplePoco(); var rhs = new InheritedSimplePoco(); // Act var actual = componentUnderTest.Equals(lhs, rhs); // Assert Assert.AreEqual(false, actual); }
public void Equals_False_ComplexPoco_NUllableDateTime_Rhs() { // Arrange var componentUnderTest = new FieldValueEqualityComparer(); FieldValueEqualityComparer.SetAssembliesWithTypesToUseValueSemanticsOn(new[] { typeof(SimplePoco).Assembly }); // Act var actual = componentUnderTest.Equals(new ComplexPoco { MyNullableDateTime = new DateTime() }, new ComplexPoco { }); // Assert Assert.AreEqual(false, actual); }
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); }
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); }
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); }
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); }
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); }