Esempio n. 1
0
 private IEnumerable <CompareDocumentResult> _Compare(IEnumerable <TwoDocuments> twoBsonDocumentsList)
 {
     foreach (TwoDocuments twoBsonDocuments in twoBsonDocumentsList)
     {
         CompareDocumentResult result = CompareBsonDocuments(twoBsonDocuments);
         //bool equal = result.Equal;
         //if ((!equal && _returnNotEqualDocuments) || (equal && _returnEqualDocuments))
         yield return(result);
     }
 }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        public void AddResult(CompareDocumentResult result, bool keepResult)
        {
            _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++;
                }
            }

            if (keepResult)
            {
                _compareDocumentResults.Add(result);
            }
        }