1e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey/* 2e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey * Copyright (C) 2009 The Android Open Source Project 3e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey * 4e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey * Licensed under the Apache License, Version 2.0 (the "License"); 5e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey * you may not use this file except in compliance with the License. 6e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey * You may obtain a copy of the License at 7e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey * 8e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey * http://www.apache.org/licenses/LICENSE-2.0 9e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey * 10e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey * Unless required by applicable law or agreed to in writing, software 11e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey * distributed under the License is distributed on an "AS IS" BASIS, 12e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey * See the License for the specific language governing permissions and 14e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey * limitations under the License. 15e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey */ 16e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey 17e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkeypackage com.android.contacts; 18e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey 19e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkeyimport android.content.Intent; 20c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onukiimport android.provider.ContactsContract.CommonDataKinds.Phone; 21e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkeyimport android.test.AndroidTestCase; 22dfe20250b9f3d2cf134ba2a8a97399322ad48010Dmitri Plotnikovimport android.test.suitebuilder.annotation.SmallTest; 23e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey 24e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey/** 25e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey * Tests for {@link ContactsUtils}. 26e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey */ 27dfe20250b9f3d2cf134ba2a8a97399322ad48010Dmitri Plotnikov@SmallTest 28e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkeypublic class ContactsUtilsTests extends AndroidTestCase { 29e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey 30e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey public void testIsGraphicNull() throws Exception { 31e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey assertFalse(ContactsUtils.isGraphic(null)); 32e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey } 33e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey 34e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey public void testIsGraphicEmpty() throws Exception { 35e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey assertFalse(ContactsUtils.isGraphic("")); 36e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey } 37e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey 38e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey public void testIsGraphicSpaces() throws Exception { 39e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey assertFalse(ContactsUtils.isGraphic(" ")); 40e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey } 41e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey 42e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey public void testIsGraphicPunctuation() throws Exception { 43e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey assertTrue(ContactsUtils.isGraphic(".")); 44e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey } 45c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onuki 46c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onuki public void testAreObjectsEqual() throws Exception { 47c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onuki assertTrue("null:null", ContactsUtils.areObjectsEqual(null, null)); 48c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onuki assertTrue("1:1", ContactsUtils.areObjectsEqual(1, 1)); 49c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onuki 50c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onuki assertFalse("null:1", ContactsUtils.areObjectsEqual(null, 1)); 51c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onuki assertFalse("1:null", ContactsUtils.areObjectsEqual(1, null)); 52c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onuki assertFalse("1:2", ContactsUtils.areObjectsEqual(1, 2)); 53c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onuki } 54c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onuki 55d8b0a05f88099a734b75ed6b4628660feb00445fDaniel Lehmann public void testShouldCollapse() throws Exception { 56dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("1", true, null, null, null, null); 57dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("2", true, "a", "b", "a", "b"); 58dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann 59dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("11", false, "a", null, null, null); 60dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("12", false, null, "a", null, null); 61dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("13", false, null, null, "a", null); 62dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("14", false, null, null, null, "a"); 63dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann 64dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("21", false, "a", "b", null, null); 65dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("22", false, "a", "b", "a", null); 66dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("23", false, "a", "b", null, "b"); 67dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("24", false, "a", "b", "a", "x"); 68dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("25", false, "a", "b", "x", "b"); 69dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann 70dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("31", false, null, null, "a", "b"); 71dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("32", false, "a", null, "a", "b"); 72dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("33", false, null, "b", "a", "b"); 73dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("34", false, "a", "x", "a", "b"); 74dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("35", false, "x", "b", "a", "b"); 75dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann 76dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("41", true, Phone.CONTENT_ITEM_TYPE, null, Phone.CONTENT_ITEM_TYPE, 77c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onuki null); 78dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("42", true, Phone.CONTENT_ITEM_TYPE, "1", Phone.CONTENT_ITEM_TYPE, "1"); 79c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onuki 80dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("51", false, Phone.CONTENT_ITEM_TYPE, "1", Phone.CONTENT_ITEM_TYPE, 81d8b0a05f88099a734b75ed6b4628660feb00445fDaniel Lehmann "2"); 82dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("52", false, Phone.CONTENT_ITEM_TYPE, "1", Phone.CONTENT_ITEM_TYPE, 83d8b0a05f88099a734b75ed6b4628660feb00445fDaniel Lehmann null); 84dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("53", false, Phone.CONTENT_ITEM_TYPE, null, Phone.CONTENT_ITEM_TYPE, 85d8b0a05f88099a734b75ed6b4628660feb00445fDaniel Lehmann "2"); 86d8b0a05f88099a734b75ed6b4628660feb00445fDaniel Lehmann 87d8b0a05f88099a734b75ed6b4628660feb00445fDaniel Lehmann // Test phone numbers 88dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("60", true, 89d8b0a05f88099a734b75ed6b4628660feb00445fDaniel Lehmann Phone.CONTENT_ITEM_TYPE, "1234567", 90d8b0a05f88099a734b75ed6b4628660feb00445fDaniel Lehmann Phone.CONTENT_ITEM_TYPE, "1234567"); 91dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("61", false, 92d8b0a05f88099a734b75ed6b4628660feb00445fDaniel Lehmann Phone.CONTENT_ITEM_TYPE, "1234567", 93d8b0a05f88099a734b75ed6b4628660feb00445fDaniel Lehmann Phone.CONTENT_ITEM_TYPE, "1234568"); 94dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("62", true, 95d8b0a05f88099a734b75ed6b4628660feb00445fDaniel Lehmann Phone.CONTENT_ITEM_TYPE, "1234567;0", 96d8b0a05f88099a734b75ed6b4628660feb00445fDaniel Lehmann Phone.CONTENT_ITEM_TYPE, "1234567;0"); 97dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("63", false, 98d8b0a05f88099a734b75ed6b4628660feb00445fDaniel Lehmann Phone.CONTENT_ITEM_TYPE, "1234567;89321", 99dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann Phone.CONTENT_ITEM_TYPE, "1234567;89322"); 100dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("64", true, 101d8b0a05f88099a734b75ed6b4628660feb00445fDaniel Lehmann Phone.CONTENT_ITEM_TYPE, "1234567;89321", 102d8b0a05f88099a734b75ed6b4628660feb00445fDaniel Lehmann Phone.CONTENT_ITEM_TYPE, "1234567;89321"); 103dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("65", false, 104d8b0a05f88099a734b75ed6b4628660feb00445fDaniel Lehmann Phone.CONTENT_ITEM_TYPE, "1234567;0111111111", 105d8b0a05f88099a734b75ed6b4628660feb00445fDaniel Lehmann Phone.CONTENT_ITEM_TYPE, "1234567;"); 106dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("66", false, 107d8b0a05f88099a734b75ed6b4628660feb00445fDaniel Lehmann Phone.CONTENT_ITEM_TYPE, "12345675426;91970xxxxx", 108d8b0a05f88099a734b75ed6b4628660feb00445fDaniel Lehmann Phone.CONTENT_ITEM_TYPE, "12345675426"); 109dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("67", false, 110d8b0a05f88099a734b75ed6b4628660feb00445fDaniel Lehmann Phone.CONTENT_ITEM_TYPE, "12345675426;23456xxxxx", 111d8b0a05f88099a734b75ed6b4628660feb00445fDaniel Lehmann Phone.CONTENT_ITEM_TYPE, "12345675426;234567xxxx"); 112dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("68", true, 113d8b0a05f88099a734b75ed6b4628660feb00445fDaniel Lehmann Phone.CONTENT_ITEM_TYPE, "1234567;1234567;1234567", 114d8b0a05f88099a734b75ed6b4628660feb00445fDaniel Lehmann Phone.CONTENT_ITEM_TYPE, "1234567;1234567;1234567"); 115dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("69", false, 116d8b0a05f88099a734b75ed6b4628660feb00445fDaniel Lehmann Phone.CONTENT_ITEM_TYPE, "1234567;1234567;1234567", 117d8b0a05f88099a734b75ed6b4628660feb00445fDaniel Lehmann Phone.CONTENT_ITEM_TYPE, "1234567;1234567"); 118dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann 119dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann // test some numbers with country and area code 120dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("70", true, 121dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann Phone.CONTENT_ITEM_TYPE, "+49 (89) 12345678", 122dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann Phone.CONTENT_ITEM_TYPE, "+49 (89) 12345678"); 123dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("71", true, 124dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann Phone.CONTENT_ITEM_TYPE, "+49 (89) 12345678", 125dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann Phone.CONTENT_ITEM_TYPE, "+49 (89)12345678"); 126dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("72", true, 127dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann Phone.CONTENT_ITEM_TYPE, "+49 (8092) 1234", 128dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann Phone.CONTENT_ITEM_TYPE, "+49 (8092)1234"); 129ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki assertCollapses("73", false, 130dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann Phone.CONTENT_ITEM_TYPE, "0049 (8092) 1234", 131dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann Phone.CONTENT_ITEM_TYPE, "+49/80921234"); 132dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("74", false, 133dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann Phone.CONTENT_ITEM_TYPE, "+49 (89) 12345678", 134dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann Phone.CONTENT_ITEM_TYPE, "+49 (89) 12345679"); 135dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann 136dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann // test some numbers with wait symbol and area code 137dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("80", true, 138dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann Phone.CONTENT_ITEM_TYPE, "+49 (8092) 1234;89321", 139dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann Phone.CONTENT_ITEM_TYPE, "+49/80921234;89321"); 140dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("81", false, 141dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann Phone.CONTENT_ITEM_TYPE, "+49 (8092) 1234;89321", 142dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann Phone.CONTENT_ITEM_TYPE, "+49/80921235;89321"); 143dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("82", false, 144dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann Phone.CONTENT_ITEM_TYPE, "+49 (8092) 1234;89322", 145dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann Phone.CONTENT_ITEM_TYPE, "+49/80921234;89321"); 146dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertCollapses("83", true, 147dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann Phone.CONTENT_ITEM_TYPE, "1234567;+49 (8092) 1234", 148dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann Phone.CONTENT_ITEM_TYPE, "1234567;+49/80921234"); 149dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann 150ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki assertCollapses("86", true, 151ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki Phone.CONTENT_ITEM_TYPE, "", 152ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki Phone.CONTENT_ITEM_TYPE, ""); 153ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki 154ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki assertCollapses("87", false, 155ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki Phone.CONTENT_ITEM_TYPE, "1", 156ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki Phone.CONTENT_ITEM_TYPE, ""); 157ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki 158ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki assertCollapses("88", false, 159ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki Phone.CONTENT_ITEM_TYPE, "", 160ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki Phone.CONTENT_ITEM_TYPE, "1"); 161ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki 162ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki assertCollapses("89", true, 163ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki Phone.CONTENT_ITEM_TYPE, "---", 164ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki Phone.CONTENT_ITEM_TYPE, "---"); 165ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki 166ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki assertCollapses("90", true, 167ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki Phone.CONTENT_ITEM_TYPE, "1-/().", 168ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki Phone.CONTENT_ITEM_TYPE, "--$%1"); 169ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki 170ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki assertCollapses("91", true, 171ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki Phone.CONTENT_ITEM_TYPE, "abcdefghijklmnopqrstuvwxyz", 172ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki Phone.CONTENT_ITEM_TYPE, "22233344455566677778889999"); 173ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki 174ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki assertCollapses("92", false, 175ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki Phone.CONTENT_ITEM_TYPE, "1;2", 176ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki Phone.CONTENT_ITEM_TYPE, "12"); 177ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki 178ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki assertCollapses("93", false, 179ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki Phone.CONTENT_ITEM_TYPE, "1,2", 180ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki Phone.CONTENT_ITEM_TYPE, "12"); 181c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onuki } 182c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onuki 183dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann private void assertCollapses(String message, boolean expected, CharSequence mimetype1, 184c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onuki CharSequence data1, CharSequence mimetype2, CharSequence data2) { 185c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onuki assertEquals(message, expected, 18601a9fac7bd963d29c607cb17d579b68a71aa8854Dave Santoro ContactsUtils.shouldCollapse(mimetype1, data1, mimetype2, data2)); 187dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertEquals(message, expected, 18801a9fac7bd963d29c607cb17d579b68a71aa8854Dave Santoro ContactsUtils.shouldCollapse(mimetype2, data2, mimetype1, data1)); 189dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann 190ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki // If data1 and data2 are the same instance, make sure the same test passes with different 191ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki // instances. 192dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann if (data1 == data2 && data1 != null) { 193ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki // Create a different instance 194ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki final CharSequence data2_newref = new StringBuilder(data2).append("").toString(); 195ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki 196ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki if (data1 == data2_newref) { 197ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki // In some cases no matter what we do the runtime reuses the same instance, so 198ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki // we can't do the "different instance" test. 199ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki return; 200ac1bc8c58ba9d03ff5a24d1094f663042b7164d9Makoto Onuki } 201dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann 202dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann // we have two different instances, now make sure we get the same result as before 203dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertEquals(message, expected, 20401a9fac7bd963d29c607cb17d579b68a71aa8854Dave Santoro ContactsUtils.shouldCollapse(mimetype1, data1, mimetype2, 205dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann data2_newref)); 206dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann assertEquals(message, expected, 20701a9fac7bd963d29c607cb17d579b68a71aa8854Dave Santoro ContactsUtils.shouldCollapse(mimetype2, data2_newref, mimetype1, 208dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann data1)); 209dabe1234137b8edb472421d5afdc7b657f148142Daniel Lehmann } 210c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onuki } 211c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onuki 212c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onuki public void testAreIntentActionEqual() throws Exception { 213c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onuki assertTrue("1", ContactsUtils.areIntentActionEqual(null, null)); 214c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onuki assertTrue("1", ContactsUtils.areIntentActionEqual(new Intent("a"), new Intent("a"))); 215c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onuki 216c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onuki assertFalse("11", ContactsUtils.areIntentActionEqual(new Intent("a"), null)); 217c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onuki assertFalse("12", ContactsUtils.areIntentActionEqual(null, new Intent("a"))); 218c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onuki 219c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onuki assertFalse("21", ContactsUtils.areIntentActionEqual(new Intent("a"), new Intent())); 220c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onuki assertFalse("22", ContactsUtils.areIntentActionEqual(new Intent(), new Intent("b"))); 221c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onuki assertFalse("23", ContactsUtils.areIntentActionEqual(new Intent("a"), new Intent("b"))); 222c710b0e7a7932288763d7e3d08a882ac188303a8Makoto Onuki } 223e31dac84479a4c7b356edfc062a447cdfb5efc69Jeff Sharkey} 224