public void AreDeepEqual_SameObjectTypes_DifferentObjects_DeepEqualityComparerAvailable_ReturnsTrue() { // Arrange var service = CreateService(); var objA = new MockStruct(); var objB = new MockStruct(); var mockComparer = new Mock <IDeepEqualityComparer>(); mockComparer.Setup(m => m.CanCompare(It.IsAny <Type>())) .Returns(true); mockComparer.Setup(m => m.AreDeepEqual(It.IsAny <object>(), It.IsAny <object>(), It.IsAny <DeepComparisonOptions>())) .Returns(true); var options = new DeepComparisonOptions() { DeepEqualityComparers = new List <IDeepEqualityComparer>() { mockComparer.Object } }; // Act var result = service.AreDeepEqual(objA, objB, options); // Assert Assert.True(result); }
public void GivenDateTimeOffset_SetTarget_SetsParsedValue() { var targetObject = new MockStruct(); var uut = new NullableDateTimeOffsetSetter(); var mappingDetails = new TagMapLeaf(targetObject.GetType().GetProperty(nameof(targetObject.Tag1)), uut); var messageContext = new FixMessageContext(); uut.SetTarget <MockStruct>("20190104-19:02:04", mappingDetails, messageContext, ref targetObject); Assert.True(targetObject.Tag1.HasValue); }
public void GivenInteger_SetTarget_SetsParsedValue() { var targetObject = new MockStruct(); var uut = new NullableIntegerSetter(); var mappingDetails = new TagMapLeaf(targetObject.GetType().GetProperty(nameof(targetObject.Tag1)), uut); var messageContext = new FixMessageContext(); uut.SetTarget <MockStruct>(1.ToString(), mappingDetails, messageContext, ref targetObject); Assert.Equal(1, targetObject.Tag1.Value); }
public void GivenByte_SetTarget_SetsParsedValue() { var targetObject = new MockStruct(); var uut = new ByteSetter(); var mappingDetails = new TagMapLeaf(targetObject.GetType().GetProperty(nameof(targetObject.Tag1)), uut); var messageContext = new FixMessageContext(); uut.SetTarget <MockStruct>("=", mappingDetails, messageContext, ref targetObject); Assert.Equal(61, targetObject.Tag1); }
public void AreDeepEqual_SameObjectTypes_DifferentObjects_NullComparisonOptions_ThrowsArgumentNullException() { // Arrange var service = CreateService(); var objA = new MockStruct(); var objB = new MockStruct(); // Act/Assert Assert.Throws <ArgumentNullException>(() => service.AreDeepEqual(objA, objB, null)); }
public void GivenDateTimeOffset_SetTarget_SetsParsedValue() { var targetObject = new MockStruct(); var uut = new DateTimeOffsetSetter(); var mappingDetails = new TagMapLeaf(targetObject.GetType().GetProperty(nameof(targetObject.Tag1)), uut); var messageContext = new FixMessageContext(); uut.SetTarget <MockStruct>("20190104-19:02:04", mappingDetails, messageContext, ref targetObject); Assert.Equal(new DateTimeOffset(2019, 1, 4, 19, 2, 4, TimeSpan.Zero), targetObject.Tag1); }
public void GetResourceAsStructTest() { var input = new MockStruct { Id = "1", Value = "Mock" }; var response = ApiResponse.OK().WithResource(input, input.Id).AsItemResponse(); var output = response.GetResourceAs <MockStruct>(); Assert.Equal(input.Id, output.Id); }
public void AreDeepEqual_DifferentObjectTypes_ReturnsFalse() { // Arrange var service = CreateService(); var objA = new object(); var objB = new MockStruct(); // Act var result = service.AreDeepEqual(objA, objB, null); // Assert Assert.False(result); }
public void AreDeepEqual_SameObjectTypes_DifferentObjects_ComparisonOptionsEmptyComparers_ThrowsInvalidOperationException() { // Arrange var service = CreateService(); var objA = new MockStruct(); var objB = new MockStruct(); var options = new DeepComparisonOptions() { DeepEqualityComparers = new List <IDeepEqualityComparer>() }; // Act/Assert Assert.Throws <InvalidOperationException>(() => service.AreDeepEqual(objA, objB, options)); }
public void GetResourceAsStructAfterSerializationTest() { var input = new MockStruct { Id = "1", Value = "Mock" }; var response = ApiResponse.OK().WithResource(input, input.Id).AsItemResponse(); var serialized = JsonConvert.SerializeObject(response); var deserialized = JsonConvert.DeserializeObject <ApiItemResponse>(serialized); var output = deserialized.GetResourceAs <MockStruct>(); Assert.Equal(input.Id, output.Id); }
public void GetResourceAsStructArrayTest() { var input1 = new MockStruct { Id = "1", Value = "Mock" }; var input2 = new MockStruct { Id = "2", Value = "Mock 2" }; var input = new[] { input1, input2 }; var response = ApiResponse.OK().WithResources(input, (item) => item.Id).AsCollectionResponse(); var output = response.GetResourcesAs <MockStruct>(); Assert.Equal(input.Length, output.Count()); }
public void GivenANonNull_ShouldReturnSelectedValue( object objectValue, int intValue, long longValue, DateTime dateTimeValue) { MockStruct?nullableStruct = new MockStruct { ObjectProperty = objectValue, LongProperty = longValue, IntProperty = intValue, DateTimeProperty = dateTimeValue }; nullableStruct.IfNotNull(v => v.ObjectProperty).Should().Be(objectValue); nullableStruct.IfNotNull(v => v.LongProperty).Should().Be(longValue); nullableStruct.IfNotNull(v => v.IntProperty).Should().Be(intValue); nullableStruct.IfNotNull(v => v.DateTimeProperty).Should().Be(dateTimeValue); }
public void GetResourceAsStructArrayAfterSerializationTest() { var input1 = new MockStruct { Id = "1", Value = "Mock" }; var input2 = new MockStruct { Id = "2", Value = "Mock 2" }; var input = new[] { input1, input2 }; var response = ApiResponse.OK().WithResources(input, (item) => item.Id).AsCollectionResponse(); var serialized = JsonConvert.SerializeObject(response); var deserialized = JsonConvert.DeserializeObject <ApiCollectionResponse>(serialized); var output = deserialized.GetResourcesAs <MockStruct>(); Assert.Equal(input.Length, output.Count()); }
public void AreDeepEqual_SameObjectTypes_DifferentObjects_NoDeepEqualityComparersOfTheGivenObjectType_ThrowsInvalidOperationException() { // Arrange var service = CreateService(); var objA = new MockStruct(); var objB = new MockStruct(); var mockComparer = new Mock <IDeepEqualityComparer>(); mockComparer.Setup(m => m.CanCompare(It.IsAny <Type>())) .Returns(false); var options = new DeepComparisonOptions() { DeepEqualityComparers = new List <IDeepEqualityComparer>() { mockComparer.Object } }; // Act/Assert Assert.Throws <InvalidOperationException>(() => service.AreDeepEqual(objA, objB, options)); }
public void AreDeepEqual_BothCircularObjects_DifferentOriginalComparisonObjects_ReturnsFalse() { // Arrange var comparer = CreateComparer(); var testA = new MockStruct() { TestString = "Hi", TestInt = 123, TestLongs = new List <long>() { 6, 9, 7 }, TestClass = new TestClass() { A = "Test", B = 8, SubClass = new TestClass() } }; var testB = new MockStruct() { TestString = "Hi", TestInt = 123, TestLongs = new List <long>() { 6, 9, 7 }, TestClass = new TestClass() { A = "Test", B = 9, SubClass = new TestClass() } }; MockComparerTestSetup.SetupComparer(comparer, (objA, objB, options) => { if (objA == null) { return(objB == null); } switch (objA) { case string str: return(str.Equals((string)objB, StringComparison.Ordinal)); case int i: return(i == (int)objB); case List <int> list: return(list.SequenceEqual((List <int>)objB)); case TestClass testClass: var b = (TestClass)objB; return(comparer.AreDeepEqual(testClass, b, options)); case MockStruct mockStruct: var c = (MockStruct)objB; return(comparer.AreDeepEqual(mockStruct, c, options)); default: return(false); } }, out var mockObjectCache, out var mockCircularRefMonitor); mockCircularRefMonitor.Setup(m => m.AddReference(It.Is <MockStruct>(test => Equals(testA, test)), It.IsAny <object>())) .Returns(true); mockCircularRefMonitor.Setup(m => m.AddReference(It.Is <MockStruct>(test => Equals(testB, test)), It.IsAny <object>())) .Returns(true); var returnValue = new object(); mockObjectCache.Setup(m => m.TryGet(It.IsAny <object>(), out returnValue)) .Returns(true); // Act var result = comparer.AreDeepEqual(testA, testB, new DeepComparisonOptions()); // Assert Assert.False(result); }
public void AreDeepEqual_StructsWithDifferentPropertyValues_ReturnsFalse() { // Arrange var comparer = CreateComparer(); MockComparerTestSetup.SetupComparer(comparer, (objA, objB, options) => { if (objA == null) { return(objB == null); } switch (objA) { case string str: return(str.Equals((string)objB, StringComparison.Ordinal)); case int i: return(i == (int)objB); case List <int> list: return(list.SequenceEqual((List <int>)objB)); case TestClass testClass: var b = (TestClass)objB; return(comparer.AreDeepEqual(testClass, b, options)); case MockStruct mockStruct: var c = (MockStruct)objB; return(comparer.AreDeepEqual(mockStruct, c, options)); default: return(false); } }); var testA = new MockStruct() { TestString = "Hi", TestInt = 123, TestLongs = new List <long>() { 6, 9, 7 }, TestClass = new TestClass() { A = "Test", B = 8, SubClass = new TestClass() } }; var testB = new MockStruct() { TestString = "Hi", TestInt = 123, TestLongs = new List <long>() { 6, 9, 7 }, TestClass = new TestClass() { A = "Test", B = 9, SubClass = new TestClass() } }; // Act var result = comparer.AreDeepEqual(testA, testB, new DeepComparisonOptions()); // Assert Assert.False(result); }