Exemplo n.º 1
0
        public void AutoMerge_NullSourceValueSucceeds()
        {
            TestObject previousObj = BuildObjectStructure();
            TestObject currentObj  = BuildObjectStructure();

            currentObj.TestReference = null;
            AutoMerge.Merge(ref previousObj, currentObj);

            Assert.True(previousObj.TestReference != null);
        }
Exemplo n.º 2
0
        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."
                );
        }
Exemplo n.º 3
0
        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.");
        }
Exemplo n.º 4
0
        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"
                );
        }
Exemplo n.º 5
0
        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}."
                );
        }
Exemplo n.º 6
0
        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}"
                );
        }
Exemplo n.º 7
0
        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."
                );
        }
Exemplo n.º 8
0
        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.");
        }
Exemplo n.º 9
0
        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.");
        }
Exemplo n.º 10
0
        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.");
        }
Exemplo n.º 11
0
        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}"
                );
        }
Exemplo n.º 12
0
        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);
            }
        }
Exemplo n.º 13
0
        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}"
                );
        }