1d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereira/******************************************************************************* 2d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereira * Copyright (C) 2012 Google Inc. 3d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereira * Licensed to The Android Open Source Project. 4d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereira * 5d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereira * Licensed under the Apache License, Version 2.0 (the "License"); 6d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereira * you may not use this file except in compliance with the License. 7d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereira * You may obtain a copy of the License at 8d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereira * 9d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereira * http://www.apache.org/licenses/LICENSE-2.0 10d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereira * 11d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereira * Unless required by applicable law or agreed to in writing, software 12d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereira * distributed under the License is distributed on an "AS IS" BASIS, 13d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereira * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereira * See the License for the specific language governing permissions and 15d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereira * limitations under the License. 16d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereira *******************************************************************************/ 17d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereira 18d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereirapackage com.android.mail.browse; 19d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereira 20d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereiraimport android.test.AndroidTestCase; 21a88fbbaa07312640b9a337a3e06b7b5e0f60a521Andy Huangimport android.test.suitebuilder.annotation.SmallTest; 22d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereiraimport android.text.SpannableString; 23d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereira 24d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereiraimport com.android.mail.providers.ConversationInfo; 253b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieuximport com.android.mail.providers.ParticipantInfo; 263b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieuximport com.google.common.collect.Lists; 27d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereira 2888acafa03a87f5c84b959697d13b81df8f11a96emindypimport java.util.ArrayList; 2988acafa03a87f5c84b959697d13b81df8f11a96emindyp 30a88fbbaa07312640b9a337a3e06b7b5e0f60a521Andy Huang@SmallTest 31d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereirapublic class SendersFormattingTests extends AndroidTestCase { 32d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereira 333b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux private static ConversationInfo createConversationInfo() { 343b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux return new ConversationInfo(0, 5, "snippet", "snippet", "snippet"); 35d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereira } 36d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereira 373b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux public void testMeFromNullName() { 383b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux final ConversationInfo conv = createConversationInfo(); 393b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux conv.addParticipant(new ParticipantInfo(null, "something@somewhere.com", 0, false)); 403b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux final ArrayList<SpannableString> strings = Lists.newArrayList(); 413b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux assertEquals(0, strings.size()); 42d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereira 4310ea28ab588d8e922c0f78f0f47fe479739ec2cfJames Lemieux SendersView.format(getContext(), conv, "", 100, strings, null, null, null, false, false); 443b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux assertEquals(1, strings.size()); 453b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux assertEquals("me", strings.get(0).toString()); 46d8e5ff44a8a7405bb8891fb46570782138babbd1Mindy Pereira } 47a88fbbaa07312640b9a337a3e06b7b5e0f60a521Andy Huang 483b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux public void testMeFromEmptyName() { 493b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux final ConversationInfo conv = createConversationInfo(); 503b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux conv.addParticipant(new ParticipantInfo("", "something@somewhere.com", 0, false)); 513b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux final ArrayList<SpannableString> strings = Lists.newArrayList(); 523b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux assertEquals(0, strings.size()); 53a88fbbaa07312640b9a337a3e06b7b5e0f60a521Andy Huang 5410ea28ab588d8e922c0f78f0f47fe479739ec2cfJames Lemieux SendersView.format(getContext(), conv, "", 100, strings, null, null, null, false, false); 553b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux assertEquals(1, strings.size()); 563b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux assertEquals("me", strings.get(0).toString()); 573b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux } 58a88fbbaa07312640b9a337a3e06b7b5e0f60a521Andy Huang 593b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux public void testMeFromDuplicateEmptyNames() { 603b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux final ConversationInfo conv = createConversationInfo(); 613b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux conv.addParticipant(new ParticipantInfo("", "something@somewhere.com", 0, false)); 623b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux conv.addParticipant(new ParticipantInfo("", "something@somewhere.com", 0, false)); 633b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux final ArrayList<SpannableString> strings = Lists.newArrayList(); 643b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux assertEquals(0, strings.size()); 653b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux 6610ea28ab588d8e922c0f78f0f47fe479739ec2cfJames Lemieux SendersView.format(getContext(), conv, "", 100, strings, null, null, null, false, false); 673b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux assertEquals(2, strings.size()); 683b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux assertNull(strings.get(0)); 693b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux assertEquals("me", strings.get(1).toString()); 70a88fbbaa07312640b9a337a3e06b7b5e0f60a521Andy Huang } 71a88fbbaa07312640b9a337a3e06b7b5e0f60a521Andy Huang 723b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux public void testDuplicates() { 733b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux final ConversationInfo conv = createConversationInfo(); 743b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux conv.addParticipant(new ParticipantInfo("Something", "something@somewhere.com", 0, false)); 753b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux conv.addParticipant(new ParticipantInfo("Something", "something@somewhere.com", 0, false)); 76a88fbbaa07312640b9a337a3e06b7b5e0f60a521Andy Huang 773b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux final ArrayList<SpannableString> strings = Lists.newArrayList(); 783b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux assertEquals(0, strings.size()); 79a88fbbaa07312640b9a337a3e06b7b5e0f60a521Andy Huang 8010ea28ab588d8e922c0f78f0f47fe479739ec2cfJames Lemieux SendersView.format(getContext(), conv, "", 100, strings, null, null, null, false, false); 813b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux assertEquals(2, strings.size()); 823b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux assertNull(strings.get(0)); 833b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux assertEquals("Something", strings.get(1).toString()); 843b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux } 85a88fbbaa07312640b9a337a3e06b7b5e0f60a521Andy Huang 863b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux public void testSenderNameBadInput() { 873b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux final ConversationInfo before = createConversationInfo(); 883b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux before.addParticipant(new ParticipantInfo("****^****", null, 0, false)); 89a88fbbaa07312640b9a337a3e06b7b5e0f60a521Andy Huang 903b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux final byte[] serialized = before.toBlob(); 91a88fbbaa07312640b9a337a3e06b7b5e0f60a521Andy Huang 923b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux final ConversationInfo after = ConversationInfo.fromBlob(serialized); 933b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux assertEquals(1, after.participantInfos.size()); 943b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux assertEquals(before.participantInfos.get(0).name, after.participantInfos.get(0).name); 95a88fbbaa07312640b9a337a3e06b7b5e0f60a521Andy Huang } 96a88fbbaa07312640b9a337a3e06b7b5e0f60a521Andy Huang 973b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux public void testConversationSnippetsBadInput() { 983b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux final String first = "*^*"; 993b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux final String firstUnread = "*^*^*"; 1003b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux final String last = "*^*^*^*"; 1013b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux 1023b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux final ConversationInfo before = new ConversationInfo(42, 49, first, firstUnread, last); 1033b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux before.addParticipant(new ParticipantInfo("Foo Bar", "foo@bar.com", 0, false)); 1043b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux assertEquals(first, before.firstSnippet); 1053b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux assertEquals(firstUnread, before.firstUnreadSnippet); 1063b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux assertEquals(last, before.lastSnippet); 1073b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux 1083b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux final byte[] serialized = before.toBlob(); 1093b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux 1103b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux final ConversationInfo after = ConversationInfo.fromBlob(serialized); 1113b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux assertEquals(before.firstSnippet, after.firstSnippet); 1123b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux assertEquals(before.firstUnreadSnippet, after.firstUnreadSnippet); 1133b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux assertEquals(before.lastSnippet, after.lastSnippet); 1143b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux } 1153b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux}