Adds testing framework to com.android.ims
Brad Ebinger [Wed, 21 Dec 2016 01:05:27 +0000 (17:05 -0800)]
Test: Adding
Change-Id: I8da86a5b9bc54cf56c95844d4845be38a61a9221

Android.mk
tests/Android.mk [new file with mode: 0644]
tests/AndroidManifest.xml [new file with mode: 0644]
tests/res/values/donottranslate_strings.xml [new file with mode: 0644]
tests/src/com/android/ims/ImsConfigTest.java [new file with mode: 0644]
tests/src/com/android/ims/ImsTestBase.java [new file with mode: 0644]

index 2242958..85b734a 100644 (file)
@@ -20,8 +20,6 @@ LOCAL_AIDL_INCLUDES := $(LOCAL_PATH)/src/java
 LOCAL_SRC_FILES := \
     $(call all-java-files-under, src/java)
 
-#LOCAL_JAVA_LIBRARIES := telephony-common
-
 LOCAL_MODULE_TAGS := optional
 LOCAL_MODULE := ims-common
 
diff --git a/tests/Android.mk b/tests/Android.mk
new file mode 100644 (file)
index 0000000..32acf23
--- /dev/null
@@ -0,0 +1,33 @@
+#
+# Copyright (C) 2016 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_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := ImsCommonTests
+LOCAL_CERTIFICATE := platform
+
+LOCAL_MODULE_TAGS := tests
+
+LOCAL_JAVA_LIBRARIES := ims-common android.test.runner
+
+LOCAL_STATIC_JAVA_LIBRARIES := \
+        android-support-test \
+        mockito-target-minus-junit4
+
+include $(BUILD_PACKAGE)
\ No newline at end of file
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
new file mode 100644 (file)
index 0000000..263b600
--- /dev/null
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2016 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="com.android.ims.tests">
+
+    <application android:label="@string/app_name">
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <!--
+        To run all tests:
+            adb shell am instrument -w com.android.ims.tests/android.support.test.runner.AndroidJUnitRunner
+
+        To run a single class test:
+            adb shell am instrument -e class com.android.ims.unit.FooUnitTest -w com.android.ims.tests/android.support.test.runner.AndroidJUnitRunner
+    -->
+    <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
+        android:targetPackage="com.android.ims.tests"
+        android:label="Ims Common Tests" />
+</manifest>
diff --git a/tests/res/values/donottranslate_strings.xml b/tests/res/values/donottranslate_strings.xml
new file mode 100644 (file)
index 0000000..64e5513
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2016 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
+  -->
+
+<resources>
+    <!-- Application label -->
+    <string name="app_name">ImsCommonTests</string>
+</resources>
diff --git a/tests/src/com/android/ims/ImsConfigTest.java b/tests/src/com/android/ims/ImsConfigTest.java
new file mode 100644 (file)
index 0000000..18d53b1
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2016 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.ims;
+
+import android.support.test.runner.AndroidJUnit4;
+
+import com.android.ims.internal.IImsConfig;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.verify;
+
+/**
+ * Unit Tests for ImsConfig
+ */
+@RunWith(AndroidJUnit4.class)
+public class ImsConfigTest extends ImsTestBase {
+
+    @Mock IImsConfig mMockImsConfigInterface;
+
+    ImsConfig mTestImsConfig;
+
+    @Before
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        mTestImsConfig = new ImsConfig(mMockImsConfigInterface, mContext);
+    }
+
+    @After
+    @Override
+    public void tearDown() throws Exception {
+        mTestImsConfig = null;
+        super.tearDown();
+    }
+
+    @Test
+    public void testImsConfigGetProvisionedValue() throws Exception {
+        int testItem = 0;
+
+        mTestImsConfig.getProvisionedValue(testItem);
+
+        verify(mMockImsConfigInterface).getProvisionedValue(eq(testItem));
+    }
+}
diff --git a/tests/src/com/android/ims/ImsTestBase.java b/tests/src/com/android/ims/ImsTestBase.java
new file mode 100644 (file)
index 0000000..a880e25
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2016 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.ims;
+
+import android.content.Context;
+import android.os.Handler;
+import android.os.Looper;
+import android.support.test.InstrumentationRegistry;
+
+import org.mockito.MockitoAnnotations;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Helper class to load Mockito Resources into a test.
+ */
+public class ImsTestBase {
+
+    protected Context mContext;
+
+    public void setUp() throws Exception {
+        mContext = InstrumentationRegistry.getTargetContext();
+        MockitoAnnotations.initMocks(this);
+        // Set up the looper if it does not exist on the test thread.
+        if (Looper.myLooper() == null) {
+            Looper.prepare();
+        }
+    }
+
+    public void tearDown() throws Exception {
+    }
+
+    protected final void waitForHandlerAction(Handler h, long timeoutMillis) {
+        waitForHandlerActionDelayed(h, timeoutMillis, 0 /*delayMs*/);
+    }
+
+    protected final void waitForHandlerActionDelayed(Handler h, long timeoutMillis, long delayMs) {
+        final CountDownLatch lock = new CountDownLatch(1);
+        h.postDelayed(lock::countDown, delayMs);
+        while (lock.getCount() > 0) {
+            try {
+                lock.await(timeoutMillis, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                // do nothing
+            }
+        }
+    }
+}
\ No newline at end of file