124b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang/*
224b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang * Copyright (C) 2012 Google Inc.
324b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang * Licensed to The Android Open Source Project.
424b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang *
524b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang * Licensed under the Apache License, Version 2.0 (the "License");
624b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang * you may not use this file except in compliance with the License.
724b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang * You may obtain a copy of the License at
824b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang *
924b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang *      http://www.apache.org/licenses/LICENSE-2.0
1024b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang *
1124b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang * Unless required by applicable law or agreed to in writing, software
1224b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang * distributed under the License is distributed on an "AS IS" BASIS,
1324b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1424b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang * See the License for the specific language governing permissions and
1524b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang * limitations under the License.
1624b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang */
1724b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang
1824b2641bf314de5393f47fbcd298475f2d1fd418Andy Huangpackage com.android.mail.browse;
1924b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang
20de40dd3a292531c7dd8a5741eb0980f666a88b84Andrew Sappersteinimport android.support.v4.text.BidiFormatter;
2124b2641bf314de5393f47fbcd298475f2d1fd418Andy Huangimport android.test.AndroidTestCase;
2224b2641bf314de5393f47fbcd298475f2d1fd418Andy Huangimport android.test.suitebuilder.annotation.SmallTest;
2324b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang
240f6ffbe21c85205fdef551f0c723b9de29010efeTony Mantlerimport com.android.emailcommon.mail.Address;
25f8a75260dbaa8c1d1929c68975b2cbf93236fa6cTony Mantler
26f8a75260dbaa8c1d1929c68975b2cbf93236fa6cTony Mantlerimport java.util.HashMap;
27f8a75260dbaa8c1d1929c68975b2cbf93236fa6cTony Mantler
2824b2641bf314de5393f47fbcd298475f2d1fd418Andy Huangpublic class MessageHeaderViewTest extends AndroidTestCase {
2924b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang
3024b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang    @SmallTest
31a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein    public void testRecipientSummaryLongTo() {
32a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein        String[] to = makeRecipientArray("TO", 60);
33a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein        String[] cc = makeRecipientArray("CC", 60);
34a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein        String summary = MessageHeaderView.getRecipientSummaryText(getContext(), "", "", to, cc,
35de40dd3a292531c7dd8a5741eb0980f666a88b84Andrew Sapperstein                null, new HashMap<String, Address>(), null, BidiFormatter.getInstance()).toString();
36a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein
37a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein        assertTrue(summary.contains("TO00"));
38a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein        assertTrue(summary.contains("TO49"));
39a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein        assertFalse(summary.contains("TO50"));
40a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein    }
41a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein
42a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein    @SmallTest
43a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein    public void testRecipientSummaryLongMultipleLists() {
44a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein        String[] to = makeRecipientArray("TO", 20);
45a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein        String[] cc = makeRecipientArray("CC", 10);
46a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein        String[] bcc = makeRecipientArray("BB", 60);
47a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein        String summary = MessageHeaderView.getRecipientSummaryText(getContext(), "", "", to, cc,
48de40dd3a292531c7dd8a5741eb0980f666a88b84Andrew Sapperstein                bcc, new HashMap<String, Address>(), null, BidiFormatter.getInstance()).toString();
49a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein
50a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein        assertTrue(summary.contains("TO00"));
51a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein        assertTrue(summary.contains("TO19"));
52a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein        assertTrue(summary.contains("CC00"));
53a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein        assertTrue(summary.contains("CC09"));
54a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein        assertTrue(summary.contains("BB00"));
55a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein        assertTrue(summary.contains("BB19"));
56a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein        assertFalse(summary.contains("BB20"));
57a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein    }
58a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein
59a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein    private static String[] makeRecipientArray(String prefix, int len) {
60a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein        String[] arr = new String[len];
61a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein        for (int i=0; i < arr.length; i++) {
62a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein            arr[i] = String.format("\"%s%02d\" <foo@bar.com>", prefix, i);
63a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein        }
64a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein        return arr;
65a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein    }
66a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein
67a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein    @SmallTest
6824b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang    public void testMakeSnippet() {
6924b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang        assertSnippetEquals("Hello, world!",
7024b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang                "Hello, world!");
7124b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang        assertSnippetEquals(" Foo Bar ",
7224b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang                "\nFoo\n \nBar\t  ");
7324b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang        assertSnippetEquals("Hello, World...",
7424b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang                "<p><span style=\"color:red\">Hello, <b>World</b></span>...</p>");
7524b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang        assertSnippetEquals("Simon & Garfunkel",
7624b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang                "Simon &amp; Garfunkel");
7724b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang    }
7824b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang
79ff8553f20964f4c31b0c503a9e1daff6ae08a9c7Scott Kennedy    private static void assertSnippetEquals(final String expectedSnippet,
80ff8553f20964f4c31b0c503a9e1daff6ae08a9c7Scott Kennedy            final String messageBody) {
8124b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang        assertEquals(expectedSnippet, MessageHeaderView.makeSnippet(messageBody));
8224b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang    }
8324b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang
8424b2641bf314de5393f47fbcd298475f2d1fd418Andy Huang}
85