public void AutoMerge_NullSourceValueSucceeds() { TestObject previousObj = BuildObjectStructure(); TestObject currentObj = BuildObjectStructure(); currentObj.TestReference = null; AutoMerge.Merge(ref previousObj, currentObj); Assert.True(previousObj.TestReference != null); }
public void AutoMerge_CollectionMergesSuccessfully() { TestObject previousObj = BuildObjectStructure(); TestObject currentObj = BuildObjectStructure(); previousObj.TestReference.TestCollectionOfValues = new List <int>(); AutoMerge.Merge(ref previousObj, currentObj); Assert.True( Enumerable.SequenceEqual(previousObj.TestReference.TestCollectionOfValues, currentObj.TestReference.TestCollectionOfValues), "Collections are not equal." ); }
public void AutoMerge_ChangingSourceDoesNotChangeDestinationAfterMerge() { TestObject previousObj = BuildObjectStructure(); TestObject currentObj = BuildObjectStructure(); previousObj.TestValue = 100; AutoMerge.Merge(ref currentObj, previousObj); Assert.True(currentObj.TestValue == previousObj.TestValue); previousObj.TestValue = 500; Assert.True(currentObj.TestValue != previousObj.TestValue, "TestValue is still the same when they should be different."); }
public void AutoMerge_NullDestinationValueSucceeds() { TestObject previousObj = BuildObjectStructure(); TestObject currentObj = BuildObjectStructure(); previousObj.TestReference = null; AutoMerge.Merge(ref previousObj, currentObj); Assert.True( previousObj.TestReference != null && currentObj.TestReference != null, "previousObj.TestReference is still null or not equal to currentObj.TestReference" ); }
public void AutoMerge_ArrayOfReferencesSucceeds() { int? newNullableValue = 1000; TestObject previousObj = BuildObjectStructure(); TestObject currentObj = BuildObjectStructure(); previousObj.TestArrayOfReferences[0].TestNullableValue = newNullableValue; AutoMerge.Merge(ref currentObj, previousObj); Assert.True( currentObj.TestArrayOfReferences[0].TestNullableValue == newNullableValue, $"Expected {newNullableValue}\nActual {currentObj.TestArrayOfReferences[0].TestNullableValue}." ); }
public void AutoMerge_CollectionOfReferencesSucceeds() { int? newNullableValue = 1000; TestObject previousObj = BuildObjectStructure(); TestObject currentObj = BuildObjectStructure(); currentObj.TestCollectionOfReferences[0].TestNullableValue = newNullableValue; AutoMerge.Merge(ref previousObj, currentObj); Assert.True( previousObj.TestCollectionOfReferences[0].TestNullableValue == newNullableValue, $"Expected {newNullableValue}\nWas {previousObj.TestCollectionOfReferences[0].TestNullableValue}" ); }
public void AutoMerge_NullValueIsIgnored() { TestObject previousObj = BuildObjectStructure(); TestObject currentObj = BuildObjectStructure(); currentObj.TestReference.TestNullableValue = null; AutoMerge.Merge(ref previousObj, currentObj); int?value = previousObj.TestReference.TestNullableValue; Assert.True( value != null && value.Value == 1, "Nullable value type was overridden." ); }
public void AutoMerge_CollectionOfDifferentLengthsSucceeds() { TestObject previousObj = BuildObjectStructure(); TestObject currentObj = BuildObjectStructure(); int countBeforeMerge = currentObj.TestCollectionOfReferences.Count; previousObj.TestCollectionOfReferences.RemoveAt(countBeforeMerge - 1); previousObj.TestCollectionOfReferences[0].TestNullableValue = null; AutoMerge.Merge(ref currentObj, previousObj); bool isTheSame = ( currentObj.TestCollectionOfReferences.Count == countBeforeMerge && currentObj.TestCollectionOfReferences[0].TestNullableValue == null ); Assert.True(isTheSame, "TestCollectionOfReferences count is incorrect."); }
public void AutoMerge_ChangingSimpleValuesSucceeds() { TestObject previousObj = BuildObjectStructure(); TestObject currentObj = BuildObjectStructure(); currentObj.TestString = "NewString"; currentObj.TestValue = 2; currentObj.TestBool = !currentObj.TestBool; AutoMerge.Merge(ref previousObj, currentObj); bool isEqual = ( previousObj.TestString.Equals(currentObj.TestString) && previousObj.TestValue == currentObj.TestValue && previousObj.TestBool == currentObj.TestBool ); Assert.True(isEqual, "previousObj values do not equal currentObj values."); }
public void AutoMerge_ReferenceTypeChangesSucceeds() { TestObject previousObj = BuildObjectStructure(); TestObject currentObj = BuildObjectStructure(); currentObj.TestReference.TestNullableValue = 100; currentObj.TestReference.TestCollectionOfValues.Reverse(); currentObj.TestReference.TestArrayOfValue[0] = 100; AutoMerge.Merge(ref previousObj, currentObj); bool isEqual = ( previousObj.TestReference.TestNullableValue == currentObj.TestReference.TestNullableValue && Enumerable.SequenceEqual(previousObj.TestReference.TestArrayOfValue, currentObj.TestReference.TestArrayOfValue) && Enumerable.SequenceEqual(previousObj.TestReference.TestCollectionOfValues, currentObj.TestReference.TestCollectionOfValues) ); Assert.True(isEqual, "previousObj values do not equal currentObj values."); }
public void AutoMerge_DestinationEnumerableIsUntouchedWhenSourceIsEmpty() { TestObject previousObj = BuildObjectStructure(); TestObject currentObj = BuildObjectStructure(); int countPriorToChange = currentObj.TestCollectionOfReferences.Count; int arrayCountPriorToChange = currentObj.TestArrayOfReferences.Length; previousObj.TestCollectionOfReferences = new List <AnotherTestObject>(); previousObj.TestArrayOfReferences = new AnotherTestObject[0]; AutoMerge.Merge(ref currentObj, previousObj); bool countsAreNotChanged = ( currentObj.TestCollectionOfReferences.Count == countPriorToChange && currentObj.TestArrayOfReferences.Length == arrayCountPriorToChange ); Assert.True( countsAreNotChanged, $"Collection count inaccurate. Expected {countPriorToChange}\nActual {currentObj.TestCollectionOfReferences.Count}" ); }
public void DictionaryWithPrimitiveSucceeds(int key, int value) { DictionaryClass testA = new DictionaryClass(); DictionaryClass testB = new DictionaryClass(); int iterations = 10; for (int i = 0; i < iterations; ++i) { testA.PrimitiveDictionary.Add(key++, value++); testB.PrimitiveDictionary.Add(key++, value++); } AutoMerge.Merge(ref testA, testB); foreach (var kvp in testA.PrimitiveDictionary) { //TODO(Logan)-> Fix KeyNotFoundException that happens on the below line. int valueB = testB.PrimitiveDictionary[kvp.Key]; Assert.True(kvp.Value == valueB); } }
public void AutoMerge_ArrayOfDifferentLengthsSucceeds() { TestObject previousObj = BuildObjectStructure(); TestObject currentObj = BuildObjectStructure(); int countBeforeMerge = currentObj.TestArrayOfReferences.Length; AnotherTestObject obj = previousObj.TestArrayOfReferences[0]; obj.TestNullableValue = null; previousObj.TestArrayOfReferences = new AnotherTestObject[] { obj }; AutoMerge.Merge(ref currentObj, previousObj); bool isSuccessfulTest = ( currentObj.TestArrayOfReferences.Length == countBeforeMerge && currentObj.TestArrayOfReferences[0].TestNullableValue == null ); Assert.True( isSuccessfulTest, $"Expected array size {countBeforeMerge}\nActual {currentObj.TestArrayOfReferences.Length}" ); }