/* * 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 com.android.server.notification; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import android.app.Notification; import android.os.UserHandle; import android.service.notification.StatusBarNotification; import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.SmallTest; import java.util.ArrayList; public class RankingHelperTest extends AndroidTestCase { @Mock NotificationUsageStats mUsageStats; private Notification mNotiGroupGSortA; private Notification mNotiGroupGSortB; private Notification mNotiNoGroup; private Notification mNotiNoGroup2; private Notification mNotiNoGroupSortA; private NotificationRecord mRecordGroupGSortA; private NotificationRecord mRecordGroupGSortB; private NotificationRecord mRecordNoGroup; private NotificationRecord mRecordNoGroup2; private NotificationRecord mRecordNoGroupSortA; private RankingHelper mHelper; @Override public void setUp() { MockitoAnnotations.initMocks(this); UserHandle user = UserHandle.ALL; mHelper = new RankingHelper(getContext(), null, mUsageStats, new String[0]); mNotiGroupGSortA = new Notification.Builder(getContext()) .setContentTitle("A") .setGroup("G") .setSortKey("A") .setWhen(1205) .build(); mRecordGroupGSortA = new NotificationRecord(new StatusBarNotification( "package", "package", 1, null, 0, 0, 0, mNotiGroupGSortA, user), 0); mNotiGroupGSortB = new Notification.Builder(getContext()) .setContentTitle("B") .setGroup("G") .setSortKey("B") .setWhen(1200) .build(); mRecordGroupGSortB = new NotificationRecord(new StatusBarNotification( "package", "package", 1, null, 0, 0, 0, mNotiGroupGSortB, user), 0); mNotiNoGroup = new Notification.Builder(getContext()) .setContentTitle("C") .setWhen(1201) .build(); mRecordNoGroup = new NotificationRecord(new StatusBarNotification( "package", "package", 1, null, 0, 0, 0, mNotiNoGroup, user), 0); mNotiNoGroup2 = new Notification.Builder(getContext()) .setContentTitle("D") .setWhen(1202) .build(); mRecordNoGroup2 = new NotificationRecord(new StatusBarNotification( "package", "package", 1, null, 0, 0, 0, mNotiNoGroup2, user), 0); mNotiNoGroupSortA = new Notification.Builder(getContext()) .setContentTitle("E") .setWhen(1201) .setSortKey("A") .build(); mRecordNoGroupSortA = new NotificationRecord(new StatusBarNotification( "package", "package", 1, null, 0, 0, 0, mNotiNoGroupSortA, user), 0); } @SmallTest public void testFindAfterRankingWithASplitGroup() throws Exception { ArrayList notificationList = new ArrayList(3); notificationList.add(mRecordGroupGSortA); notificationList.add(mRecordGroupGSortB); notificationList.add(mRecordNoGroup); notificationList.add(mRecordNoGroupSortA); mHelper.sort(notificationList); assertTrue(mHelper.indexOf(notificationList, mRecordGroupGSortA) >= 0); assertTrue(mHelper.indexOf(notificationList, mRecordGroupGSortB) >= 0); assertTrue(mHelper.indexOf(notificationList, mRecordNoGroup) >= 0); assertTrue(mHelper.indexOf(notificationList, mRecordNoGroupSortA) >= 0); } @SmallTest public void testSortShouldNotThrowWithPlainNotifications() throws Exception { ArrayList notificationList = new ArrayList(2); notificationList.add(mRecordNoGroup); notificationList.add(mRecordNoGroup2); mHelper.sort(notificationList); } @SmallTest public void testSortShouldNotThrowOneSorted() throws Exception { ArrayList notificationList = new ArrayList(2); notificationList.add(mRecordNoGroup); notificationList.add(mRecordNoGroupSortA); mHelper.sort(notificationList); } @SmallTest public void testSortShouldNotThrowOneNotification() throws Exception { ArrayList notificationList = new ArrayList(1); notificationList.add(mRecordNoGroup); mHelper.sort(notificationList); } @SmallTest public void testSortShouldNotThrowOneSortKey() throws Exception { ArrayList notificationList = new ArrayList(1); notificationList.add(mRecordGroupGSortB); mHelper.sort(notificationList); } @SmallTest public void testSortShouldNotThrowOnEmptyList() throws Exception { ArrayList notificationList = new ArrayList(); mHelper.sort(notificationList); } }