public override IEnumerable Compare()

in openapi-diff/src/modeler/AutoRest.Swagger/Model/Response.cs [28:90]


        public override IEnumerable<ComparisonMessage> Compare(
            ComparisonContext<ServiceDefinition> context, OperationResponse previous)
        {
            var priorResponse = previous;

            if (priorResponse == null)
            {
                throw new ArgumentNullException("previous");
            }
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            context.Direction = DataDirection.Response;

            base.Compare(context, previous);

            var headers = Headers != null ? Headers : new Dictionary<string, Header>();
            var priorHeaders = priorResponse.Headers != null ? priorResponse.Headers : new Dictionary<string, Header>();

            context.PushProperty("headers");
            foreach (var header in headers)
            {
                context.PushProperty(header.Key);

                if (!priorHeaders.TryGetValue(header.Key, out var oldHeader))
                {
                    context.LogInfo(ComparisonMessages.AddingHeader, header.Key);
                }
                else
                {
                    header.Value.Compare(context, oldHeader);
                }

                context.Pop();
            }

            foreach (var header in priorHeaders)
            {
                context.PushProperty(header.Key);

                if (!headers.TryGetValue(header.Key, out var newHeader))
                {
                    context.LogBreakingChange(ComparisonMessages.RemovingHeader, header.Key);
                }

                context.Pop();
            }
            context.Pop();

            // switch context to `schema` property.
            context.PushProperty("schema");
            if (Schema != null && priorResponse.Schema != null)
            {
                Schema.Compare(context, priorResponse.Schema);
            }
            context.Pop();

            context.Direction = DataDirection.None;

            return context.Messages;
        }