diff --git a/tests/Android.mk b/tests/Android.mk index db67c3a..d60a11d 100644 --- a/tests/Android.mk +++ b/tests/Android.mk @@ -25,7 +25,7 @@ LOCAL_SRC_FILES := $(call all-subdir-java-files) LOCAL_PACKAGE_NAME := CMPlatformTests LOCAL_CERTIFICATE := platform - +LOCAL_JAVA_LIBRARIES := android.test.runner LOCAL_PROGUARD_ENABLED := disabled include $(BUILD_PACKAGE) diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml index e58f59f..d275d4f 100644 --- a/tests/AndroidManifest.xml +++ b/tests/AndroidManifest.xml @@ -8,6 +8,7 @@ + @@ -32,4 +33,8 @@ + + diff --git a/tests/README.md b/tests/README.md new file mode 100644 index 0000000..a6e3b0c --- /dev/null +++ b/tests/README.md @@ -0,0 +1,7 @@ +## CM Platform SDK Tests +The tests package contains both functional manual tests as well as unit +tests which can be ran utilizing the InstrumentationTestRunner from android. + +To run the tests (on a live device): + + ```adb shell am instrument -w org.cyanogenmod.tests/android.test.InstrumentationTestRunner``` diff --git a/tests/src/org/cyanogenmod/tests/customtiles/unit/CMStatusBarManagerTest.java b/tests/src/org/cyanogenmod/tests/customtiles/unit/CMStatusBarManagerTest.java new file mode 100644 index 0000000..d208a1b --- /dev/null +++ b/tests/src/org/cyanogenmod/tests/customtiles/unit/CMStatusBarManagerTest.java @@ -0,0 +1,47 @@ +/** + * Copyright (c) 2015, The CyanogenMod 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 org.cyanogenmod.tests.customtiles.unit; + +import android.test.AndroidTestCase; +import android.test.suitebuilder.annotation.SmallTest; + +import cyanogenmod.app.CMStatusBarManager; +import cyanogenmod.app.ICMStatusBarManager; + +/** + * Created by adnan on 7/14/15. + */ +public class CMStatusBarManagerTest extends AndroidTestCase { + private CMStatusBarManager mCMStatusBarManager; + + @Override + protected void setUp() throws Exception { + super.setUp(); + mCMStatusBarManager = CMStatusBarManager.getInstance(mContext); + } + + @SmallTest + public void testManagerExists() { + assertNotNull(mCMStatusBarManager); + } + + @SmallTest + public void testManagerServiceIsAvailable() { + ICMStatusBarManager icmStatusBarManager = mCMStatusBarManager.getService(); + assertNotNull(icmStatusBarManager); + } +} diff --git a/tests/src/org/cyanogenmod/tests/customtiles/unit/CustomTileBuilderTest.java b/tests/src/org/cyanogenmod/tests/customtiles/unit/CustomTileBuilderTest.java new file mode 100644 index 0000000..7be857b --- /dev/null +++ b/tests/src/org/cyanogenmod/tests/customtiles/unit/CustomTileBuilderTest.java @@ -0,0 +1,181 @@ +/** + * Copyright (c) 2015, The CyanogenMod 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 org.cyanogenmod.tests.customtiles.unit; + +import android.app.PendingIntent; +import android.content.Intent; +import android.net.Uri; +import android.test.AndroidTestCase; +import android.test.suitebuilder.annotation.MediumTest; +import android.test.suitebuilder.annotation.SmallTest; +import cyanogenmod.app.CustomTile; +import org.cyanogenmod.tests.R; +import org.cyanogenmod.tests.customtiles.CMStatusBarTest; +import org.cyanogenmod.tests.customtiles.DummySettings; + +import java.util.ArrayList; + +/** + * Created by adnan on 7/14/15. + */ +public class CustomTileBuilderTest extends AndroidTestCase { + + @Override + protected void setUp() throws Exception { + super.setUp(); + } + + @SmallTest + public void testConstructor() { + new CustomTile.Builder(mContext); + } + + @SmallTest + public void testCustomTileBuilderOnClickIntent() { + Intent intent = new Intent(Intent.ACTION_DIAL); + PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, intent, 0); + CustomTile customTile = new CustomTile.Builder(mContext) + .setOnClickIntent(pendingIntent) + .build(); + assertNotNull(customTile.onClick); + assertEquals(pendingIntent, customTile.onClick); + } + + @SmallTest + public void testCustomTileBuilderOnSettingsClickIntent() { + Intent intent = new Intent(mContext, DummySettings.class); + CustomTile customTile = new CustomTile.Builder(mContext) + .setOnSettingsClickIntent(intent) + .build(); + assertNotNull(customTile.onSettingsClick); + assertEquals(intent, customTile.onSettingsClick); + } + + @SmallTest + public void testCustomTileBuilderOnClickUri() { + //Calling Mike Jones, WHO!? MIKE JONES. + Uri uri = Uri.parse("2813308004"); + CustomTile customTile = new CustomTile.Builder(mContext) + .setOnClickUri(uri) + .build(); + assertNotNull(uri); + assertEquals(uri, customTile.onClickUri); + } + + @SmallTest + public void testCustomTileBuilderLabel() { + String message = "Test label"; + CustomTile customTile = new CustomTile.Builder(mContext) + .setLabel(message).build(); + assertNotNull(customTile); + assertEquals(message, customTile.label); + } + + @SmallTest + public void testCustomTileBuilderContentDescription() { + String message = "Test content description"; + CustomTile customTile = new CustomTile.Builder(mContext) + .setContentDescription(message) + .build(); + assertNotNull(customTile); + assertEquals(message, customTile.contentDescription); + } + + @SmallTest + public void testCustomTileBuilderIconSet() { + int resourceInt = R.drawable.ic_launcher; + CustomTile customTile = new CustomTile.Builder(mContext) + .setIcon(resourceInt) + .build(); + assertNotNull(customTile.icon); + assertNotSame(customTile.icon, 0); + assertEquals(resourceInt, customTile.icon); + } + + @MediumTest + public void testCustomTileBuilderExpandedListStyleSet() { + PendingIntent intent = PendingIntent.getActivity(mContext, 0, + new Intent(mContext, CMStatusBarTest.class) + .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK), 0); + ArrayList expandedListItems = + new ArrayList(); + for (int i = 0; i < 100; i++) { + CustomTile.ExpandedListItem expandedListItem = + new CustomTile.ExpandedListItem(); + expandedListItem.setExpandedListItemDrawable(R.drawable.ic_launcher); + expandedListItem.setExpandedListItemTitle("Test: " + i); + expandedListItem.setExpandedListItemSummary("Test item summary " + i); + expandedListItem.setExpandedListItemOnClickIntent(intent); + expandedListItems.add(expandedListItem); + } + + CustomTile.ListExpandedStyle listExpandedStyle = + new CustomTile.ListExpandedStyle(); + listExpandedStyle.setListItems(expandedListItems); + CustomTile customTile = new CustomTile.Builder(mContext) + .setExpandedStyle(listExpandedStyle) + .build(); + + assertNotNull(customTile.expandedStyle); + assertEquals(listExpandedStyle, customTile.expandedStyle); + assertNotNull(customTile.expandedStyle.getExpandedItems()); + for (int j = 0; j < 100; j++) { + CustomTile.ExpandedItem itemExpected = expandedListItems.get(j); + CustomTile.ExpandedItem itemReal = customTile.expandedStyle.getExpandedItems()[j]; + assertEquals(itemExpected.onClickPendingIntent, itemReal.onClickPendingIntent); + assertEquals(itemExpected.itemDrawableResourceId, itemReal.itemDrawableResourceId); + assertEquals(itemExpected.itemTitle, itemReal.itemTitle); + assertEquals(itemExpected.itemSummary, itemReal.itemSummary); + } + } + + @MediumTest + public void testCustomTileBuilderExpandedGridStyleSet() { + PendingIntent intent = PendingIntent.getActivity(mContext, 0, + new Intent(mContext, CMStatusBarTest.class) + .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK), 0); + ArrayList expandedGridItems = + new ArrayList(); + for (int i = 0; i < 100; i++) { + CustomTile.ExpandedGridItem expandedGridItem = + new CustomTile.ExpandedGridItem(); + expandedGridItem.setExpandedGridItemDrawable(R.drawable.ic_launcher); + expandedGridItem.setExpandedGridItemTitle("Test: " + i); + expandedGridItem.setExpandedGridItemOnClickIntent(intent); + expandedGridItems.add(expandedGridItem); + } + + CustomTile.GridExpandedStyle gridExpandedStyle = + new CustomTile.GridExpandedStyle(); + gridExpandedStyle.setGridItems(expandedGridItems); + CustomTile customTile = new CustomTile.Builder(mContext) + .setExpandedStyle(gridExpandedStyle) + .build(); + + assertNotNull(customTile.expandedStyle); + assertEquals(gridExpandedStyle, customTile.expandedStyle); + assertNotNull(customTile.expandedStyle.getExpandedItems()); + for (int j = 0; j < 100; j++) { + CustomTile.ExpandedItem itemExpected = expandedGridItems.get(j); + CustomTile.ExpandedItem itemReal = customTile.expandedStyle.getExpandedItems()[j]; + assertEquals(itemExpected.onClickPendingIntent, itemReal.onClickPendingIntent); + assertEquals(itemExpected.itemDrawableResourceId, itemReal.itemDrawableResourceId); + assertEquals(itemExpected.itemTitle, itemReal.itemTitle); + assertEquals(itemExpected.itemSummary, itemReal.itemSummary); + } + } +}