public void AddResult(CompareBsonDocumentsResult result) { _nbDocumentsCompared++; if (result.Equal) _nbDocumentsEqual++; else _nbDocumentsNotEqual++; switch (result.DocumentsType) { case DocumentsType.Document1AndDocument2AreNotNull: _nbDocument1AndDocument2NotNull++; break; case DocumentsType.Document1AndDocument2AreNull: _nbDocument1AndDocument2Null++; break; case DocumentsType.Document1IsNull: _nbDocument1Null++; break; case DocumentsType.Document2IsNull: _nbDocument2Null++; break; } foreach (ElementResult element in result.Elements) { ElementResultAggregate elementAggregate; if (_elementsAggregate.ContainsKey(element.Name)) elementAggregate = _elementsAggregate[element.Name]; else { elementAggregate = new ElementResultAggregate(); elementAggregate.Name = element.Name; _elementsAggregate.Add(element.Name, elementAggregate); } elementAggregate.NbValues++; if (element.CompareResult == CompareElementResult.Equal) elementAggregate.NbValuesEqual++; else if (element.CompareResult == CompareElementResult.NotEqual) elementAggregate.NbValuesNotEqual++; else if (element.CompareResult == CompareElementResult.OnlyValue1) elementAggregate.NbNoValue2++; else if (element.CompareResult == CompareElementResult.OnlyValue2) elementAggregate.NbNoValue1++; } }
private CompareBsonDocumentsResult CompareBsonDocuments(TwoBsonDocuments twoBsonDocuments) { BsonDocument document1 = twoBsonDocuments.Document1; BsonDocument document2 = twoBsonDocuments.Document2; CompareBsonDocumentsResult result = new CompareBsonDocumentsResult(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; }