summaryrefslogtreecommitdiffstats
path: root/test/022-interface
diff options
context:
space:
mode:
Diffstat (limited to 'test/022-interface')
-rw-r--r--test/022-interface/build24
-rw-r--r--test/022-interface/classes/Iface1.classbin0 -> 389 bytes
-rw-r--r--test/022-interface/classes/Iface2.classbin0 -> 117 bytes
-rw-r--r--test/022-interface/classes/Iface2Sub1.classbin0 -> 142 bytes
-rw-r--r--test/022-interface/classes/ImplA.classbin0 -> 321 bytes
-rw-r--r--test/022-interface/classes/ImplB.classbin0 -> 506 bytes
-rw-r--r--test/022-interface/classes/ImplBSub.classbin0 -> 309 bytes
-rw-r--r--test/022-interface/classes/Main$1.classbin0 -> 757 bytes
-rw-r--r--test/022-interface/classes/Main.classbin0 -> 1307 bytes
-rw-r--r--test/022-interface/classes/ObjectOverridingInterface.classbin0 -> 227 bytes
-rw-r--r--test/022-interface/expected.txt1
-rw-r--r--test/022-interface/src/Main.java41
-rw-r--r--test/022-interface/src/ObjectOverridingInterface.java23
13 files changed, 88 insertions, 1 deletions
diff --git a/test/022-interface/build b/test/022-interface/build
new file mode 100644
index 0000000..37da755
--- /dev/null
+++ b/test/022-interface/build
@@ -0,0 +1,24 @@
+#!/bin/bash
+#
+# Copyright (C) 2012 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Stop if something fails.
+set -e
+
+# Use classes that are compiled with ecj that exposes an invokeinterface
+# issue when interfaces override methods in Object
+dx --debug --dex --dump-to=classes.lst --output=classes.dex classes
+zip ${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME.jar classes.dex
+dex2oat --boot-image=${ANDROID_PRODUCT_OUT}/data/art-test/core.art --dex-file=${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME.jar --oat-file=${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME.oat
diff --git a/test/022-interface/classes/Iface1.class b/test/022-interface/classes/Iface1.class
new file mode 100644
index 0000000..d11704c
--- /dev/null
+++ b/test/022-interface/classes/Iface1.class
Binary files differ
diff --git a/test/022-interface/classes/Iface2.class b/test/022-interface/classes/Iface2.class
new file mode 100644
index 0000000..6160a61
--- /dev/null
+++ b/test/022-interface/classes/Iface2.class
Binary files differ
diff --git a/test/022-interface/classes/Iface2Sub1.class b/test/022-interface/classes/Iface2Sub1.class
new file mode 100644
index 0000000..6d3b8d2
--- /dev/null
+++ b/test/022-interface/classes/Iface2Sub1.class
Binary files differ
diff --git a/test/022-interface/classes/ImplA.class b/test/022-interface/classes/ImplA.class
new file mode 100644
index 0000000..de175bf
--- /dev/null
+++ b/test/022-interface/classes/ImplA.class
Binary files differ
diff --git a/test/022-interface/classes/ImplB.class b/test/022-interface/classes/ImplB.class
new file mode 100644
index 0000000..951bebd
--- /dev/null
+++ b/test/022-interface/classes/ImplB.class
Binary files differ
diff --git a/test/022-interface/classes/ImplBSub.class b/test/022-interface/classes/ImplBSub.class
new file mode 100644
index 0000000..1c1dcfd
--- /dev/null
+++ b/test/022-interface/classes/ImplBSub.class
Binary files differ
diff --git a/test/022-interface/classes/Main$1.class b/test/022-interface/classes/Main$1.class
new file mode 100644
index 0000000..301dde0
--- /dev/null
+++ b/test/022-interface/classes/Main$1.class
Binary files differ
diff --git a/test/022-interface/classes/Main.class b/test/022-interface/classes/Main.class
new file mode 100644
index 0000000..d9f22f7
--- /dev/null
+++ b/test/022-interface/classes/Main.class
Binary files differ
diff --git a/test/022-interface/classes/ObjectOverridingInterface.class b/test/022-interface/classes/ObjectOverridingInterface.class
new file mode 100644
index 0000000..e9e8db5
--- /dev/null
+++ b/test/022-interface/classes/ObjectOverridingInterface.class
Binary files differ
diff --git a/test/022-interface/expected.txt b/test/022-interface/expected.txt
index 1212663..e627b69 100644
--- a/test/022-interface/expected.txt
+++ b/test/022-interface/expected.txt
@@ -1,2 +1,3 @@
ImplBSub intf: 205
ImplA: 7
+objectOverrideTests: SUCCESS
diff --git a/test/022-interface/src/Main.java b/test/022-interface/src/Main.java
index 9151e89..3c3c21a 100644
--- a/test/022-interface/src/Main.java
+++ b/test/022-interface/src/Main.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2007 The Android Open Source Project
+ * Copyright (C) 2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -33,5 +33,44 @@ public class Main {
result = faceObj2.iFunc2(5);
System.out.print("ImplA: ");
System.out.println(result);
+
+ objectOverrideTests();
+ }
+
+ static void check(boolean z) {
+ if (!z) {
+ throw new AssertionError();
}
+ }
+
+ static void objectOverrideTests() {
+ ObjectOverridingInterface o =
+ new ObjectOverridingInterface() {
+ public boolean equals(Object o) {
+ return true;
+ }
+ public int hashCode() {
+ return 0xC001D00D;
+ }
+ public String toString() {
+ return "Mallet's Mallet";
+ }
+ public int length() {
+ return toString().length();
+ }
+ public char charAt(int i) {
+ return toString().charAt(i);
+ }
+ public CharSequence subSequence(int s, int e) {
+ return toString().subSequence(s, e);
+ }
+ };
+ doObjectOverrideTests(o);
+ }
+ static void doObjectOverrideTests(ObjectOverridingInterface o) {
+ check(o.equals(null));
+ check(o.hashCode() == 0xC001D00D);
+ check(o.toString().equals("Mallet's Mallet"));
+ System.out.println("objectOverrideTests: SUCCESS");
+ }
}
diff --git a/test/022-interface/src/ObjectOverridingInterface.java b/test/022-interface/src/ObjectOverridingInterface.java
new file mode 100644
index 0000000..a44cdf5
--- /dev/null
+++ b/test/022-interface/src/ObjectOverridingInterface.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Interface methods that override those of Object, the parent of all interfaces
+ */
+public interface ObjectOverridingInterface extends CharSequence {
+ public boolean equals(Object o);
+ public int hashCode();
+}