From 33e300e32db2b94274d94295435e1ad4c9a8347e Mon Sep 17 00:00:00 2001 From: Adnan Begovic Date: Tue, 5 Jan 2016 15:47:15 -0800 Subject: [PATCH] cmsdk: Add example service test. Change-Id: I52972bc4d32505ba7fd2f7278efdb9441c39b82a --- .../internal/CMStatusBarManagerTest.java | 7 - tests/Android.mk | 2 +- .../CMStatusBarManagerServiceTest.java | 146 ++++++++++++++++++ 3 files changed, 147 insertions(+), 8 deletions(-) delete mode 100644 cm/lib/androidTest/java/org/cyanogenmod/platform/internal/CMStatusBarManagerTest.java create mode 100644 tests/src/org/cyanogenmod/platform/internal/CMStatusBarManagerServiceTest.java diff --git a/cm/lib/androidTest/java/org/cyanogenmod/platform/internal/CMStatusBarManagerTest.java b/cm/lib/androidTest/java/org/cyanogenmod/platform/internal/CMStatusBarManagerTest.java deleted file mode 100644 index bde226d..0000000 --- a/cm/lib/androidTest/java/org/cyanogenmod/platform/internal/CMStatusBarManagerTest.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.cyanogenmod.platform.internal; - -/** - * Created by Adnan on 4/30/15. - */ -public class CMStatusBarManagerTest { -} diff --git a/tests/Android.mk b/tests/Android.mk index e8a7383..3df66a3 100644 --- a/tests/Android.mk +++ b/tests/Android.mk @@ -19,7 +19,7 @@ include $(CLEAR_VARS) LOCAL_MODULE_TAGS := tests LOCAL_STATIC_JAVA_LIBRARIES := \ - org.cyanogenmod.platform.sdk + org.cyanogenmod.platform LOCAL_SRC_FILES := $(call all-subdir-java-files, src/) diff --git a/tests/src/org/cyanogenmod/platform/internal/CMStatusBarManagerServiceTest.java b/tests/src/org/cyanogenmod/platform/internal/CMStatusBarManagerServiceTest.java new file mode 100644 index 0000000..825b9b8 --- /dev/null +++ b/tests/src/org/cyanogenmod/platform/internal/CMStatusBarManagerServiceTest.java @@ -0,0 +1,146 @@ +/* + * Copyright (c) 2016 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.platform.internal; + +import android.os.RemoteException; +import android.os.UserHandle; +import android.test.AndroidTestCase; + +import android.test.suitebuilder.annotation.SmallTest; +import cyanogenmod.app.CMStatusBarManager; +import cyanogenmod.app.CustomTile; +import cyanogenmod.app.ICMStatusBarManager; + +/** + * Created by adnan on 1/5/16. + */ +public class CMStatusBarManagerServiceTest extends AndroidTestCase { + private ICMStatusBarManager mInternalServiceInterface; + + @Override + protected void setUp() throws Exception { + super.setUp(); + mInternalServiceInterface = CMStatusBarManager.getInstance(mContext).getService(); + } + + @SmallTest + public void testAddTileById() { + //Create placeholder tile + int resourceInt = org.cyanogenmod.tests.R.drawable.ic_launcher; + CustomTile customTile = new CustomTile.Builder(mContext) + .setIcon(resourceInt) + .build(); + + int[] idOut = new int[1]; + // Test adding a tile directly from the service interface. + try { + mInternalServiceInterface + .createCustomTileWithTag(mContext.getPackageName(), mContext.getPackageName(), + null, 1337, customTile, idOut, UserHandle.myUserId()); + } catch (RemoteException e) { + fail("Remote exception when adding a tile by id"); + } + } + + @SmallTest + public void testAddAndRemoveTileById() { + //Create placeholder tile + int resourceInt = org.cyanogenmod.tests.R.drawable.ic_launcher; + CustomTile customTile = new CustomTile.Builder(mContext) + .setIcon(resourceInt) + .build(); + + int[] idOut = new int[1]; + try { + // Test adding a tile directly from the service interface. + mInternalServiceInterface + .createCustomTileWithTag(mContext.getPackageName(), mContext.getPackageName(), + null, 1337, customTile, idOut, UserHandle.myUserId()); + } catch (RemoteException e) { + fail("Remote exception when adding a tile by id"); + } + + try { + mInternalServiceInterface + .removeCustomTileWithTag(mContext.getPackageName(), null, + 1337, UserHandle.myUserId()); + } catch (RemoteException e) { + fail("Remote exception when removing a tile by id"); + } + } + + @SmallTest + public void testAddTileByTag() { + //Create placeholder tile + int resourceInt = org.cyanogenmod.tests.R.drawable.ic_launcher; + CustomTile customTile = new CustomTile.Builder(mContext) + .setIcon(resourceInt) + .build(); + + int[] idOut = new int[1]; + try { + // Test adding a tile directly from the service interface. + mInternalServiceInterface + .createCustomTileWithTag(mContext.getPackageName(), mContext.getPackageName() + , "fake-tag", 0, customTile, idOut, UserHandle.myUserId()); + } catch (RemoteException e) { + fail("Remote exception when adding a tile by tag"); + } + } + + @SmallTest + public void testAddAndRemoveTileByTag() { + //Create placeholder tile + int resourceInt = org.cyanogenmod.tests.R.drawable.ic_launcher; + CustomTile customTile = new CustomTile.Builder(mContext) + .setIcon(resourceInt) + .build(); + + int[] idOut = new int[1]; + try { + // Test adding a tile directly from the service interface. + mInternalServiceInterface + .createCustomTileWithTag(mContext.getPackageName(), mContext.getPackageName(), + "fake-tag", 0, customTile, idOut, UserHandle.myUserId()); + } catch (RemoteException e) { + fail("Remote exception when adding a tile by tag"); + } + + try { + // Test removing tile directly from the service interface + mInternalServiceInterface + .removeCustomTileWithTag(mContext.getPackageName(), mContext.getPackageName(), + 0, UserHandle.myUserId()); + } catch (RemoteException e) { + fail("Remote exception when removing a tile by tag"); + } + } + + @SmallTest + public void testFakePackageThrowsSecurityExceptionOnRemove() { + try { + mInternalServiceInterface + .removeCustomTileWithTag("fack-package-throw", "fake-package-throw", + 0, UserHandle.myUserId()); + fail("Security Exception not thrown on fake package removing a tile"); + } catch (RemoteException e) { + fail("Remote exception when removing a tile by tag"); + } catch (SecurityException e) { + //Expected + } + } +}