summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorJin Cao <jinyan@google.com>2014-09-12 20:31:06 +0000
committerJames Lemieux <jplemieux@google.com>2014-09-15 13:01:11 -0700
commit3dbfbc210a607382ba9c150d7ae373ca0508267c (patch)
tree4e29fe8f60c834d74f83a5bfb0b90b5b2c391f6e /tests
parent406ae08b92f78f26fe83830897570c9db1ab23aa (diff)
parentea7a5dbc54ccaaf858e63177f1c1b66bdc361d54 (diff)
downloadandroid_packages_apps_UnifiedEmail-3dbfbc210a607382ba9c150d7ae373ca0508267c.tar.gz
android_packages_apps_UnifiedEmail-3dbfbc210a607382ba9c150d7ae373ca0508267c.tar.bz2
android_packages_apps_UnifiedEmail-3dbfbc210a607382ba9c150d7ae373ca0508267c.zip
Choose thread icon more carefully
b/17298161 Choosing the avatar to draw as the thread icon follows this algorithm: 1) Prefer the sender of the first unread message. 2) If all messages are read, prefer the last sender that is not the current account. 3) If all messages were sent from the current account (e.g. user is emailing themselves), use the last sender (aka current account). In the process of doing this work the last remaining dependency on DividedImageCanvas was broken, so it could be removed at this time. Tests confirming the new behavior have been added to SendersFormattingTests. Change-Id: If8e066de8cb98f2f95b019a88a2fdadc2f9f5090
Diffstat (limited to 'tests')
-rw-r--r--tests/src/com/android/mail/browse/SendersFormattingTests.java94
1 files changed, 94 insertions, 0 deletions
diff --git a/tests/src/com/android/mail/browse/SendersFormattingTests.java b/tests/src/com/android/mail/browse/SendersFormattingTests.java
index ecec4dfac..c55e03b06 100644
--- a/tests/src/com/android/mail/browse/SendersFormattingTests.java
+++ b/tests/src/com/android/mail/browse/SendersFormattingTests.java
@@ -112,4 +112,98 @@ public class SendersFormattingTests extends AndroidTestCase {
assertEquals(before.firstUnreadSnippet, after.firstUnreadSnippet);
assertEquals(before.lastSnippet, after.lastSnippet);
}
+
+ public void testSenderAvatarIsSenderOfFirstUnreadMessage() {
+ final ConversationInfo conv = createConversationInfo();
+ conv.addParticipant(new ParticipantInfo("a", "a@a.com", 0, true));
+ conv.addParticipant(new ParticipantInfo("b", "b@b.com", 0, false));
+ conv.addParticipant(new ParticipantInfo("c", "c@c.com", 0, false));
+
+ final ArrayList<SpannableString> styledSenders = Lists.newArrayList();
+ final ArrayList<String> displayableSenderNames = Lists.newArrayList();
+ final ConversationItemViewModel.SenderAvatarModel senderAvatarModel =
+ new ConversationItemViewModel.SenderAvatarModel();
+
+ SendersView.format(getContext(), conv, "", 100, styledSenders, displayableSenderNames,
+ senderAvatarModel, null, false, false);
+
+ assertEquals("b@b.com", senderAvatarModel.getEmailAddress());
+ assertEquals("b", senderAvatarModel.getName());
+ }
+
+ public void testSenderAvatarIsLastSenderIfAllMessagesAreRead() {
+ final ConversationInfo conv = createConversationInfo();
+ conv.addParticipant(new ParticipantInfo("a", "a@a.com", 0, true));
+ conv.addParticipant(new ParticipantInfo("b", "b@b.com", 0, true));
+ conv.addParticipant(new ParticipantInfo("c", "c@c.com", 0, true));
+
+ final ArrayList<SpannableString> styledSenders = Lists.newArrayList();
+ final ArrayList<String> displayableSenderNames = Lists.newArrayList();
+ final ConversationItemViewModel.SenderAvatarModel senderAvatarModel =
+ new ConversationItemViewModel.SenderAvatarModel();
+
+ SendersView.format(getContext(), conv, "", 100, styledSenders, displayableSenderNames,
+ senderAvatarModel, null, false, false);
+
+ assertEquals("c@c.com", senderAvatarModel.getEmailAddress());
+ assertEquals("c", senderAvatarModel.getName());
+ }
+
+ public void testSenderAvatarIsLastSenderThatIsNotTheCurrentAccountIfAllMessagesAreRead() {
+ final ConversationInfo conv = createConversationInfo();
+ conv.addParticipant(new ParticipantInfo("a", "a@a.com", 0, true));
+ conv.addParticipant(new ParticipantInfo("b", "b@b.com", 0, true));
+ // empty name indicates it is the current account
+ conv.addParticipant(new ParticipantInfo("", "c@c.com", 0, true));
+
+ final ArrayList<SpannableString> styledSenders = Lists.newArrayList();
+ final ArrayList<String> displayableSenderNames = Lists.newArrayList();
+ final ConversationItemViewModel.SenderAvatarModel senderAvatarModel =
+ new ConversationItemViewModel.SenderAvatarModel();
+
+ SendersView.format(getContext(), conv, "", 100, styledSenders, displayableSenderNames,
+ senderAvatarModel, null, false, false);
+
+ assertEquals("b@b.com", senderAvatarModel.getEmailAddress());
+ assertEquals("b", senderAvatarModel.getName());
+ }
+
+ public void testSenderAvatarIsCurrentAccountIfAllSendersAreCurrentAccount() {
+ final ConversationInfo conv = createConversationInfo();
+ // empty name indicates it is the current account
+ conv.addParticipant(new ParticipantInfo("", "a@a.com", 0, true));
+
+ final ArrayList<SpannableString> styledSenders = Lists.newArrayList();
+ final ArrayList<String> displayableSenderNames = Lists.newArrayList();
+ final ConversationItemViewModel.SenderAvatarModel senderAvatarModel =
+ new ConversationItemViewModel.SenderAvatarModel();
+
+ SendersView.format(getContext(), conv, "", 100, styledSenders, displayableSenderNames,
+ senderAvatarModel, null, false, false);
+
+ assertEquals("a@a.com", senderAvatarModel.getEmailAddress());
+ assertEquals("", senderAvatarModel.getName());
+ }
+
+ /**
+ * Two senders in a thread should be kept distinct if they have unique email addresses, even if
+ * they happen to share the same name.
+ */
+ public void testSenderNamesWhenNamesMatchButEmailAddressesDiffer() {
+ final ConversationInfo conv = createConversationInfo();
+ conv.addParticipant(new ParticipantInfo("Andrew", "aholmes@awesome.com", 0, true));
+ conv.addParticipant(new ParticipantInfo("Andrew", "ajohnson@wicked.com", 0, true));
+
+ final ArrayList<SpannableString> styledSenders = Lists.newArrayList();
+ final ArrayList<String> displayableSenderNames = Lists.newArrayList();
+ final ConversationItemViewModel.SenderAvatarModel senderAvatarModel =
+ new ConversationItemViewModel.SenderAvatarModel();
+
+ SendersView.format(getContext(), conv, "", 100, styledSenders, displayableSenderNames,
+ senderAvatarModel, null, false, false);
+
+ assertEquals(2, displayableSenderNames.size());
+ assertEquals("Andrew", displayableSenderNames.get(0));
+ assertEquals("Andrew", displayableSenderNames.get(1));
+ }
} \ No newline at end of file