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 & 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