Fix test expectation after updates to maximally specific result

Change-Id: I6c2d9cf6b1a46eb7bfad543b40788d4bd86ed1ef
diff --git a/src/test/java/com/android/tools/r8/resolution/duplicatedefinitions/MaximallySpecificDifferentParentHierarchyTest.java b/src/test/java/com/android/tools/r8/resolution/duplicatedefinitions/MaximallySpecificDifferentParentHierarchyTest.java
index d609491..927c455 100644
--- a/src/test/java/com/android/tools/r8/resolution/duplicatedefinitions/MaximallySpecificDifferentParentHierarchyTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/duplicatedefinitions/MaximallySpecificDifferentParentHierarchyTest.java
@@ -6,6 +6,7 @@
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 import static org.junit.Assume.assumeTrue;
 
 import com.android.tools.r8.R8FullTestBuilder;
@@ -83,19 +84,28 @@
         appInfo.unsafeResolveMethodDueToDexFormat(method);
     assertTrue(methodResolutionResult.isMultiMethodResolutionResult());
     Set<String> methodResults = new HashSet<>();
+    Set<String> failedTypes = new HashSet<>();
     methodResolutionResult.forEachMethodResolutionResult(
         result -> {
-          assertTrue(result.isSingleResolution());
-          SingleResolutionResult<?> resolution = result.asSingleResolution();
-          methodResults.add(
-              (resolution.getResolvedHolder().isProgramClass() ? "Program: " : "Library: ")
-                  + resolution.getResolvedMethod().getReference().toString());
+          if (result.isSingleResolution()) {
+            SingleResolutionResult<?> resolution = result.asSingleResolution();
+            methodResults.add(
+                (resolution.getResolvedHolder().isProgramClass() ? "Program: " : "Library: ")
+                    + resolution.getResolvedMethod().getReference().toString());
+          } else {
+            assertTrue(result.isFailedResolution());
+            result
+                .asFailedResolution()
+                .forEachFailureDependency(
+                    type -> failedTypes.add(type.toDescriptorString()), m -> fail());
+          }
         });
     assertEquals(
         ImmutableSet.of(
             "Library: void " + typeName(I.class) + ".foo()",
             "Program: void " + typeName(J.class) + ".foo()"),
         methodResults);
+    assertEquals(ImmutableSet.of(descriptor(J.class)), failedTypes);
   }
 
   @Test
diff --git a/src/test/java/com/android/tools/r8/resolution/duplicatedefinitions/MaximallySpecificMultiplePathsICCETest.java b/src/test/java/com/android/tools/r8/resolution/duplicatedefinitions/MaximallySpecificMultiplePathsICCETest.java
index 2b291f6..fb556ff 100644
--- a/src/test/java/com/android/tools/r8/resolution/duplicatedefinitions/MaximallySpecificMultiplePathsICCETest.java
+++ b/src/test/java/com/android/tools/r8/resolution/duplicatedefinitions/MaximallySpecificMultiplePathsICCETest.java
@@ -6,6 +6,7 @@
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 import static org.junit.Assume.assumeTrue;
 
 import com.android.tools.r8.TestBase;
@@ -83,13 +84,21 @@
         appInfo.unsafeResolveMethodDueToDexFormat(method);
     assertTrue(methodResolutionResult.isMultiMethodResolutionResult());
     Set<String> methodResults = new HashSet<>();
+    Set<String> failedTypes = new HashSet<>();
     methodResolutionResult.forEachMethodResolutionResult(
         result -> {
-          assertTrue(result.isSingleResolution());
-          SingleResolutionResult<?> resolution = result.asSingleResolution();
-          methodResults.add(
-              (resolution.getResolvedHolder().isProgramClass() ? "Program: " : "Library: ")
-                  + resolution.getResolvedMethod().getReference().toString());
+          if (result.isSingleResolution()) {
+            SingleResolutionResult<?> resolution = result.asSingleResolution();
+            methodResults.add(
+                (resolution.getResolvedHolder().isProgramClass() ? "Program: " : "Library: ")
+                    + resolution.getResolvedMethod().getReference().toString());
+          } else {
+            assertTrue(result.isFailedResolution());
+            result
+                .asFailedResolution()
+                .forEachFailureDependency(
+                    type -> failedTypes.add(type.toDescriptorString()), m -> fail());
+          }
         });
     assertEquals(
         ImmutableSet.of(
@@ -98,6 +107,7 @@
             "Library: void " + typeName(J.class) + ".foo()",
             "Program: void " + typeName(J.class) + ".foo()"),
         methodResults);
+    assertEquals(ImmutableSet.of(descriptor(J.class), descriptor(I.class)), failedTypes);
   }
 
   @Test
diff --git a/src/test/java/com/android/tools/r8/resolution/duplicatedefinitions/MaximallySpecificMultiplePathsSuccessTest.java b/src/test/java/com/android/tools/r8/resolution/duplicatedefinitions/MaximallySpecificMultiplePathsSuccessTest.java
index a70390c..0f35c0a 100644
--- a/src/test/java/com/android/tools/r8/resolution/duplicatedefinitions/MaximallySpecificMultiplePathsSuccessTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/duplicatedefinitions/MaximallySpecificMultiplePathsSuccessTest.java
@@ -6,6 +6,7 @@
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 import static org.junit.Assume.assumeTrue;
 
 import com.android.tools.r8.TestBase;
@@ -86,19 +87,28 @@
         appInfo.unsafeResolveMethodDueToDexFormat(method);
     assertTrue(methodResolutionResult.isMultiMethodResolutionResult());
     Set<String> methodResults = new HashSet<>();
+    Set<String> failedTypes = new HashSet<>();
     methodResolutionResult.forEachMethodResolutionResult(
         result -> {
-          assertTrue(result.isSingleResolution());
-          SingleResolutionResult<?> resolution = result.asSingleResolution();
-          methodResults.add(
-              (resolution.getResolvedHolder().isProgramClass() ? "Program: " : "Library: ")
-                  + resolution.getResolvedMethod().getReference().toString());
+          if (result.isSingleResolution()) {
+            SingleResolutionResult<?> resolution = result.asSingleResolution();
+            methodResults.add(
+                (resolution.getResolvedHolder().isProgramClass() ? "Program: " : "Library: ")
+                    + resolution.getResolvedMethod().getReference().toString());
+          } else {
+            assertTrue(result.isFailedResolution());
+            result
+                .asFailedResolution()
+                .forEachFailureDependency(
+                    type -> failedTypes.add(type.toDescriptorString()), m -> fail());
+          }
         });
     assertEquals(
         ImmutableSet.of(
             "Library: void " + typeName(I.class) + ".foo()",
             "Program: void " + typeName(J.class) + ".foo()"),
         methodResults);
+    assertEquals(ImmutableSet.of(descriptor(J.class), descriptor(I.class)), failedTypes);
   }
 
   @Test
diff --git a/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultTopAndBothTest.java b/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultTopAndBothTest.java
index 7e76e3e..34f972a 100644
--- a/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultTopAndBothTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/interfacediamonds/DefaultTopAndBothTest.java
@@ -5,7 +5,6 @@
 
 import static org.hamcrest.CoreMatchers.containsString;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
 import static org.junit.Assume.assumeTrue;
 
 import com.android.tools.r8.TestAppViewBuilder;
@@ -56,10 +55,13 @@
     DexMethod method = buildNullaryVoidMethod(B.class, "f", appInfo.dexItemFactory());
     MethodResolutionResult resolutionResult = appInfo.resolveMethodOnClassHolderLegacy(method);
     Set<String> holders = new HashSet<>();
+    Set<String> failedTypes = new HashSet<>();
     resolutionResult
         .asFailedResolution()
         .forEachFailureDependency(
-            type -> fail(), target -> holders.add(target.getHolderType().toSourceString()));
+            type -> failedTypes.add(type.toSourceString()),
+            target -> holders.add(target.getHolderType().toSourceString()));
+    assertEquals(holders, failedTypes);
     assertEquals(ImmutableSet.of(L.class.getTypeName(), R.class.getTypeName()), holders);
   }
 
diff --git a/src/test/java/com/android/tools/r8/resolution/interfacediamonds/TwoDefaultMethodsWithoutTopTest.java b/src/test/java/com/android/tools/r8/resolution/interfacediamonds/TwoDefaultMethodsWithoutTopTest.java
index b3b1f8e..ff41559 100644
--- a/src/test/java/com/android/tools/r8/resolution/interfacediamonds/TwoDefaultMethodsWithoutTopTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/interfacediamonds/TwoDefaultMethodsWithoutTopTest.java
@@ -6,7 +6,6 @@
 import static org.hamcrest.CoreMatchers.containsString;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
 import static org.junit.Assume.assumeTrue;
 
 import com.android.tools.r8.TestAppViewBuilder;
@@ -80,10 +79,13 @@
         // When not desugaring resolution should fail. Check the failure dependencies are the two
         // default methods in conflict.
         Set<String> holders = new HashSet<>();
+        Set<String> failedTypes = new HashSet<>();
         resolutionResult
             .asFailedResolution()
             .forEachFailureDependency(
-                type -> fail(), m -> holders.add(m.getHolderType().toSourceString()));
+                type -> failedTypes.add(type.toSourceString()),
+                m -> holders.add(m.getHolderType().toSourceString()));
+        assertEquals(holders, failedTypes);
         assertEquals(ImmutableSet.of(I.class.getTypeName(), J.class.getTypeName()), holders);
       }
     }