protected void BreakingMethodOverloadChangeDetected(ApiBreakType expectedBreakType, string namespaceQualifiedMethodName)
        {
            bool containsChange = _breakingChanges.Any(
                change => change.BreakType == expectedBreakType &&
                change.Change is MethodGroupChange ? ((MethodGroupChange)change.Change).MethodChanges.Any(x => x.Method.FullName == namespaceQualifiedMethodName) : false);

            Assert.True(containsChange, string.Format("Did not find expected breaking method overload change type '{0}' for method '{1}'", expectedBreakType, namespaceQualifiedMethodName));
        }
        protected void BreakingMethodChangeDetected(ApiBreakType expectedBreakType, string namespaceQualifiedMethodName)
        {
            var containsChange = _breakingChanges
                                 .Where(x => x.BreakType == expectedBreakType && x.Change is MethodGroupChange)
                                 .Select(x => ((MethodGroupChange)x.Change))
                                 .Where(x => x.ChangeType == ChangeType.Added) // Only interested in new methods, not overloads
                                 .SelectMany(x => x.MethodChanges)
                                 .Any(x => x.Method.FullName == namespaceQualifiedMethodName);

            Assert.True(containsChange, string.Format("Did not find expected breaking method change type '{0}' for method '{1}'", expectedBreakType, namespaceQualifiedMethodName));
        }
        protected void Add <TBreakingChangeItem>(
            ApiBreakType breakType,
            Func <TChange, TChangeContext, IEnumerable <TBreakingChangeItem> > breakingItemsSelector,
            Func <TBreakingChangeItem, TChangeContext, string> descriptionGenerator)
        {
            _funcs.Add((change, ctx) =>
            {
                var breakingChanges = breakingItemsSelector(change, ctx)
                                      .Select(item => new BreakingChange(breakType, descriptionGenerator(item, ctx), change));

                return(breakingChanges);
            });
        }
 protected void Add <TBreakingChangeItem>(
     ApiBreakType breakType,
     Func <TChange, TChangeContext, TBreakingChangeItem> breakingItemsSelector,
     Func <TBreakingChangeItem, TChangeContext, string> descriptionGenerator)
 {
     _funcs.Add((change, ctx) =>
     {
         TBreakingChangeItem breakingChangeItem = breakingItemsSelector(change, ctx);
         return(ReferenceEquals(breakingChangeItem, null)
                                 ? new BreakingChange[0]
                                 : new[] { new BreakingChange(breakType, descriptionGenerator(breakingChangeItem, ctx), change) });
     });
 }
예제 #5
0
 public BreakingChange(ApiBreakType breakType, string description, object change)
 {
     _breakType   = breakType;
     _description = description;
     _change      = change;
 }
 protected void SingleBreakingChangeReasonIs(ApiBreakType breakType)
 {
     Assert.AreEqual(1, _breakingChanges.Length, string.Format("Expected breaking change type of {0}, got [{1}]", breakType, string.Join(",", _breakingChanges.Select(x => x.BreakType))));
     Assert.AreEqual(breakType, _breakingChanges[0].BreakType);
 }