Create test for CategoryManager.
- Move SettingsLibTests to tests/integ - Create a new robotests directory for SettingsLib. - Add test cases for CategoryManager#backwardCompatCleanupForCategory Bug: 32382487 Test: make RunSettingsLibRoboTests Change-Id: I7ef5921ce8c47a3e1e7209be1abc97ea549a2378
This commit is contained in:
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2015 The Android Open Source Project
|
||||
# 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.
|
||||
@ -15,20 +15,5 @@
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_MODULE_TAGS := tests
|
||||
LOCAL_CERTIFICATE := platform
|
||||
|
||||
LOCAL_SRC_FILES := $(call all-java-files-under, src)
|
||||
|
||||
LOCAL_JAVA_LIBRARIES := android.test.runner telephony-common
|
||||
|
||||
LOCAL_PACKAGE_NAME := SettingsLibTests
|
||||
|
||||
LOCAL_STATIC_JAVA_LIBRARIES := \
|
||||
android-support-test \
|
||||
espresso-core \
|
||||
mockito-target-minus-junit4
|
||||
|
||||
include frameworks/base/packages/SettingsLib/common.mk
|
||||
|
||||
include $(BUILD_PACKAGE)
|
||||
# Include all makefiles in subdirectories
|
||||
include $(call all-makefiles-under,$(LOCAL_PATH))
|
||||
|
34
packages/SettingsLib/tests/integ/Android.mk
Normal file
34
packages/SettingsLib/tests/integ/Android.mk
Normal file
@ -0,0 +1,34 @@
|
||||
# Copyright (C) 2015 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_CERTIFICATE := platform
|
||||
|
||||
LOCAL_SRC_FILES := $(call all-java-files-under, src)
|
||||
|
||||
LOCAL_JAVA_LIBRARIES := android.test.runner telephony-common
|
||||
|
||||
LOCAL_PACKAGE_NAME := SettingsLibTests
|
||||
|
||||
LOCAL_STATIC_JAVA_LIBRARIES := \
|
||||
android-support-test \
|
||||
espresso-core \
|
||||
mockito-target-minus-junit4
|
||||
|
||||
include frameworks/base/packages/SettingsLib/common.mk
|
||||
|
||||
include $(BUILD_PACKAGE)
|
82
packages/SettingsLib/tests/robotests/Android.mk
Normal file
82
packages/SettingsLib/tests/robotests/Android.mk
Normal file
@ -0,0 +1,82 @@
|
||||
# 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.
|
||||
|
||||
|
||||
############################################################
|
||||
# SettingsLib Shell app just for Robolectric test target. #
|
||||
############################################################
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_PACKAGE_NAME := SettingsLibShell
|
||||
LOCAL_MODULE_TAGS := optional
|
||||
|
||||
LOCAL_PRIVILEGED_MODULE := true
|
||||
|
||||
LOCAL_JAVA_LIBRARIES := \
|
||||
junit4-target \
|
||||
platform-robolectric-prebuilt
|
||||
|
||||
LOCAL_STATIC_JAVA_LIBRARIES := \
|
||||
platform-system-robolectric \
|
||||
truth-prebuilt
|
||||
|
||||
LOCAL_AAPT_FLAGS := --auto-add-overlay \
|
||||
|
||||
LOCAL_SRC_FILES := \
|
||||
$(call all-java-files-under, src)
|
||||
|
||||
include frameworks/base/packages/SettingsLib/common.mk
|
||||
|
||||
include $(BUILD_PACKAGE)
|
||||
|
||||
#############################################
|
||||
# SettingsLib Robolectric test target. #
|
||||
#############################################
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_SRC_FILES := $(call all-java-files-under, src)
|
||||
|
||||
# Include the testing libraries (JUnit4 + Robolectric libs).
|
||||
LOCAL_STATIC_JAVA_LIBRARIES := \
|
||||
platform-system-robolectric \
|
||||
truth-prebuilt
|
||||
|
||||
LOCAL_JAVA_LIBRARIES := \
|
||||
junit4-target \
|
||||
platform-robolectric-prebuilt
|
||||
|
||||
LOCAL_INSTRUMENTATION_FOR := SettingsLibShell
|
||||
LOCAL_MODULE := SettingsLibRoboTests
|
||||
|
||||
LOCAL_MODULE_TAGS := optional
|
||||
|
||||
include $(BUILD_STATIC_JAVA_LIBRARY)
|
||||
|
||||
#############################################################
|
||||
# SettingsLib runner target to run the previous target. #
|
||||
#############################################################
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_MODULE := RunSettingsLibRoboTests
|
||||
|
||||
LOCAL_SDK_VERSION := current
|
||||
|
||||
LOCAL_STATIC_JAVA_LIBRARIES := \
|
||||
SettingsLibRoboTests
|
||||
|
||||
LOCAL_TEST_PACKAGE := SettingsLibShell
|
||||
|
||||
include prebuilts/misc/common/robolectric/run_robotests.mk
|
24
packages/SettingsLib/tests/robotests/AndroidManifest.xml
Normal file
24
packages/SettingsLib/tests/robotests/AndroidManifest.xml
Normal file
@ -0,0 +1,24 @@
|
||||
<?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"
|
||||
coreApp="true"
|
||||
package="com.android.settingslib.robotests">
|
||||
|
||||
<application/>
|
||||
|
||||
</manifest>
|
@ -0,0 +1,23 @@
|
||||
/*
|
||||
* 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.settingslib;
|
||||
|
||||
public class TestConfig {
|
||||
public static final int SDK_VERSION = 23;
|
||||
public static final String MANIFEST_PATH =
|
||||
"frameworks/base/packages/SettingsLib/robotests/AndroidManifest.xml";
|
||||
}
|
@ -0,0 +1,119 @@
|
||||
/*
|
||||
* 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.settingslib.drawer;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.Pair;
|
||||
|
||||
import com.android.settingslib.TestConfig;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.annotation.Config;
|
||||
import org.robolectric.shadows.ShadowApplication;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
||||
public class CategoryManagerTest {
|
||||
|
||||
private Context mContext;
|
||||
private CategoryManager mCategoryManager;
|
||||
private Map<Pair<String, String>, Tile> mTileByComponentCache;
|
||||
private Map<String, DashboardCategory> mCategoryByKeyMap;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
mContext = ShadowApplication.getInstance().getApplicationContext();
|
||||
mTileByComponentCache = new HashMap<>();
|
||||
mCategoryByKeyMap = new HashMap<>();
|
||||
mCategoryManager = CategoryManager.get(mContext);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getInstance_shouldBeSingleton() {
|
||||
assertThat(mCategoryManager).isSameAs(CategoryManager.get(mContext));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void backwardCompatCleanupForCategory_shouldNotChangeCategoryForNewKeys() {
|
||||
final Tile tile1 = new Tile();
|
||||
final Tile tile2 = new Tile();
|
||||
tile1.category = CategoryKey.CATEGORY_ACCOUNT;
|
||||
tile2.category = CategoryKey.CATEGORY_ACCOUNT;
|
||||
final DashboardCategory category = new DashboardCategory();
|
||||
category.addTile(tile1);
|
||||
category.addTile(tile2);
|
||||
mCategoryByKeyMap.put(CategoryKey.CATEGORY_ACCOUNT, category);
|
||||
mTileByComponentCache.put(new Pair<>("PACKAGE", "1"), tile1);
|
||||
mTileByComponentCache.put(new Pair<>("PACKAGE", "2"), tile2);
|
||||
|
||||
mCategoryManager.backwardCompatCleanupForCategory(mTileByComponentCache, mCategoryByKeyMap);
|
||||
|
||||
assertThat(mCategoryByKeyMap.size()).isEqualTo(1);
|
||||
assertThat(mCategoryByKeyMap.get(CategoryKey.CATEGORY_ACCOUNT)).isNotNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void backwardCompatCleanupForCategory_shouldNotChangeCategoryForMixedKeys() {
|
||||
final Tile tile1 = new Tile();
|
||||
final Tile tile2 = new Tile();
|
||||
final String oldCategory = "com.android.settings.category.wireless";
|
||||
tile1.category = CategoryKey.CATEGORY_ACCOUNT;
|
||||
tile2.category = oldCategory;
|
||||
final DashboardCategory category1 = new DashboardCategory();
|
||||
category1.addTile(tile1);
|
||||
final DashboardCategory category2 = new DashboardCategory();
|
||||
category2.addTile(tile2);
|
||||
mCategoryByKeyMap.put(CategoryKey.CATEGORY_ACCOUNT, category1);
|
||||
mCategoryByKeyMap.put(oldCategory, category2);
|
||||
mTileByComponentCache.put(new Pair<>("PACKAGE", "CLASS1"), tile1);
|
||||
mTileByComponentCache.put(new Pair<>("PACKAGE", "CLASS2"), tile2);
|
||||
|
||||
mCategoryManager.backwardCompatCleanupForCategory(mTileByComponentCache, mCategoryByKeyMap);
|
||||
|
||||
assertThat(mCategoryByKeyMap.size()).isEqualTo(2);
|
||||
assertThat(mCategoryByKeyMap.get(CategoryKey.CATEGORY_ACCOUNT).tiles.size()).isEqualTo(1);
|
||||
assertThat(mCategoryByKeyMap.get(oldCategory).tiles.size()).isEqualTo(1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void backwardCompatCleanupForCategory_shouldChangeCategoryForOldKeys() {
|
||||
final Tile tile1 = new Tile();
|
||||
final String oldCategory = "com.android.settings.category.wireless";
|
||||
tile1.category = oldCategory;
|
||||
final DashboardCategory category1 = new DashboardCategory();
|
||||
category1.addTile(tile1);
|
||||
mCategoryByKeyMap.put(oldCategory, category1);
|
||||
mTileByComponentCache.put(new Pair<>("PACKAGE", "CLASS1"), tile1);
|
||||
|
||||
mCategoryManager.backwardCompatCleanupForCategory(mTileByComponentCache, mCategoryByKeyMap);
|
||||
|
||||
// Added 1 more category to category map.
|
||||
assertThat(mCategoryByKeyMap.size()).isEqualTo(2);
|
||||
// The new category map has CATEGORY_NETWORK type now, which contains 1 tile.
|
||||
assertThat(mCategoryByKeyMap.get(CategoryKey.CATEGORY_NETWORK).tiles.size()).isEqualTo(1);
|
||||
// Old category still exists.
|
||||
assertThat(mCategoryByKeyMap.get(oldCategory).tiles.size()).isEqualTo(1);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user