From 5899523f278a7cad6ff9c5d68975d252d00bc013 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Santiago=20Turi=C3=B1o?= Date: Tue, 23 Sep 2025 11:49:07 +0200 Subject: [PATCH 1/2] ANDROID-16874 New comparator where order is not important --- .../telefonica/loggerazzi/LogComparator.kt | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/loggerazzi/src/main/java/com/telefonica/loggerazzi/LogComparator.kt b/loggerazzi/src/main/java/com/telefonica/loggerazzi/LogComparator.kt index f846b72..3a6cf19 100644 --- a/loggerazzi/src/main/java/com/telefonica/loggerazzi/LogComparator.kt +++ b/loggerazzi/src/main/java/com/telefonica/loggerazzi/LogComparator.kt @@ -21,4 +21,30 @@ class DefaultLogComparator : LogComparator { return compareResult.toString().takeIf { it.isNotEmpty() } } -} \ No newline at end of file +} + +@Suppress("unused") +class AnyOrderLogComparator : LogComparator { + override fun compare(recorded: List, golden: List): String? { + val missing = findDifference(golden, recorded) + val extra = findDifference(recorded, golden) + + if (missing.isEmpty() && extra.isEmpty()) { + return null + } + + val result = StringBuilder() + if (missing.isNotEmpty()) { + result.appendLine("Missing entries (in golden but not in recorded): $missing") + } + if (extra.isNotEmpty()) { + result.appendLine("Extra entries (in recorded but not in golden): $extra") + } + + return result.toString().trimEnd() + } + + private fun findDifference(first: List, second: List): List { + return first.toMutableList().apply { removeAll(second) } + } +} From 80cfbcaf61cad422128588bdc9ac532d4ca992bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Santiago=20Turi=C3=B1o?= Date: Tue, 23 Sep 2025 12:47:00 +0200 Subject: [PATCH 2/2] ANDROID-16874 Set-based approach --- .../com/telefonica/loggerazzi/LogComparator.kt | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/loggerazzi/src/main/java/com/telefonica/loggerazzi/LogComparator.kt b/loggerazzi/src/main/java/com/telefonica/loggerazzi/LogComparator.kt index 3a6cf19..5275fd5 100644 --- a/loggerazzi/src/main/java/com/telefonica/loggerazzi/LogComparator.kt +++ b/loggerazzi/src/main/java/com/telefonica/loggerazzi/LogComparator.kt @@ -26,8 +26,11 @@ class DefaultLogComparator : LogComparator { @Suppress("unused") class AnyOrderLogComparator : LogComparator { override fun compare(recorded: List, golden: List): String? { - val missing = findDifference(golden, recorded) - val extra = findDifference(recorded, golden) + val goldenSet = golden.toSet() + val recordedSet = recorded.toSet() + + val missing = goldenSet - recordedSet + val extra = recordedSet - goldenSet if (missing.isEmpty() && extra.isEmpty()) { return null @@ -35,16 +38,12 @@ class AnyOrderLogComparator : LogComparator { val result = StringBuilder() if (missing.isNotEmpty()) { - result.appendLine("Missing entries (in golden but not in recorded): $missing") + result.appendLine("Missing entries (in golden but not in recorded): ${missing.toList()}") } if (extra.isNotEmpty()) { - result.appendLine("Extra entries (in recorded but not in golden): $extra") + result.appendLine("Extra entries (in recorded but not in golden): ${extra.toList()}") } return result.toString().trimEnd() } - - private fun findDifference(first: List, second: List): List { - return first.toMutableList().apply { removeAll(second) } - } }