From 2bd7e7134cacbe2472266b936a576ddb3866a2aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Galland?= Date: Mon, 2 Mar 2020 22:16:04 +0100 Subject: [PATCH] [tests] assertContains provides diff between actual and expected values. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Galland --- .../sarl/tests/api/tools/TestAssertions.java | 32 ++++++++++++++++--- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/tests/io.sarl.tests.api/src/main/java/io/sarl/tests/api/tools/TestAssertions.java b/tests/io.sarl.tests.api/src/main/java/io/sarl/tests/api/tools/TestAssertions.java index c0ddce94b6..6991a72b98 100644 --- a/tests/io.sarl.tests.api/src/main/java/io/sarl/tests/api/tools/TestAssertions.java +++ b/tests/io.sarl.tests.api/src/main/java/io/sarl/tests/api/tools/TestAssertions.java @@ -171,12 +171,36 @@ public static void assertContainsCollection(Iterable actual, Iterable expe } if (!unexpectedElements.isEmpty()) { - fail("Unexpected elements:\n" + unexpectedElements.toString() + "\nActual elements are:\n" + - Iterables.toString(actual) + "\nExpected elements are:\n" + Iterables.toString(expected)); + throw new AssertionFailedError( + "Unexpected elements:\n" + unexpectedElements.toString(), + toString(expected), + toString(actual)); } else if (!le.isEmpty()) { - fail("Expecting the following elements:\n" + le.toString() + "\nActual elements are:\n" + - Iterables.toString(actual) + "\nExpected elements are:\n" + Iterables.toString(expected)); + throw new AssertionFailedError("Expecting the following elements:\n" + le.toString(), + toString(expected), + toString(actual)); + } + } + + private static String toString(Iterable iterable) { + final StringBuilder buf = new StringBuilder(); + if (iterable != null) { + final List elements = new ArrayList<>(); + for (final Object obj : iterable) { + if (obj == null) { + elements.add("null"); + } else { + elements.add("<" + obj.toString() + ">"); + } + } + final String[] tab = new String[elements.size()]; + elements.toArray(tab); + Arrays.sort(tab); + for (final String obj : tab) { + buf.append(obj).append("\n"); + } } + return buf.toString(); } /** Test if the actual collection/iterable contains at least all the expected objects.