in src/main/kotlin/org/jetbrains/objcdiff/reports/buildDiffReport.kt [8:39]
fun buildDiffReport(expectedReport: HeaderReport, actualReport: HeaderReport): DiffReport {
val expected = (expectedReport.types).associateBy { it.key }.toMutableMap()
val actual = (actualReport.types).associateBy { it.key }.toMutableMap()
val result = mutableMapOf<String, ObjCType>()
verifyExpectedButNotDefined(actual, expected, result)
verifyDefinedButNotExpected(actual, result)
verifyMembers(actualReport.allTypes, expectedReport.allTypes)
verifyMembersOrder(actualReport.allTypes, expectedReport.allTypes)
verifyAllOk(actualReport.allTypes, expectedReport.allTypes)
val definedButNotExpected = mutableSetOf<String>()
val expectedButNotDefined = mutableSetOf<String>()
val unequalMembers = mutableSetOf<String>()
val invalidOrderTypes = mutableSetOf<String>()
(actual + expected).forEach { (key, symbol) ->
if (symbol.expectedButNotDefined == true) expectedButNotDefined.add(key)
if (symbol.definedButNotExpected == true) definedButNotExpected.add(key)
if (symbol.membersEquality != setOf(MemberEquality.EQUAL)) unequalMembers.add(key)
if (symbol.membersEquality.contains(MemberEquality.INVALID_ORDER)) invalidOrderTypes.add(key)
}
return DiffReport(
expectedButNotDefined = expectedButNotDefined,
definedButNotExpected = definedButNotExpected,
unequalMembers = unequalMembers,
invalidOrderTypes = invalidOrderTypes,
merge = result.values.toList()
)
}