NotificationTest.java revision 9acd673c0deb2652a55c52b9b80515d84b1945dc
18a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds/*
28a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds * Copyright (C) 2017 The Android Open Source Project
38a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds *
48a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds * Licensed under the Apache License, Version 2.0 (the "License");
58a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds * you may not use this file except in compliance with the License.
68a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds * You may obtain a copy of the License at
78a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds *
88a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds *      http://www.apache.org/licenses/LICENSE-2.0
98a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds *
108a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds * Unless required by applicable law or agreed to in writing, software
118a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds * distributed under the License is distributed on an "AS IS" BASIS,
128a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
138a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds * See the License for the specific language governing permissions and
148a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds * limitations under the License
158a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds */
168a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds
178a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynoldspackage com.android.server.notification;
188a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds
198a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynoldsimport static junit.framework.Assert.assertEquals;
208a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynoldsimport static junit.framework.Assert.assertNotNull;
218a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynoldsimport static junit.framework.Assert.assertNull;
228a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds
237217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynoldsimport static org.junit.Assert.assertFalse;
248a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynoldsimport static org.junit.Assert.assertTrue;
257217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynoldsimport static org.mockito.Mockito.mock;
268a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynoldsimport static org.mockito.Mockito.spy;
278a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynoldsimport static org.mockito.Mockito.when;
288a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds
298a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynoldsimport android.app.ActivityManager;
308a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynoldsimport android.app.Notification;
319acd673c0deb2652a55c52b9b80515d84b1945dcSelim Cinekimport android.app.Person;
327217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynoldsimport android.app.PendingIntent;
337217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynoldsimport android.app.RemoteInput;
348a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynoldsimport android.content.Context;
358a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynoldsimport android.content.pm.ApplicationInfo;
367217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynoldsimport android.graphics.Bitmap;
378a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynoldsimport android.graphics.Color;
387217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynoldsimport android.graphics.drawable.Icon;
397217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynoldsimport android.net.Uri;
408a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynoldsimport android.os.Build;
418a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynoldsimport android.support.test.filters.SmallTest;
428a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynoldsimport android.support.test.runner.AndroidJUnit4;
437217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynoldsimport android.widget.RemoteViews;
448a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds
4574f5e36f49b32baef90bf31bbbaf487c18002944Jason Monkimport com.android.server.UiServiceTestCase;
4674f5e36f49b32baef90bf31bbbaf487c18002944Jason Monk
478a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynoldsimport org.junit.Before;
488a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynoldsimport org.junit.Test;
498a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynoldsimport org.junit.runner.RunWith;
508a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynoldsimport org.mockito.Mock;
518a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynoldsimport org.mockito.MockitoAnnotations;
528a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds
538a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds@RunWith(AndroidJUnit4.class)
548a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds@SmallTest
5574f5e36f49b32baef90bf31bbbaf487c18002944Jason Monkpublic class NotificationTest extends UiServiceTestCase {
568a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds
578a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds    @Mock
588a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds    ActivityManager mAm;
598a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds
608a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds    @Before
618a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds    public void setUp() {
628a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        MockitoAnnotations.initMocks(this);
638a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds    }
648a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds
658a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds    @Test
668a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds    public void testStripsExtendersInLowRamMode() {
678a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        Notification.Builder nb = new Notification.Builder(mContext, "channel");
688a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        nb.extend(new Notification.CarExtender().setColor(Color.RED));
698a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        nb.extend(new Notification.TvExtender().setChannelId("different channel"));
708a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        nb.extend(new Notification.WearableExtender().setDismissalId("dismiss"));
718a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        Notification before = nb.build();
728a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds
738a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        Notification after = Notification.Builder.maybeCloneStrippedForDelivery(before, true);
748a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds
758a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        assertEquals("different channel", new Notification.TvExtender(before).getChannelId());
768a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        assertNull(new Notification.TvExtender(after).getChannelId());
778a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds
788a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        assertEquals(Color.RED, new Notification.CarExtender(before).getColor());
798a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        assertEquals(Notification.COLOR_DEFAULT, new Notification.CarExtender(after).getColor());
808a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds
818a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        assertEquals("dismiss", new Notification.WearableExtender(before).getDismissalId());
828a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        assertNull(new Notification.WearableExtender(after).getDismissalId());
838a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds    }
848a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds
858a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds    @Test
868a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds    public void testStripsRemoteViewsInLowRamMode() {
878a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        Context context = spy(getContext());
888a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        ApplicationInfo ai = new ApplicationInfo();
898a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        ai.targetSdkVersion = Build.VERSION_CODES.M;
908a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        when(context.getApplicationInfo()).thenReturn(ai);
918a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds
928a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        final Notification.BigTextStyle style = new Notification.BigTextStyle()
938a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds                .bigText("hello")
948a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds                .setSummaryText("And the summary");
958a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        Notification before = new Notification.Builder(context, "channel")
968a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds                .setContentText("hi")
978a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds                .setStyle(style)
988a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds                .build();
998a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds
1008a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        Notification after = Notification.Builder.maybeCloneStrippedForDelivery(before, true);
1018a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        assertNotNull(before.contentView);
1028a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        assertNotNull(before.bigContentView);
1038a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        assertNotNull(before.headsUpContentView);
1048a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        assertNull(after.contentView);
1058a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        assertNull(after.bigContentView);
1068a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        assertNull(after.headsUpContentView);
1078a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds    }
1088a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds
1098a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds    @Test
1108a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds    public void testDoesNotStripsExtendersInNormalRamMode() {
1118a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        Notification.Builder nb = new Notification.Builder(mContext, "channel");
1128a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        nb.extend(new Notification.CarExtender().setColor(Color.RED));
1138a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        nb.extend(new Notification.TvExtender().setChannelId("different channel"));
1148a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        nb.extend(new Notification.WearableExtender().setDismissalId("dismiss"));
1158a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        Notification before = nb.build();
1168a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        Notification after = Notification.Builder.maybeCloneStrippedForDelivery(before, false);
1178a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds
1188a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        assertTrue(before == after);
1198a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds
1208a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        assertEquals("different channel", new Notification.TvExtender(before).getChannelId());
1218a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        assertEquals(Color.RED, new Notification.CarExtender(before).getColor());
1228a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds        assertEquals("dismiss", new Notification.WearableExtender(before).getDismissalId());
1238a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds    }
1247217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
1257217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    @Test
1267217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    public void testStyleChangeVisiblyDifferent_noStyles() {
1277217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification.Builder n1 = new Notification.Builder(mContext, "test");
1287217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification.Builder n2 = new Notification.Builder(mContext, "test");
1297217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
1307217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        assertFalse(Notification.areStyledNotificationsVisiblyDifferent(n1, n2));
1317217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    }
1327217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
1337217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    @Test
1347217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    public void testStyleChangeVisiblyDifferent_noStyleToStyle() {
1357217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification.Builder n1 = new Notification.Builder(mContext, "test");
1367217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification.Builder n2 = new Notification.Builder(mContext, "test")
1377217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .setStyle(new Notification.BigTextStyle());
1387217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
1397217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        assertTrue(Notification.areStyledNotificationsVisiblyDifferent(n1, n2));
1407217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    }
1417217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
1427217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    @Test
1437217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    public void testStyleChangeVisiblyDifferent_styleToNoStyle() {
1447217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification.Builder n2 = new Notification.Builder(mContext, "test");
1457217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification.Builder n1 = new Notification.Builder(mContext, "test")
1467217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .setStyle(new Notification.BigTextStyle());
1477217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
1487217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        assertTrue(Notification.areStyledNotificationsVisiblyDifferent(n1, n2));
1497217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    }
1507217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
1517217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    @Test
1527217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    public void testStyleChangeVisiblyDifferent_changeStyle() {
1537217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification.Builder n1 = new Notification.Builder(mContext, "test")
1547217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .setStyle(new Notification.InboxStyle());
1557217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification.Builder n2 = new Notification.Builder(mContext, "test")
1567217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .setStyle(new Notification.BigTextStyle());
1577217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
1587217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        assertTrue(Notification.areStyledNotificationsVisiblyDifferent(n1, n2));
1597217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    }
1607217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
1617217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    @Test
1627217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    public void testInboxTextChange() {
1637217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification.Builder nInbox1 = new Notification.Builder(mContext, "test")
1647217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .setStyle(new Notification.InboxStyle().addLine("a").addLine("b"));
1657217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification.Builder nInbox2 = new Notification.Builder(mContext, "test")
1667217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .setStyle(new Notification.InboxStyle().addLine("b").addLine("c"));
1677217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
1687217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        assertTrue(Notification.areStyledNotificationsVisiblyDifferent(nInbox1, nInbox2));
1697217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    }
1707217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
1717217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    @Test
1727217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    public void testBigTextTextChange() {
1737217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification.Builder nBigText1 = new Notification.Builder(mContext, "test")
1747217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .setStyle(new Notification.BigTextStyle().bigText("something"));
1757217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification.Builder nBigText2 = new Notification.Builder(mContext, "test")
1767217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .setStyle(new Notification.BigTextStyle().bigText("else"));
1777217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
1787217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        assertTrue(Notification.areStyledNotificationsVisiblyDifferent(nBigText1, nBigText2));
1797217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    }
1807217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
1817217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    @Test
1827217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    public void testBigPictureChange() {
1837217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification.Builder nBigPic1 = new Notification.Builder(mContext, "test")
1847217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .setStyle(new Notification.BigPictureStyle().bigPicture(mock(Bitmap.class)));
1857217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification.Builder nBigPic2 = new Notification.Builder(mContext, "test")
1867217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .setStyle(new Notification.BigPictureStyle().bigPicture(mock(Bitmap.class)));
1877217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
1887217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        assertTrue(Notification.areStyledNotificationsVisiblyDifferent(nBigPic1, nBigPic2));
1897217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    }
1907217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
1917217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    @Test
1927217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    public void testMessagingChange_text() {
1937217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification.Builder nM1 = new Notification.Builder(mContext, "test")
1947217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .setStyle(new Notification.MessagingStyle("")
1957217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                        .addMessage(new Notification.MessagingStyle.Message(
1969acd673c0deb2652a55c52b9b80515d84b1945dcSelim Cinek                                "a", 100, mock(Person.class))));
1977217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification.Builder nM2 = new Notification.Builder(mContext, "test")
1987217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .setStyle(new Notification.MessagingStyle("")
1997217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                        .addMessage(new Notification.MessagingStyle.Message(
2009acd673c0deb2652a55c52b9b80515d84b1945dcSelim Cinek                                "a", 100, mock(Person.class)))
2017217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                        .addMessage(new Notification.MessagingStyle.Message(
2029acd673c0deb2652a55c52b9b80515d84b1945dcSelim Cinek                                "b", 100, mock(Person.class)))
2037217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                );
2047217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
2057217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        assertTrue(Notification.areStyledNotificationsVisiblyDifferent(nM1, nM2));
2067217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    }
2077217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
2087217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    @Test
2097217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    public void testMessagingChange_data() {
2107217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification.Builder nM1 = new Notification.Builder(mContext, "test")
2117217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .setStyle(new Notification.MessagingStyle("")
2127217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                        .addMessage(new Notification.MessagingStyle.Message(
2137217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                                "a", 100, mock(Person.class))
2147217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                                .setData("text", mock(Uri.class))));
2157217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification.Builder nM2 = new Notification.Builder(mContext, "test")
2167217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .setStyle(new Notification.MessagingStyle("")
2177217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                        .addMessage(new Notification.MessagingStyle.Message(
2187217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                                "a", 100, mock(Person.class))));
2197217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
2207217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        assertTrue(Notification.areStyledNotificationsVisiblyDifferent(nM1, nM2));
2217217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    }
2227217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
2237217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    @Test
2247217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    public void testMessagingChange_sender() {
2257217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Person a = mock(Person.class);
2267217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        when(a.getName()).thenReturn("A");
2277217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Person b = mock(Person.class);
2287217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        when(b.getName()).thenReturn("b");
2297217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification.Builder nM1 = new Notification.Builder(mContext, "test")
2307217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .setStyle(new Notification.MessagingStyle("")
2317217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                        .addMessage(new Notification.MessagingStyle.Message("a", 100, b)));
2327217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification.Builder nM2 = new Notification.Builder(mContext, "test")
2337217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .setStyle(new Notification.MessagingStyle("")
2347217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                        .addMessage(new Notification.MessagingStyle.Message("a", 100, a)));
2357217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
2367217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        assertTrue(Notification.areStyledNotificationsVisiblyDifferent(nM1, nM2));
2377217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    }
2387217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
2397217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    @Test
2407217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    public void testMessagingChange_key() {
2417217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Person a = mock(Person.class);
2427217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        when(a.getKey()).thenReturn("A");
2437217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Person b = mock(Person.class);
2447217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        when(b.getKey()).thenReturn("b");
2457217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification.Builder nM1 = new Notification.Builder(mContext, "test")
2467217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .setStyle(new Notification.MessagingStyle("")
2477217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                        .addMessage(new Notification.MessagingStyle.Message("a", 100, a)));
2487217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification.Builder nM2 = new Notification.Builder(mContext, "test")
2497217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .setStyle(new Notification.MessagingStyle("")
2507217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                        .addMessage(new Notification.MessagingStyle.Message("a", 100, b)));
2517217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
2527217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        assertTrue(Notification.areStyledNotificationsVisiblyDifferent(nM1, nM2));
2537217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    }
2547217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
2557217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    @Test
2567217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    public void testMessagingChange_ignoreTimeChange() {
2577217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification.Builder nM1 = new Notification.Builder(mContext, "test")
2587217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .setStyle(new Notification.MessagingStyle("")
2597217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                        .addMessage(new Notification.MessagingStyle.Message(
2609acd673c0deb2652a55c52b9b80515d84b1945dcSelim Cinek                                "a", 100, mock(Person.class))));
2617217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification.Builder nM2 = new Notification.Builder(mContext, "test")
2627217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .setStyle(new Notification.MessagingStyle("")
2637217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                        .addMessage(new Notification.MessagingStyle.Message(
2649acd673c0deb2652a55c52b9b80515d84b1945dcSelim Cinek                                "a", 1000, mock(Person.class)))
2657217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                );
2667217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
2677217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        assertFalse(Notification.areStyledNotificationsVisiblyDifferent(nM1, nM2));
2687217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    }
2697217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
2707217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    @Test
2717217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    public void testRemoteViews_nullChange() {
2727217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification.Builder n1 = new Notification.Builder(mContext, "test")
2737217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .setContent(mock(RemoteViews.class));
2747217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification.Builder n2 = new Notification.Builder(mContext, "test");
2757217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        assertTrue(Notification.areRemoteViewsChanged(n1, n2));
2767217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
2777217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        n1 = new Notification.Builder(mContext, "test");
2787217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        n2 = new Notification.Builder(mContext, "test")
2797217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .setContent(mock(RemoteViews.class));
2807217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        assertTrue(Notification.areRemoteViewsChanged(n1, n2));
2817217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
2827217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        n1 = new Notification.Builder(mContext, "test")
2837217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .setCustomBigContentView(mock(RemoteViews.class));
2847217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        n2 = new Notification.Builder(mContext, "test");
2857217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        assertTrue(Notification.areRemoteViewsChanged(n1, n2));
2867217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
2877217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        n1 = new Notification.Builder(mContext, "test");
2887217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        n2 = new Notification.Builder(mContext, "test")
2897217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .setCustomBigContentView(mock(RemoteViews.class));
2907217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        assertTrue(Notification.areRemoteViewsChanged(n1, n2));
2917217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
2927217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        n1 = new Notification.Builder(mContext, "test");
2937217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        n2 = new Notification.Builder(mContext, "test");
2947217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        assertFalse(Notification.areRemoteViewsChanged(n1, n2));
2957217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    }
2967217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
2977217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    @Test
2987217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    public void testActionsDifferent_null() {
2997217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification n1 = new Notification.Builder(mContext, "test")
3007217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .build();
3017217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification n2 = new Notification.Builder(mContext, "test")
3027217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .build();
3037217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
3047217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        assertFalse(Notification.areActionsVisiblyDifferent(n1, n2));
3057217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    }
3067217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
3077217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    @Test
3087217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    public void testActionsDifferentSame() {
3097217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        PendingIntent intent = mock(PendingIntent.class);
3107217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Icon icon = mock(Icon.class);
3117217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
3127217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification n1 = new Notification.Builder(mContext, "test")
3137217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .addAction(new Notification.Action.Builder(icon, "TEXT 1", intent).build())
3147217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .build();
3157217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification n2 = new Notification.Builder(mContext, "test")
3167217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .addAction(new Notification.Action.Builder(icon, "TEXT 1", intent).build())
3177217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .build();
3187217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
3197217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        assertFalse(Notification.areActionsVisiblyDifferent(n1, n2));
3207217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    }
3217217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
3227217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    @Test
3237217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    public void testActionsDifferentText() {
3247217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        PendingIntent intent = mock(PendingIntent.class);
3257217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Icon icon = mock(Icon.class);
3267217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
3277217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification n1 = new Notification.Builder(mContext, "test")
3287217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .addAction(new Notification.Action.Builder(icon, "TEXT 1", intent).build())
3297217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .build();
3307217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification n2 = new Notification.Builder(mContext, "test")
3317217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .addAction(new Notification.Action.Builder(icon, "TEXT 2", intent).build())
3327217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .build();
3337217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
3347217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        assertTrue(Notification.areActionsVisiblyDifferent(n1, n2));
3357217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    }
3367217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
3377217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    @Test
3387217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    public void testActionsDifferentNumber() {
3397217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        PendingIntent intent = mock(PendingIntent.class);
3407217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Icon icon = mock(Icon.class);
3417217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
3427217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification n1 = new Notification.Builder(mContext, "test")
3437217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .addAction(new Notification.Action.Builder(icon, "TEXT 1", intent).build())
3447217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .build();
3457217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification n2 = new Notification.Builder(mContext, "test")
3467217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .addAction(new Notification.Action.Builder(icon, "TEXT 1", intent).build())
3477217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .addAction(new Notification.Action.Builder(icon, "TEXT 2", intent).build())
3487217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .build();
3497217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
3507217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        assertTrue(Notification.areActionsVisiblyDifferent(n1, n2));
3517217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    }
3527217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
3537217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    @Test
3547217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    public void testActionsDifferentIntent() {
3557217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        PendingIntent intent1 = mock(PendingIntent.class);
3567217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        PendingIntent intent2 = mock(PendingIntent.class);
3577217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Icon icon = mock(Icon.class);
3587217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
3597217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification n1 = new Notification.Builder(mContext, "test")
3607217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .addAction(new Notification.Action.Builder(icon, "TEXT 1", intent1).build())
3617217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .build();
3627217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification n2 = new Notification.Builder(mContext, "test")
3637217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .addAction(new Notification.Action.Builder(icon, "TEXT 1", intent2).build())
3647217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .build();
3657217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
3667217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        assertFalse(Notification.areActionsVisiblyDifferent(n1, n2));
3677217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    }
3687217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
3697217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    @Test
3705a366fbd819e17b420f8eb61f8b96434b71b8bb7Julia Reynolds    public void testActionsMoreOptionsThanChoices() {
3715a366fbd819e17b420f8eb61f8b96434b71b8bb7Julia Reynolds        PendingIntent intent1 = mock(PendingIntent.class);
3725a366fbd819e17b420f8eb61f8b96434b71b8bb7Julia Reynolds        PendingIntent intent2 = mock(PendingIntent.class);
3735a366fbd819e17b420f8eb61f8b96434b71b8bb7Julia Reynolds        Icon icon = mock(Icon.class);
3745a366fbd819e17b420f8eb61f8b96434b71b8bb7Julia Reynolds
3755a366fbd819e17b420f8eb61f8b96434b71b8bb7Julia Reynolds        Notification n1 = new Notification.Builder(mContext, "test")
3765a366fbd819e17b420f8eb61f8b96434b71b8bb7Julia Reynolds                .addAction(new Notification.Action.Builder(icon, "TEXT 1", intent1).build())
3775a366fbd819e17b420f8eb61f8b96434b71b8bb7Julia Reynolds                .addAction(new Notification.Action.Builder(icon, "TEXT 2", intent1)
3785a366fbd819e17b420f8eb61f8b96434b71b8bb7Julia Reynolds                        .addRemoteInput(new RemoteInput.Builder("a")
3795a366fbd819e17b420f8eb61f8b96434b71b8bb7Julia Reynolds                                .setChoices(new CharSequence[] {"i", "m"})
3805a366fbd819e17b420f8eb61f8b96434b71b8bb7Julia Reynolds                                .build())
3815a366fbd819e17b420f8eb61f8b96434b71b8bb7Julia Reynolds                        .build())
3825a366fbd819e17b420f8eb61f8b96434b71b8bb7Julia Reynolds                .build();
3835a366fbd819e17b420f8eb61f8b96434b71b8bb7Julia Reynolds        Notification n2 = new Notification.Builder(mContext, "test")
3845a366fbd819e17b420f8eb61f8b96434b71b8bb7Julia Reynolds                .addAction(new Notification.Action.Builder(icon, "TEXT 1", intent2).build())
3855a366fbd819e17b420f8eb61f8b96434b71b8bb7Julia Reynolds                .addAction(new Notification.Action.Builder(icon, "TEXT 2", intent1).build())
3865a366fbd819e17b420f8eb61f8b96434b71b8bb7Julia Reynolds                .build();
3875a366fbd819e17b420f8eb61f8b96434b71b8bb7Julia Reynolds
3885a366fbd819e17b420f8eb61f8b96434b71b8bb7Julia Reynolds        assertTrue(Notification.areActionsVisiblyDifferent(n1, n2));
3895a366fbd819e17b420f8eb61f8b96434b71b8bb7Julia Reynolds    }
3905a366fbd819e17b420f8eb61f8b96434b71b8bb7Julia Reynolds
3915a366fbd819e17b420f8eb61f8b96434b71b8bb7Julia Reynolds    @Test
3927217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    public void testActionsDifferentRemoteInputs() {
3937217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        PendingIntent intent = mock(PendingIntent.class);
3947217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Icon icon = mock(Icon.class);
3957217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
3967217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification n1 = new Notification.Builder(mContext, "test")
3977217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .addAction(new Notification.Action.Builder(icon, "TEXT 1", intent)
3987217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                        .addRemoteInput(new RemoteInput.Builder("a")
3997217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                                .setChoices(new CharSequence[] {"i", "m"})
4007217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                                .build())
4017217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                        .build())
4027217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .build();
4037217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        Notification n2 = new Notification.Builder(mContext, "test")
4047217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .addAction(new Notification.Action.Builder(icon, "TEXT 1", intent)
4057217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                        .addRemoteInput(new RemoteInput.Builder("a")
4067217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                                .setChoices(new CharSequence[] {"t", "m"})
4077217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                                .build())
4087217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                        .build())
4097217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds                .build();
4107217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds
4117217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds        assertTrue(Notification.areActionsVisiblyDifferent(n1, n2));
4127217dc9f769ccb6e4351011ea9887871c2a4ffb4Julia Reynolds    }
4138a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds}
4148a3b45976542d8a52f8135875186f7bc9e8534cbJulia Reynolds
415