SendersFormattingTests.java revision 69495b0a5551aaf4b70b6b29348946b730cfc3e8
1/*******************************************************************************
2 *      Copyright (C) 2012 Google Inc.
3 *      Licensed to The Android Open Source Project.
4 *
5 *      Licensed under the Apache License, Version 2.0 (the "License");
6 *      you may not use this file except in compliance with the License.
7 *      You may obtain a copy of the License at
8 *
9 *           http://www.apache.org/licenses/LICENSE-2.0
10 *
11 *      Unless required by applicable law or agreed to in writing, software
12 *      distributed under the License is distributed on an "AS IS" BASIS,
13 *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 *      See the License for the specific language governing permissions and
15 *      limitations under the License.
16 *******************************************************************************/
17
18package com.android.mail.browse;
19
20import android.test.AndroidTestCase;
21import android.test.suitebuilder.annotation.SmallTest;
22import android.text.SpannableString;
23
24import com.android.mail.providers.ConversationInfo;
25import com.android.mail.providers.MessageInfo;
26
27import java.util.ArrayList;
28
29@SmallTest
30public class SendersFormattingTests extends AndroidTestCase {
31
32    private static ConversationInfo createConversationInfo(int count) {
33        int draftCount = 5;
34        String first = "snippet", firstUnread = first, last = first;
35        return new ConversationInfo(count, draftCount, first, firstUnread, last);
36    }
37
38    public void testMe() {
39        // Blank sender == from "me"
40        ConversationInfo conv = createConversationInfo(1);
41        boolean read = false, starred = false;
42        MessageInfo info = new MessageInfo(read, starred, null, -1, null);
43        conv.addMessage(info);
44        ArrayList<SpannableString> strings = new ArrayList<SpannableString>();
45        ArrayList<String> emailDisplays = null;
46        SendersView
47                .format(getContext(), conv, "", 100, strings, emailDisplays, emailDisplays, null);
48        assertEquals(1, strings.size());
49        assertEquals(strings.get(0).toString(), "me");
50
51        ConversationInfo conv2 = createConversationInfo(1);
52        MessageInfo info2 = new MessageInfo(read, starred, "", -1, null);
53        strings.clear();
54        conv2.addMessage(info2);
55        SendersView
56                .format(getContext(), conv, "", 100, strings, emailDisplays, emailDisplays, null);
57        assertEquals(1, strings.size());
58        assertEquals(strings.get(0).toString(), "me");
59
60        ConversationInfo conv3 = createConversationInfo(2);
61        MessageInfo info3 = new MessageInfo(read, starred, "", -1, null);
62        conv3.addMessage(info3);
63        MessageInfo info4 = new MessageInfo(read, starred, "", -1, null);
64        conv3.addMessage(info4);
65        strings.clear();
66        SendersView
67                .format(getContext(), conv, "", 100, strings, emailDisplays, emailDisplays, null);
68        assertEquals(1, strings.size());
69        assertEquals(strings.get(0).toString(), "me");
70    }
71
72    public void testDupes() {
73        // Duplicate sender; should only return 1
74        ArrayList<SpannableString> strings = new ArrayList<SpannableString>();
75        ArrayList<String> emailDisplays = null;
76        ConversationInfo conv = createConversationInfo(2);
77        boolean read = false, starred = false;
78        String sender = "sender@sender.com";
79        MessageInfo info = new MessageInfo(read, starred, sender, -1, null);
80        conv.addMessage(info);
81        MessageInfo info2 = new MessageInfo(read, starred, sender, -1, null);
82        conv.addMessage(info2);
83        SendersView
84                .format(getContext(), conv, "", 100, strings, emailDisplays, emailDisplays, null);
85        // We actually don't remove the item, we just set it to null, so count
86        // just the non-null items.
87        int count = 0;
88        for (int i = 0; i < strings.size(); i++) {
89            if (strings.get(i) != null) {
90                count++;
91                assertEquals(strings.get(i).toString(), sender);
92            }
93        }
94        assertEquals(1, count);
95    }
96
97    public void testSenderNameBadInput() {
98        final ConversationInfo conv = createConversationInfo(1);
99        final MessageInfo msg = new MessageInfo(false, false, "****^****", 0, null);
100        conv.addMessage(msg);
101
102        final byte[] serialized = conv.toBlob();
103
104        ConversationInfo conv2 = ConversationInfo.fromBlob(serialized);
105        assertEquals(1, conv2.messageInfos.size());
106        assertEquals(msg.sender, conv2.messageInfos.get(0).sender);
107    }
108
109    public void testConversationSnippetsBadInput() {
110        final String firstSnippet = "*^*";
111        final String firstUnreadSnippet = "*^*^*";
112        final String lastSnippet = "*^*^*^*";
113
114        final ConversationInfo conv = new ConversationInfo(42, 49, firstSnippet,
115                firstUnreadSnippet, lastSnippet);
116        final MessageInfo msg = new MessageInfo(false, false, "Foo Bar", 0, null);
117        conv.addMessage(msg);
118
119        assertEquals(firstSnippet, conv.firstSnippet);
120        assertEquals(firstUnreadSnippet, conv.firstUnreadSnippet);
121        assertEquals(lastSnippet, conv.lastSnippet);
122
123        final byte[] serialized = conv.toBlob();
124
125        ConversationInfo conv2 = ConversationInfo.fromBlob(serialized);
126
127        assertEquals(conv.firstSnippet, conv2.firstSnippet);
128        assertEquals(conv.firstUnreadSnippet, conv2.firstUnreadSnippet);
129        assertEquals(conv.lastSnippet, conv2.lastSnippet);
130    }
131
132}
133