func dumpDiffFuzzy()

in MobiusTest/Source/DebugDiff.swift [30:54]


func dumpDiffFuzzy<T>(expected: [T], actual: [T], withUnmatchedActual: Bool) -> String where T: Equatable {
    var actual = actual

    let diffItem = { (item: T) -> [Difference] in
        let closestResult = closestDiff(
            for: item,
            in: actual,
            predicate: { $0.first?.isSame ?? false } // Only use diff if first line (typically case name) matches
        )

        if let diffList = closestResult.0,
           let matchedCandidate = closestResult.1,
           let matchedIndex = actual.firstIndex(of: matchedCandidate) {
            actual.remove(at: matchedIndex)
            return diffList
        } else {
            return [Difference.delete(dumpUnwrapped(item).lines)]
        }
    }

    let expectedDifference = expected.flatMap(diffItem)
    let unmatchedActualDifference = withUnmatchedActual ? actual.map { Difference.insert(dumpUnwrapped($0).lines) } : []

    return (expectedDifference + unmatchedActualDifference).diffString
}