Reproduce Mockito's mock of empty interface after devirtualization.

Bug: 120675359
Change-Id: I77fe93d4af84dbe97870278cf62cbd030d680b7a
diff --git a/src/test/examples/mockito_interface/InterfaceTest.java b/src/test/examples/mockito_interface/InterfaceTest.java
new file mode 100644
index 0000000..2502b13
--- /dev/null
+++ b/src/test/examples/mockito_interface/InterfaceTest.java
@@ -0,0 +1,47 @@
+// Copyright (c) 2018, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+package mockito_interface;
+
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(Parameterized.class)
+public class InterfaceTest {
+  @Mock
+  private Interface fld;
+
+  private InterfaceUser user;
+
+  private boolean flag;
+
+  @Parameterized.Parameters(name = "flag: {0}")
+  public static Boolean[] data() {
+    return new Boolean[] {true, false};
+  }
+
+  public InterfaceTest(boolean flag) {
+    this.flag = flag;
+  }
+
+  @Before
+  public void setUp() {
+    MockitoAnnotations.initMocks(this);
+    user = new InterfaceUser(fld);
+  }
+
+  @Test
+  public void test() {
+    if (flag) {
+      user.consume();
+    }
+    verify(fld, times(flag ? 1 : 0)).onEnterForeground();
+  }
+}