summaryrefslogtreecommitdiffstats
path: root/tests/src/com/android/browser/JNIBindingsTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src/com/android/browser/JNIBindingsTest.java')
-rw-r--r--tests/src/com/android/browser/JNIBindingsTest.java267
1 files changed, 267 insertions, 0 deletions
diff --git a/tests/src/com/android/browser/JNIBindingsTest.java b/tests/src/com/android/browser/JNIBindingsTest.java
new file mode 100644
index 00000000..d2220f6f
--- /dev/null
+++ b/tests/src/com/android/browser/JNIBindingsTest.java
@@ -0,0 +1,267 @@
+/*
+ * Copyright (C) 2010 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.
+ */
+
+package com.android.browser;
+
+import android.test.AndroidTestCase;
+import android.util.Log;
+
+import java.util.Arrays;
+import junit.framework.AssertionFailedError;
+
+public class JNIBindingsTest extends AndroidTestCase {
+
+ private final static String LOGTAG = "JNIBindingsTest";
+ private JNIBindingsTestApp mTestApp;
+
+ public int mInt = 123;
+ public String mString = "Hello World";
+
+ public JNIBindingsTest(JNIBindingsTestApp testApp) {
+ mTestApp = testApp;
+ }
+
+ public void testComplete() {
+ Log.v(LOGTAG, "Completing the test.");
+ mTestApp.testComplete();
+ }
+
+ public void printAssertionFailed(AssertionFailedError e) {
+ Log.e(LOGTAG, "");
+ Log.e(LOGTAG, "*** ASSERTION FAILED: " + e.getMessage());
+ Log.e(LOGTAG, "*** Stack trace:");
+ StackTraceElement[] trace = e.getStackTrace();
+ for(StackTraceElement elem : trace) {
+ Log.e(LOGTAG, "***\t" + elem.toString());
+ }
+ Log.e(LOGTAG, "");
+ }
+
+ public boolean testPrimitiveTypes(byte byteParam, char charParam, double doubleParam,
+ float floatParam, int intParam, long longParam, short shortParam,
+ boolean booleanParam) {
+ byte expectedByteParam = 100;
+ char expectedCharParam = 'c';
+ double expectedDoubleParam = 123.34567890;
+ float expectedFloatParam = 456.789f;
+ int expectedIntParam = 1234567;
+ long expectedLongParam = 1234567890L;
+ short expectedShortParam = 6000;
+ boolean expectedBooleanParam = true;
+
+ try {
+ assertEquals(expectedByteParam, byteParam);
+
+ // EMULATE_JSC_BINDINGS: JSC does not pass chars correctly
+ // assertEquals(expectedCharParam, charParam);
+
+ assertEquals(expectedDoubleParam, doubleParam);
+ assertEquals(expectedFloatParam, floatParam);
+ assertEquals(expectedIntParam, intParam);
+ assertEquals(expectedLongParam, longParam);
+ assertEquals(expectedShortParam, shortParam);
+ assertEquals(expectedBooleanParam, booleanParam);
+ } catch (AssertionFailedError e) {
+ printAssertionFailed(e);
+ return false;
+ }
+ return true;
+ }
+
+ public boolean testObjectTypes(String stringParam, String emptyString, Object objectParam,
+ Object emptyObject) {
+ String expectedString = "Foo";
+ String expectedEmptyString = "";
+
+ try {
+ assertNotNull(stringParam);
+ assertNotNull(emptyString);
+ assertEquals(expectedString, stringParam);
+ assertEquals(expectedEmptyString, emptyString);
+ assertNull(objectParam);
+ assertNull(emptyObject);
+ } catch (AssertionFailedError e) {
+ printAssertionFailed(e);
+ return false;
+ }
+ return true;
+ }
+
+ public boolean testArray(byte[] byteArray, char[] charArray, double[] doubleArray,
+ float[] floatArray, int[] intArray, long[] longArray, short[] shortArray,
+ boolean[] booleanArray) {
+ byte[] expectedByteArray = { 1,2,3};
+ char[] expectedCharArray = {'d', 'o', 'g'};
+ double[] expectedDoubleArray = {1.2,2.3,3.4};
+ float[] expectedFloatArray = {4.5F,5.6F,6.7F};
+ int[] expectedIntArray = {1,2,3};
+ long[] expectedLongArray = {4L,5L,6L};
+ short[] expectedShortArray = {7,8,9};
+ boolean[] expectedBooleanArray = {true, false};
+
+ try {
+ assertNotNull(byteArray);
+ assertNotNull(charArray);
+ assertNotNull(doubleArray);
+ assertNotNull(floatArray);
+ assertNotNull(intArray);
+ assertNotNull(longArray);
+ assertNotNull(shortArray);
+ assertNotNull(booleanArray);
+ assertEquals(Arrays.toString(expectedByteArray), Arrays.toString(byteArray));
+ assertEquals(Arrays.toString(expectedCharArray), Arrays.toString(charArray));
+ assertEquals(Arrays.toString(expectedDoubleArray), Arrays.toString(doubleArray));
+ assertEquals(Arrays.toString(expectedFloatArray), Arrays.toString(floatArray));
+ assertEquals(Arrays.toString(expectedIntArray), Arrays.toString(intArray));
+ assertEquals(Arrays.toString(expectedLongArray), Arrays.toString(longArray));
+ assertEquals(Arrays.toString(expectedShortArray), Arrays.toString(shortArray));
+ assertEquals(Arrays.toString(expectedBooleanArray), Arrays.toString(booleanArray));
+ } catch (AssertionFailedError e) {
+ printAssertionFailed(e);
+ return false;
+ }
+ return true;
+ }
+
+ public boolean testObjectArray(String[] stringArray, Object[] emptyArray,
+ Object[] objectArray) {
+ String[] expectedStringArray = {"Hello", "World", "!"};
+ Object[] expectedObjectArray = {};
+
+ try {
+ assertNotNull(stringArray);
+
+ // EMULATE_JSC_BINDINGS JSC pass null for object arrays that are not strings.
+ // Should be an empty array?
+ assertNull(emptyArray);
+ assertNull(objectArray);
+
+ assertEquals(Arrays.toString(expectedStringArray), Arrays.toString(stringArray));
+
+ // EMULATE_JSC_BINDINGS
+ // assertEquals(Arrays.toString(expectedObjectArray), Arrays.toString(emptyArray));
+ // assertEquals(Arrays.toString(expectedObjectArray), Arrays.toString(objectArray));
+
+ } catch (AssertionFailedError e) {
+ printAssertionFailed(e);
+ return false;
+ }
+ return true;
+ }
+
+ public boolean testObjectMembers(boolean boolParam, byte byteParam, char charParam,
+ double doubleParam, float floatParam, int intParam, long longParam, short shortParam,
+ String stringParam, int[] intArrayParam, String[] stringArrayParam,
+ Object objectParam) {
+ boolean expectedBoolParam = true;
+ byte expectedByteParam = 101;
+ char expectedCharParam = 'd';
+ double expectedDoubleParam = 123.456;
+ float expectedFloatParam = 456.789F;
+ int expectedIntParam = 102;
+ long expectedLongParam = 103L;
+ short expectedShortParam = 104;
+ String expectedStringParam = "Hello World";
+ int[] expectedIntArray = {1,2,3};
+ String[] expectedStringArrayParam = {"foo", "bar", "baz"};
+
+ try {
+ assertEquals(expectedBoolParam, boolParam);
+ assertEquals(expectedByteParam, byteParam);
+
+ // EMULATE_JSC_BINDINGS: JSC does not pass chars correctly. (chars are strings in JS)
+ // assertEquals(expectedCharParam, charParam);
+
+ assertEquals(expectedDoubleParam, doubleParam);
+ assertEquals(expectedFloatParam, floatParam);
+ assertEquals(expectedIntParam, intParam);
+ assertEquals(expectedLongParam, longParam);
+ assertEquals(expectedShortParam, shortParam);
+ assertEquals(expectedStringParam, stringParam);
+ assertEquals(Arrays.toString(expectedIntArray), Arrays.toString(intArrayParam));
+ assertEquals(Arrays.toString(expectedStringArrayParam),
+ Arrays.toString(stringArrayParam));
+ assertNull(objectParam);
+ } catch (AssertionFailedError e) {
+ printAssertionFailed(e);
+ return false;
+ }
+ return true;
+ }
+
+ public boolean testJSPrimitivesToStringsInJava(String intParam, String nullParam,
+ String doubleParam, String booleanParam, String charParam,
+ String undefinedParam) {
+ String expectedIntParam = "123";
+ String expectedDoubleParam = "456.789";
+ String expectedBooleanParam = "true";
+ String expectedCharParam = "d";
+
+ // EMULATE_JSC_BINDINGS JSC passes "undefined" for undefined types. Should be null?
+ String expectedUndefinedParam = "undefined";
+
+ try {
+ assertNotNull(intParam);
+ assertNull(nullParam);
+ assertNotNull(doubleParam);
+ assertNotNull(booleanParam);
+ assertNotNull(charParam);
+
+ // EMULATE_JSC_BINDINGS JSC passes "undefined" for undefined types.
+ assertNotNull(undefinedParam);
+
+ assertEquals(expectedIntParam, intParam);
+ assertEquals(expectedDoubleParam, doubleParam);
+ assertEquals(expectedBooleanParam, booleanParam);
+ assertEquals(expectedCharParam, charParam);;
+
+ // EMULATE_JSC_BINDINGS JSC passes "undefined" for undefined types.
+ assertEquals(expectedUndefinedParam, undefinedParam);
+
+ } catch (AssertionFailedError e) {
+ printAssertionFailed(e);
+ return false;
+ }
+ return true;
+ }
+
+ public boolean returnBool() { return true; }
+ public byte returnByte() { return 1; }
+ public char returnChar() { return 'b'; }
+ public double returnDouble() { return 123.456; }
+ public float returnFloat() { return 456.789F; }
+ public int returnInt() { return 123; }
+ public long returnLong() { return 1234L; }
+ public short returnShort() { return 12345; }
+ public String returnString() { return "Hello World!"; }
+
+ public class TestObject {
+ public int x = 123;
+ public String s = "Hello World!";
+
+ public boolean aMethod() { return true; }
+ public String anotherMethod() { return "Hello World"; }
+ }
+
+ public TestObject returnObject() { return new TestObject(); }
+
+ public int[] returnArray() {
+ int[] array = {1,2,3,4,5};
+ return array;
+ }
+
+ public void returnVoid() { }
+}