public void ExampleUsage2() { MyClass1 originalObj = new MyClass1() { myString = "abc", myString2 = "def" }; MyClass1 copy1 = originalObj.DeepCopyViaJson(); copy1.myString = "abcd"; copy1.complexField = new MyClass1() { myString = "123", myString2 = "456" }; copy1.complexField.complexList = new List <MyClass1>() { new MyClass1() { myString = "listEntry1" } }; MyClass1 copy2 = originalObj.DeepCopyViaJson(); copy2.myString2 = "defg"; copy2.myString = "123"; copy2.complexField = new MyClass1() { myString = "zyx" }; copy2.complexField.complexList = new List <MyClass1>() { new MyClass1() { myString = "listEntry2" } }; var merge = MergeJson.Merge(originalObj, copy1, copy2); Assert.True(merge.hasMergeConflict); // Parsed conflicts returns an easy to iterate through array: var parsedConflicts = merge.GetParsedMergeConflicts(); var firstConflict = parsedConflicts.First(); Assert.Equal("myString", firstConflict.fieldName); Assert.Equal("abcd", "" + firstConflict.oldValue); Assert.Equal("123", "" + firstConflict.newValue); //Log.d("merge2.conflicts=" + JsonWriter.AsPrettyString(merge2.conflicts)); //Log.d("parsedConflicts=" + JsonWriter.AsPrettyString(parsedConflicts)); }
public void ExampleUsage1() { MyClass1 originalObj = new MyClass1() { myString = "abc", myString2 = "def" }; MyClass1 copy1 = originalObj.DeepCopyViaJson(); copy1.myString = "abcd"; copy1.complexField = new MyClass1() { myString = "123", myString2 = "456" }; copy1.complexField.complexList = new List <MyClass1>() { new MyClass1() { myString = "listEntry1" } }; MyClass1 copy2 = originalObj.DeepCopyViaJson(); copy2.myString2 = "defg"; var merge = MergeJson.Merge(originalObj, copy1, copy2); Assert.False(merge.hasMergeConflict); // Parse the merged result back into a MyClass1 object: MyClass1 mergeResult1 = merge.GetResult(); // The changes from both copies were merged correctly: Assert.Equal(copy1.myString, mergeResult1.myString); Assert.Equal(copy2.myString2, mergeResult1.myString2); }