summaryrefslogtreecommitdiffstats
path: root/tests/SoundTriggerTests
diff options
context:
space:
mode:
authorSandeep Siddhartha <sansid@google.com>2014-07-25 18:37:29 -0700
committerSandeep Siddhartha <sansid@google.com>2014-07-28 11:10:32 -0700
commit39c12fab49075b715c253c68c84b5c10c3150197 (patch)
treebcb5cff2b35c50575cb8e4b60ea35e8a635b16e7 /tests/SoundTriggerTests
parente0b8c378b7b4881396346116a9c1d633d1a4eb9f (diff)
downloadframeworks_base-39c12fab49075b715c253c68c84b5c10c3150197.zip
frameworks_base-39c12fab49075b715c253c68c84b5c10c3150197.tar.gz
frameworks_base-39c12fab49075b715c253c68c84b5c10c3150197.tar.bz2
Use blob (shared memory) for large data in sound model/recognition event/config
Also add a missing null check in writeBlob Bug: 16516353 Change-Id: Ie702f8daae541cab7c2cee6e13d49e7fc84c84e1
Diffstat (limited to 'tests/SoundTriggerTests')
-rw-r--r--tests/SoundTriggerTests/Android.mk27
-rw-r--r--tests/SoundTriggerTests/AndroidManifest.xml25
-rw-r--r--tests/SoundTriggerTests/src/android/hardware/soundtrigger/SoundTriggerTest.java256
3 files changed, 308 insertions, 0 deletions
diff --git a/tests/SoundTriggerTests/Android.mk b/tests/SoundTriggerTests/Android.mk
new file mode 100644
index 0000000..407a9d7
--- /dev/null
+++ b/tests/SoundTriggerTests/Android.mk
@@ -0,0 +1,27 @@
+#
+# Copyright (C) 2014 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.
+#
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := tests
+
+LOCAL_SRC_FILES := $(call all-subdir-java-files)
+
+LOCAL_JAVA_LIBRARIES := android.test.runner
+
+LOCAL_PACKAGE_NAME := SoundTriggerTests
+
+include $(BUILD_PACKAGE)
diff --git a/tests/SoundTriggerTests/AndroidManifest.xml b/tests/SoundTriggerTests/AndroidManifest.xml
new file mode 100644
index 0000000..5e5a108
--- /dev/null
+++ b/tests/SoundTriggerTests/AndroidManifest.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="android.hardware.soundtrigger">
+ <application>
+ <uses-library android:name="android.test.runner" />
+ </application>
+
+ <instrumentation android:name="android.test.InstrumentationTestRunner"
+ android:targetPackage="android.hardware.soundtrigger"
+ android:label="Tests for android.hardware.soundtrigger" />
+</manifest>
diff --git a/tests/SoundTriggerTests/src/android/hardware/soundtrigger/SoundTriggerTest.java b/tests/SoundTriggerTests/src/android/hardware/soundtrigger/SoundTriggerTest.java
new file mode 100644
index 0000000..5d32c66
--- /dev/null
+++ b/tests/SoundTriggerTests/src/android/hardware/soundtrigger/SoundTriggerTest.java
@@ -0,0 +1,256 @@
+/*
+ * Copyright (C) 2014 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 android.hardware.soundtrigger;
+
+import android.hardware.soundtrigger.SoundTrigger;
+import android.hardware.soundtrigger.SoundTrigger.Keyphrase;
+import android.hardware.soundtrigger.SoundTrigger.KeyphraseSoundModel;
+import android.hardware.soundtrigger.SoundTrigger.RecognitionEvent;
+import android.os.Parcel;
+import android.test.InstrumentationTestCase;
+import android.test.suitebuilder.annotation.LargeTest;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import java.util.Arrays;
+import java.util.Random;
+import java.util.UUID;
+
+public class SoundTriggerTest extends InstrumentationTestCase {
+ private Random mRandom = new Random();
+
+ @SmallTest
+ public void testKeyphraseParcelUnparcel_noUsers() throws Exception {
+ Keyphrase keyphrase = new Keyphrase(1, 0, "en-US", "hello", null);
+
+ // Write to a parcel
+ Parcel parcel = Parcel.obtain();
+ keyphrase.writeToParcel(parcel, 0);
+
+ // Read from it
+ parcel.setDataPosition(0);
+ Keyphrase unparceled = Keyphrase.CREATOR.createFromParcel(parcel);
+
+ // Verify that they are the same
+ assertEquals(keyphrase.id, unparceled.id);
+ assertNull(unparceled.users);
+ assertEquals(keyphrase.locale, unparceled.locale);
+ assertEquals(keyphrase.text, unparceled.text);
+ }
+
+ @SmallTest
+ public void testKeyphraseParcelUnparcel_zeroUsers() throws Exception {
+ Keyphrase keyphrase = new Keyphrase(1, 0, "en-US", "hello", new int[0]);
+
+ // Write to a parcel
+ Parcel parcel = Parcel.obtain();
+ keyphrase.writeToParcel(parcel, 0);
+
+ // Read from it
+ parcel.setDataPosition(0);
+ Keyphrase unparceled = Keyphrase.CREATOR.createFromParcel(parcel);
+
+ // Verify that they are the same
+ assertEquals(keyphrase.id, unparceled.id);
+ assertTrue(Arrays.equals(keyphrase.users, unparceled.users));
+ assertEquals(keyphrase.locale, unparceled.locale);
+ assertEquals(keyphrase.text, unparceled.text);
+ }
+
+ @SmallTest
+ public void testKeyphraseParcelUnparcel_pos() throws Exception {
+ Keyphrase keyphrase = new Keyphrase(1, 0, "en-US", "hello", new int[] {1, 2, 3, 4, 5});
+
+ // Write to a parcel
+ Parcel parcel = Parcel.obtain();
+ keyphrase.writeToParcel(parcel, 0);
+
+ // Read from it
+ parcel.setDataPosition(0);
+ Keyphrase unparceled = Keyphrase.CREATOR.createFromParcel(parcel);
+
+ // Verify that they are the same
+ assertEquals(keyphrase.id, unparceled.id);
+ assertTrue(Arrays.equals(keyphrase.users, unparceled.users));
+ assertEquals(keyphrase.locale, unparceled.locale);
+ assertEquals(keyphrase.text, unparceled.text);
+ }
+
+ @SmallTest
+ public void testKeyphraseSoundModelParcelUnparcel_noData() throws Exception {
+ Keyphrase[] keyphrases = new Keyphrase[2];
+ keyphrases[0] = new Keyphrase(1, 0, "en-US", "hello", new int[] {0});
+ keyphrases[1] = new Keyphrase(2, 0, "fr-FR", "there", new int[] {1, 2});
+ KeyphraseSoundModel ksm = new KeyphraseSoundModel(UUID.randomUUID(), null, keyphrases);
+
+ // Write to a parcel
+ Parcel parcel = Parcel.obtain();
+ ksm.writeToParcel(parcel, 0);
+
+ // Read from it
+ parcel.setDataPosition(0);
+ KeyphraseSoundModel unparceled = KeyphraseSoundModel.CREATOR.createFromParcel(parcel);
+
+ // Verify that they are the same
+ assertEquals(ksm.uuid, unparceled.uuid);
+ assertNull(unparceled.data);
+ assertEquals(ksm.type, unparceled.type);
+ assertTrue(Arrays.equals(keyphrases, unparceled.keyphrases));
+ }
+
+ @SmallTest
+ public void testKeyphraseSoundModelParcelUnparcel_zeroData() throws Exception {
+ Keyphrase[] keyphrases = new Keyphrase[2];
+ keyphrases[0] = new Keyphrase(1, 0, "en-US", "hello", new int[] {0});
+ keyphrases[1] = new Keyphrase(2, 0, "fr-FR", "there", new int[] {1, 2});
+ KeyphraseSoundModel ksm = new KeyphraseSoundModel(UUID.randomUUID(), new byte[0],
+ keyphrases);
+
+ // Write to a parcel
+ Parcel parcel = Parcel.obtain();
+ ksm.writeToParcel(parcel, 0);
+
+ // Read from it
+ parcel.setDataPosition(0);
+ KeyphraseSoundModel unparceled = KeyphraseSoundModel.CREATOR.createFromParcel(parcel);
+
+ // Verify that they are the same
+ assertEquals(ksm.uuid, unparceled.uuid);
+ assertEquals(ksm.type, unparceled.type);
+ assertTrue(Arrays.equals(ksm.keyphrases, unparceled.keyphrases));
+ assertTrue(Arrays.equals(ksm.data, unparceled.data));
+ }
+
+ @SmallTest
+ public void testKeyphraseSoundModelParcelUnparcel_noKeyphrases() throws Exception {
+ byte[] data = new byte[10];
+ mRandom.nextBytes(data);
+ KeyphraseSoundModel ksm = new KeyphraseSoundModel(UUID.randomUUID(), data, null);
+
+ // Write to a parcel
+ Parcel parcel = Parcel.obtain();
+ ksm.writeToParcel(parcel, 0);
+
+ // Read from it
+ parcel.setDataPosition(0);
+ KeyphraseSoundModel unparceled = KeyphraseSoundModel.CREATOR.createFromParcel(parcel);
+
+ // Verify that they are the same
+ assertEquals(ksm.uuid, unparceled.uuid);
+ assertEquals(ksm.type, unparceled.type);
+ assertNull(unparceled.keyphrases);
+ assertTrue(Arrays.equals(ksm.data, unparceled.data));
+ }
+
+ @SmallTest
+ public void testKeyphraseSoundModelParcelUnparcel_zeroKeyphrases() throws Exception {
+ byte[] data = new byte[10];
+ mRandom.nextBytes(data);
+ KeyphraseSoundModel ksm = new KeyphraseSoundModel(UUID.randomUUID(), data,
+ new Keyphrase[0]);
+
+ // Write to a parcel
+ Parcel parcel = Parcel.obtain();
+ ksm.writeToParcel(parcel, 0);
+
+ // Read from it
+ parcel.setDataPosition(0);
+ KeyphraseSoundModel unparceled = KeyphraseSoundModel.CREATOR.createFromParcel(parcel);
+
+ // Verify that they are the same
+ assertEquals(ksm.uuid, unparceled.uuid);
+ assertEquals(ksm.type, unparceled.type);
+ assertTrue(Arrays.equals(ksm.keyphrases, unparceled.keyphrases));
+ assertTrue(Arrays.equals(ksm.data, unparceled.data));
+ }
+
+ @LargeTest
+ public void testKeyphraseSoundModelParcelUnparcel_largeData() throws Exception {
+ Keyphrase[] keyphrases = new Keyphrase[2];
+ keyphrases[0] = new Keyphrase(1, 0, "en-US", "hello", new int[] {0});
+ keyphrases[1] = new Keyphrase(2, 0, "fr-FR", "there", new int[] {1, 2});
+ byte[] data = new byte[200 * 1024];
+ mRandom.nextBytes(data);
+ KeyphraseSoundModel ksm = new KeyphraseSoundModel(UUID.randomUUID(), data, keyphrases);
+
+ // Write to a parcel
+ Parcel parcel = Parcel.obtain();
+ ksm.writeToParcel(parcel, 0);
+
+ // Read from it
+ parcel.setDataPosition(0);
+ KeyphraseSoundModel unparceled = KeyphraseSoundModel.CREATOR.createFromParcel(parcel);
+
+ // Verify that they are the same
+ assertEquals(ksm.uuid, unparceled.uuid);
+ assertEquals(ksm.type, unparceled.type);
+ assertTrue(Arrays.equals(ksm.data, unparceled.data));
+ assertTrue(Arrays.equals(ksm.keyphrases, unparceled.keyphrases));
+ }
+
+ @SmallTest
+ public void testRecognitionEventParcelUnparcel_noData() throws Exception {
+ RecognitionEvent re = new RecognitionEvent(SoundTrigger.RECOGNITION_STATUS_SUCCESS, 1,
+ true, 2, 3, 4, null);
+
+ // Write to a parcel
+ Parcel parcel = Parcel.obtain();
+ re.writeToParcel(parcel, 0);
+
+ // Read from it
+ parcel.setDataPosition(0);
+ RecognitionEvent unparceled = RecognitionEvent.CREATOR.createFromParcel(parcel);
+
+ // Verify that they are the same
+ assertEquals(re, unparceled);
+ }
+
+ @SmallTest
+ public void testRecognitionEventParcelUnparcel_zeroData() throws Exception {
+ RecognitionEvent re = new RecognitionEvent(SoundTrigger.RECOGNITION_STATUS_FAILURE, 1,
+ true, 2, 3, 4, new byte[1]);
+
+ // Write to a parcel
+ Parcel parcel = Parcel.obtain();
+ re.writeToParcel(parcel, 0);
+
+ // Read from it
+ parcel.setDataPosition(0);
+ RecognitionEvent unparceled = RecognitionEvent.CREATOR.createFromParcel(parcel);
+
+ // Verify that they are the same
+ assertEquals(re, unparceled);
+ }
+
+ @SmallTest
+ public void testRecognitionEventParcelUnparcel_largeData() throws Exception {
+ byte[] data = new byte[200 * 1024];
+ mRandom.nextBytes(data);
+ RecognitionEvent re = new RecognitionEvent(SoundTrigger.RECOGNITION_STATUS_ABORT, 1,
+ false, 2, 3, 4, data);
+
+ // Write to a parcel
+ Parcel parcel = Parcel.obtain();
+ re.writeToParcel(parcel, 0);
+
+ // Read from it
+ parcel.setDataPosition(0);
+ RecognitionEvent unparceled = RecognitionEvent.CREATOR.createFromParcel(parcel);
+
+ // Verify that they are the same
+ assertEquals(re, unparceled);
+ }
+}