Example #1
0
            public Builder Result(ResultContext resultContext = ResultContext.Class, string name = null)
            {
                ComparerResult comparerResult = new ComparerResult(resultContext, name);

                _comparerResult.AddComparerResult(comparerResult);
                return(new Builder(this, comparerResult));
            }
Example #2
0
 protected void CompareParameters()
 {
   IEnumerable<Tuple<ParameterInfo, ParameterInfo>> parameterPairs = ReferenceType.GetParameters().Zip(NewType.GetParameters(), (refParam, newParam) => new Tuple<ParameterInfo, ParameterInfo>(refParam, newParam));
   foreach (Tuple<ParameterInfo, ParameterInfo> parameterPair in parameterPairs)
   {
     ComparerResult.AddComparerResult(ComparerContext.CreateComparer(parameterPair.Item1, parameterPair.Item2).Compare());
   }
 }
Example #3
0
        public void When_passing_two_level_report_xml_should_contain_it()
        {
            IComparerResult result1 = new ComparerResult(ResultContext.Assembly, "Assembly");
            IComparerResult result2 = new ComparerResult(ResultContext.Class, "Class");

            result2.AddChangedFlag("dummy", true, Severity.Error);
            result1.AddComparerResult(result2);
            XElement sut = XmlGenerator.GenerateXml(result1);

            Assert.NotNull(sut.Element(ChangedElement).Element(ChangedElement));
        }
Example #4
0
        private void CompareTypes()
        {
            IEnumerable <string> referenceTypes = GetTypeNames(() => ReferenceType.DefinedTypes).ToList();
            IEnumerable <string> newTypes       = GetTypeNames(() => NewType.DefinedTypes).ToList();

            // Missing types
            foreach (string type in referenceTypes.Except(newTypes))
            {
                ComparerResult.AddRemovedItem(GetItemType(ReferenceType.GetType(type)), type, Severities.TypeRemoved);
            }

            // New types
            foreach (string type in newTypes.Except(referenceTypes))
            {
                ComparerResult.AddAddedItem(GetItemType(NewType.GetType(type)), type, Severities.TypeAdded);
            }

            // Equal types
            foreach (string type in referenceTypes.Intersect(newTypes))
            {
                ComparerResult.AddComparerResult(ComparerContext.CreateComparer(ReferenceType.GetType(type), NewType.GetType(type)).Compare());
            }
        }
Example #5
0
        private void CompareFields()
        {
            IEnumerable <string> referenceFields = GetFields(ReferenceType).ToList();
            IEnumerable <string> newFields       = GetFields(NewType).ToList();

            // missing fields
            foreach (string field in referenceFields.Except(newFields))
            {
                ComparerResult.AddRemovedItem(ResultContext.Field, field, Severity.Error);
            }

            // new fields
            foreach (string field in newFields.Except(referenceFields))
            {
                ComparerResult.AddAddedItem(ResultContext.Field, field, Severity.Warning);
            }

            // equal fields
            foreach (string field in referenceFields.Intersect(newFields))
            {
                ComparerResult.AddComparerResult(ComparerContext.CreateComparer(ReferenceType.GetField(field), NewType.GetField(field)).Compare());
            }
        }
Example #6
0
        private void CompareEvents()
        {
            IEnumerable <string> referenceEvents = GetEvents(ReferenceType).ToList();
            IEnumerable <string> newEvents       = GetEvents(NewType).ToList();

            // missing event
            foreach (string @event in referenceEvents.Except(newEvents))
            {
                ComparerResult.AddRemovedItem(ResultContext.Event, @event, Severity.Error);
            }

            // new event
            foreach (string @event in newEvents.Except(referenceEvents))
            {
                ComparerResult.AddAddedItem(ResultContext.Event, @event, Severity.Warning);
            }

            // equal events
            foreach (string @event in newEvents.Intersect(referenceEvents))
            {
                ComparerResult.AddComparerResult(ComparerContext.CreateComparer(ReferenceType.GetEvent(@event), NewType.GetEvent(@event)).Compare());
            }
        }
Example #7
0
        private void CompareMethods(Func <Type, MethodBase[]> getMethods, Func <Type, string, Type[], MethodBase> getMethod, ResultContext resultContext)
        {
            PairList <Item> pairList = new PairList <Item>();

            AddMethodsToPairList(pairList.AddReferenceItem, () => getMethods(ReferenceType));
            AddMethodsToPairList(pairList.AddNewItem, () => getMethods(NewType));

            foreach (Item method in pairList.RemovedItems)
            {
                ComparerResult.AddRemovedItem(resultContext, getMethod(ReferenceType, method.Name, method.Types).ToString(), Severity.Error);
            }

            foreach (Item method in pairList.AddedItems)
            {
                ComparerResult.AddAddedItem(resultContext, getMethod(NewType, method.Name, method.Types).ToString(), Severity.Warning);
            }

            foreach (ItemPair <Item> methodPair in pairList.EqualItems)
            {
                MethodBase referenceMethod = getMethod(ReferenceType, methodPair.ReferenceItem.Name, methodPair.ReferenceItem.Types);
                MethodBase newMethod       = getMethod(NewType, methodPair.NewItem.Name, methodPair.NewItem.Types);
                ComparerResult.AddComparerResult(ComparerContext.CreateComparer(referenceMethod, newMethod).Compare());
            }
        }
Example #8
0
        private void CompareProperties()
        {
            PairList <Item> pairList = new PairList <Item>();

            GetProperties(ReferenceType).ForEach(property => pairList.AddReferenceItem(new Item(property.Name, property.GetIndexParameterTypes())));
            GetProperties(NewType).ForEach(property => pairList.AddNewItem(new Item(property.Name, property.GetIndexParameterTypes())));

            foreach (Item property in pairList.RemovedItems)
            {
                ComparerResult.AddRemovedItem(ResultContext.Property, ReferenceType.GetApiProperty(property.Name, property.Types).ToString(), Severity.Error);
            }

            foreach (Item property in pairList.AddedItems)
            {
                ComparerResult.AddAddedItem(ResultContext.Property, NewType.GetApiProperty(property.Name, property.Types).ToString(), Severity.Warning);
            }

            foreach (ItemPair <Item> property in pairList.EqualItems)
            {
                PropertyInfo referenceProperty = ReferenceType.GetApiProperty(property.ReferenceItem.Name, property.ReferenceItem.Types);
                PropertyInfo newProperty       = NewType.GetApiProperty(property.NewItem.Name, property.NewItem.Types);
                ComparerResult.AddComparerResult(ComparerContext.CreateComparer(referenceProperty, newProperty).Compare());
            }
        }
Example #9
0
        private void CompareMethods(Func <Type, MethodBase[]> getMethods, ResultContext resultContext)
        {
            PairList <MethodItem> pairList = new PairList <MethodItem>();

            getMethods(ReferenceType).ToList().ForEach(m => pairList.AddReferenceItem(new MethodItem(m)));
            getMethods(NewType).ToList().ForEach(m => pairList.AddNewItem(new MethodItem(m)));

            foreach (MethodItem item in pairList.RemovedItems)
            {
                ComparerResult.AddRemovedItem(resultContext, item.Method.ToString(), Severities.MethodRemoved);
            }

            foreach (MethodItem item in pairList.AddedItems)
            {
                ComparerResult.AddAddedItem(resultContext, item.Method.ToString(), Severities.MethodAdded);
            }

            foreach (ItemPair <MethodItem> itemPair in pairList.EqualItems)
            {
                MethodBase referenceMethod = itemPair.ReferenceItem.Method;
                MethodBase newMethod       = itemPair.NewItem.Method;
                ComparerResult.AddComparerResult(ComparerContext.CreateComparer(referenceMethod, newMethod).Compare());
            }
        }