private CompareDocumentResult CompareBsonDocuments(TwoDocuments twoBsonDocuments) { BsonDocument document1 = twoBsonDocuments.Document1; BsonDocument document2 = twoBsonDocuments.Document2; CompareDocumentResult result = new CompareDocumentResult(twoBsonDocuments, _comparatorOptions); result.DontSetDocumentReference = _dontSetDocumentReference; result.DocumentReferenceElements1 = _documentReferenceElements1; result.DocumentReferenceElements2 = _documentReferenceElements2; if (document1 == null && document2 == null) { result.DocumentsType = DocumentsType.Document1AndDocument2AreNull; } else if (document1 == null) { result.DocumentsType = DocumentsType.Document1IsNull; } else if (document2 == null) { result.DocumentsType = DocumentsType.Document2IsNull; } else { result.DocumentsType = DocumentsType.Document1AndDocument2AreNotNull; foreach (var twoDocElement in EnumerateTwoBsonDocumentsElements(document1, document2)) { CompareElementResult compareElements; if (twoDocElement.Value1 != null && twoDocElement.Value2 != null) { //if (twoDocElement.Value1.IsString && twoDocElement.Value2.IsString) //{ // if (_stringComparisonIgnoreWhiteSpace) // { // } //} //if (_stringComparisonIgnoreCase && twoDocElement.Value1.IsString && twoDocElement.Value2.IsString) //{ // if (string.Equals(twoDocElement.Value1.AsString, twoDocElement.Value2.AsString, StringComparison.InvariantCultureIgnoreCase)) // compareElements = CompareElementResult.Equal; // else // compareElements = CompareElementResult.NotEqual; //} //else if (twoDocElement.Value1 == twoDocElement.Value2) // compareElements = CompareElementResult.Equal; //else // compareElements = CompareElementResult.NotEqual; if (Equals(twoDocElement.Value1, twoDocElement.Value2)) { compareElements = CompareElementResult.Equal; } else { compareElements = CompareElementResult.NotEqual; } } else if (twoDocElement.Value1 != null) { compareElements = CompareElementResult.OnlyValue1; } else // if (twoDocElement.Value2 != null) { compareElements = CompareElementResult.OnlyValue2; } result.AddElement(twoDocElement.Name, compareElements, twoDocElement.Value1, twoDocElement.Value2); } } return(result); }
private IEnumerable <string> _documentReferenceElements2 = null; // list of reference element from document 2 public CompareDocumentResult(TwoDocuments twoBsonDocuments, DocumentComparatorOptions comparatorOptions) { _twoBsonDocuments = twoBsonDocuments; _comparatorOptions = comparatorOptions; }