aboutsummaryrefslogtreecommitdiffstats
path: root/tests/src
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src')
-rw-r--r--tests/src/com/android/inputmethod/keyboard/internal/MatrixUtilsTests.java84
-rw-r--r--tests/src/com/android/inputmethod/keyboard/internal/SmoothingUtilsTests.java45
2 files changed, 129 insertions, 0 deletions
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/MatrixUtilsTests.java b/tests/src/com/android/inputmethod/keyboard/internal/MatrixUtilsTests.java
new file mode 100644
index 000000000..e2a11ab99
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/internal/MatrixUtilsTests.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2013 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.inputmethod.keyboard.internal;
+
+import com.android.inputmethod.keyboard.internal.MatrixUtils.MatrixOperationFailedException;
+
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+@SmallTest
+public class MatrixUtilsTests extends AndroidTestCase {
+ // "run tests" -c com.android.inputmethod.keyboard.internal.MatrixUtilsTests
+ private static final boolean DEBUG = false;
+ private static final float EPSILON = 0.00001f;
+
+ private static void assertEqualsFloat(float f0, float f1) {
+ assertEqualsFloat(f0, f1, EPSILON);
+ }
+
+ /* package */ static void assertEqualsFloat(float f0, float f1, float error) {
+ assertTrue(Math.abs(f0 - f1) < error);
+ }
+
+ public void testMulti() {
+ final float[][] matrixA = {{1, 2}, {3, 4}};
+ final float[][] matrixB = {{5, 6}, {7, 8}};
+ final float[][] retval = new float[2][2];
+ try {
+ MatrixUtils.multiply(matrixA, matrixB, retval);
+ } catch (MatrixOperationFailedException e) {
+ assertTrue(false);
+ }
+ if (DEBUG) {
+ MatrixUtils.dump("multi", retval);
+ }
+ assertEqualsFloat(retval[0][0], 19);
+ assertEqualsFloat(retval[0][1], 22);
+ assertEqualsFloat(retval[1][0], 43);
+ assertEqualsFloat(retval[1][1], 50);
+ }
+
+ public void testInverse() {
+ final int N = 4;
+ final float[][] matrix =
+ {{1, 2, 3, 4}, {4, 0, 5, 6}, {6, 4, 2, 0}, {6, 4, 2, 1}};
+ final float[][] inverse = new float[N][N];
+ final float[][] tempMatrix = new float[N][N];
+ for (int i = 0; i < N; ++i) {
+ for (int j = 0; j < N; ++j) {
+ tempMatrix[i][j] = matrix[i][j];
+ }
+ }
+ final float[][] retval = new float[N][N];
+ try {
+ MatrixUtils.inverse(tempMatrix, inverse);
+ } catch (MatrixOperationFailedException e) {
+ assertTrue(false);
+ }
+ try {
+ MatrixUtils.multiply(matrix, inverse, retval);
+ } catch (MatrixOperationFailedException e) {
+ assertTrue(false);
+ }
+ for (int i = 0; i < N; ++i) {
+ for (int j = 0; j < N; ++j) {
+ assertEqualsFloat(((i == j) ? 1.0f : 0.0f), retval[i][j]);
+ }
+ }
+ }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/SmoothingUtilsTests.java b/tests/src/com/android/inputmethod/keyboard/internal/SmoothingUtilsTests.java
new file mode 100644
index 000000000..293741af2
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/internal/SmoothingUtilsTests.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2013 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.inputmethod.keyboard.internal;
+
+import com.android.inputmethod.keyboard.internal.MatrixUtils.MatrixOperationFailedException;
+
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+@SmallTest
+public class SmoothingUtilsTests extends AndroidTestCase {
+ // "run tests" -c com.android.inputmethod.keyboard.internal.SmoothingUtilsTests
+ private static final boolean DEBUG = false;
+
+ public void testGet3DParamaters() {
+ final float[] xs = new float[] {0, 1, 2, 3, 4};
+ final float[] ys = new float[] {1, 4, 15, 40, 85}; // y = x^3 + x^2 + x + 1
+ final float[][] retval = new float[4][1];
+ try {
+ SmoothingUtils.get3DParameters(xs, ys, retval);
+ if (DEBUG) {
+ MatrixUtils.dump("3d", retval);
+ }
+ for (int i = 0; i < 4; ++i) {
+ MatrixUtilsTests.assertEqualsFloat(retval[i][0], 1.0f, 0.001f);
+ }
+ } catch (MatrixOperationFailedException e) {
+ assertTrue(false);
+ }
+ }
+}