in openapi-diff/src/modeler/AutoRest.Swagger/Model/SwaggerObject.cs [183:219]
private void CompareEnums(ComparisonContext<ServiceDefinition> context, T prior)
{
if (prior.Enum == null && this.Enum == null) return;
CompareXmsEnum(context,prior);
bool relaxes = (prior.Enum != null && this.Enum == null);
bool constrains = (prior.Enum == null && this.Enum != null);
if (!relaxes && !constrains)
{
// It was enum and it is still enum i.e check for addition/removal
// 1. Look for removed elements (constraining).
constrains = prior.Enum.Any(str => !this.Enum.Contains(str));
// 2. Look for added elements (relaxing).
relaxes = this.Enum.Any(str => !prior.Enum.Contains(str));
if (constrains)
{
IEnumerable<string> removedEnums = prior.Enum.Except(this.Enum);
if (removedEnums.Any())
{
context.LogBreakingChange(ComparisonMessages.RemovedEnumValue, String.Join(", ", removedEnums.ToList()));
}
}
if (relaxes)
{
IEnumerable<string> addedEnums = this.Enum.Except(prior.Enum);
if (addedEnums.Any())
{
context.LogBreakingChange(ComparisonMessages.AddedEnumValue, String.Join(", ", addedEnums.ToList()));
}
}
}
}