Fix test status

This also adds a few util methods for DEX VM version access.

Change-Id: I859a321c967ce122de9813857301d1cdc4cc05f4
diff --git a/src/test/java/com/android/tools/r8/TestParameters.java b/src/test/java/com/android/tools/r8/TestParameters.java
index 7e230ef..20256e1 100644
--- a/src/test/java/com/android/tools/r8/TestParameters.java
+++ b/src/test/java/com/android/tools/r8/TestParameters.java
@@ -7,7 +7,9 @@
 import static org.junit.Assert.assertTrue;
 
 import com.android.tools.r8.TestBase.Backend;
+import com.android.tools.r8.TestRuntime.CfRuntime;
 import com.android.tools.r8.TestRuntime.CfVm;
+import com.android.tools.r8.TestRuntime.DexRuntime;
 import com.android.tools.r8.TestRuntime.NoneRuntime;
 import com.android.tools.r8.ToolHelper.DexVm;
 import com.android.tools.r8.utils.AndroidApiLevel;
@@ -55,6 +57,10 @@
     return runtime.isDex();
   }
 
+  public DexRuntime asDexRuntime() {
+    return getRuntime().asDex();
+  }
+
   public boolean isCfRuntime() {
     return runtime.isCf();
   }
@@ -63,6 +69,10 @@
     return runtime.isCf() && runtime.asCf().getVm() == vm;
   }
 
+  public CfRuntime asCfRuntime() {
+    return getRuntime().asCf();
+  }
+
   public boolean isDexRuntimeVersion(DexVm.Version vm) {
     return isDexRuntime() && vm == getDexRuntimeVersion();
   }
diff --git a/src/test/java/com/android/tools/r8/TestRuntime.java b/src/test/java/com/android/tools/r8/TestRuntime.java
index 6fd2f96..05f9e16 100644
--- a/src/test/java/com/android/tools/r8/TestRuntime.java
+++ b/src/test/java/com/android/tools/r8/TestRuntime.java
@@ -248,6 +248,10 @@
       return vm;
     }
 
+    public DexVm.Version getVersion() {
+      return vm.getVersion();
+    }
+
     @Override
     public AndroidApiLevel maxSupportedApiLevel() {
       return getMinApiLevel();
diff --git a/src/test/java/com/android/tools/r8/resolution/InvokeDefaultMethodViaStaticTest.java b/src/test/java/com/android/tools/r8/resolution/InvokeDefaultMethodViaStaticTest.java
index 37f328e..c621b4b 100644
--- a/src/test/java/com/android/tools/r8/resolution/InvokeDefaultMethodViaStaticTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/InvokeDefaultMethodViaStaticTest.java
@@ -6,6 +6,7 @@
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestParametersCollection;
+import com.android.tools.r8.ToolHelper.DexVm.Version;
 import com.android.tools.r8.resolution.invokestaticinterfacedefault.InterfaceDump;
 import com.android.tools.r8.resolution.invokestaticinterfacedefault.MainDump;
 import com.google.common.collect.ImmutableList;
@@ -32,12 +33,19 @@
     this.parameters = parameters;
   }
 
+  private Class<? extends Throwable> getExpectedError() {
+    return parameters.isDexRuntime()
+            && parameters.asDexRuntime().getVersion().isOlderThanOrEqual(Version.V4_4_4)
+        ? VerifyError.class
+        : IncompatibleClassChangeError.class;
+  }
+
   @Test
   public void testReference() throws Exception {
     testForRuntime(parameters)
         .addProgramClassFileData(CLASSES)
         .run(parameters.getRuntime(), "Main")
-        .assertFailureWithErrorThatThrows(IncompatibleClassChangeError.class);
+        .assertFailureWithErrorThatThrows(getExpectedError());
   }
 
   @Test
@@ -48,6 +56,6 @@
         .setMinApi(parameters.getApiLevel())
         .addOptionsModification(o -> o.testing.allowInvokeErrors = true)
         .run(parameters.getRuntime(), "Main")
-        .assertFailureWithErrorThatThrows(IncompatibleClassChangeError.class);
+        .assertFailureWithErrorThatThrows(getExpectedError());
   }
 }