1 /* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.contacts.group; 18 19 import android.os.Bundle; 20 import android.provider.ContactsContract.Contacts; 21 import android.test.AndroidTestCase; 22 import android.test.MoreAsserts; 23 24 import androidx.test.filters.SmallTest; 25 26 import com.android.contacts.list.ContactsSectionIndexer; 27 28 import java.util.Arrays; 29 import java.util.List; 30 31 @SmallTest 32 public class GroupUtilTest extends AndroidTestCase { 33 testNeedTrimming()34 public void testNeedTrimming() { 35 final int zeroCount = 0; 36 final int emptyPositions[] = new int[]{}; 37 final int emptyCounts[] = new int[]{}; 38 assertFalse(GroupUtil.needTrimming(zeroCount, emptyPositions, emptyCounts)); 39 40 final int count = 22; 41 int positions[] = new int[]{0, 1, 3, 5, 8, 9}; 42 int counts[] = new int[]{1, 2, 2, 3, 1, 2}; 43 assertFalse(GroupUtil.needTrimming(count, positions, counts)); 44 45 positions = new int[]{0, 1, 7, 9, 16, 17, 19, 20}; 46 counts = new int[]{1, 6, 2, 7, 1, 2, 1, 2}; 47 assertTrue(GroupUtil.needTrimming(count, positions, counts)); 48 } 49 testUpdateBundle_smallSet()50 public void testUpdateBundle_smallSet() { 51 final Bundle bundle = new Bundle(); 52 final String[] sections = new String[]{"…", "A", "I", "T", "W", "Y", "Z", "#"}; 53 final int[] counts = new int[]{1, 6, 2, 7, 1, 2, 1, 2}; 54 final Integer[] subscripts = new Integer[]{1, 2, 5, 7, 8, 10, 11, 15, 16, 17, 18}; 55 final List<Integer> subscriptsList = Arrays.asList(subscripts); 56 final ContactsSectionIndexer indexer = new ContactsSectionIndexer(sections, counts); 57 58 GroupUtil.updateBundle(bundle, indexer, subscriptsList, sections, counts); 59 60 final String[] newSections = new String[]{"…", "A", "T", "Z", "#"}; 61 final int[] newCounts = new int[]{1, 3, 4, 1, 2}; 62 63 assertNotNull(bundle.getStringArray(Contacts.EXTRA_ADDRESS_BOOK_INDEX_TITLES)); 64 MoreAsserts.assertEquals("Wrong sections!", newSections, bundle.getStringArray(Contacts 65 .EXTRA_ADDRESS_BOOK_INDEX_TITLES)); 66 67 assertNotNull(bundle.getIntArray(Contacts.EXTRA_ADDRESS_BOOK_INDEX_COUNTS)); 68 MoreAsserts.assertEquals("Wrong counts!", newCounts, bundle.getIntArray(Contacts 69 .EXTRA_ADDRESS_BOOK_INDEX_COUNTS)); 70 } 71 testUpdateBundle_mediumSet()72 public void testUpdateBundle_mediumSet() { 73 final Bundle bundle = new Bundle(); 74 final String[] sections = new String[]{"A", "B", "C", "D", "E", "F", "G", "H", "J", 75 "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "V", "W", "X", "Y", "Z"}; 76 final int[] counts = new int[]{81, 36, 84, 55, 28, 15, 18, 38, 145, 60, 41, 73, 15, 2, 56, 77 1, 74, 73, 45, 14, 28, 9, 18, 21}; 78 final Integer[] subscripts = new Integer[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 79 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 80 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 81 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 82 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 83 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 84 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 85 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 86 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 87 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 88 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 89 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 90 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 91 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 92 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 93 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 94 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 95 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 96 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 97 337, 344, 347, 348, 349, 350, 351, 352, 353, 354, 495, 496, 497, 498, 499, 558, 559, 98 597, 598, 599, 600, 601, 602, 668, 669, 670, 671, 672, 673, 746, 747, 820, 821, 885, 99 886, 887, 888, 889, 890, 891, 892, 893, 894, 939, 979, 980, 981, 982, 983, 984, 985, 100 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 101 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 102 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029}; 103 final List<Integer> subscriptsList = Arrays.asList(subscripts); 104 final ContactsSectionIndexer indexer = new ContactsSectionIndexer(sections, counts); 105 106 GroupUtil.updateBundle(bundle, indexer, subscriptsList, sections, counts); 107 108 final String[] newSections = new String[]{"A", "H", "J", "K", "L", "M", "N", "O", "P", 109 "R", "S", "T", "V", "W"}; 110 final int[] newCounts = new int[]{1, 8, 140, 58, 37, 65, 15, 2, 55, 72, 63, 44, 14, 25}; 111 112 assertNotNull(bundle.getStringArray(Contacts.EXTRA_ADDRESS_BOOK_INDEX_TITLES)); 113 MoreAsserts.assertEquals("Wrong sections!", newSections, bundle.getStringArray(Contacts 114 .EXTRA_ADDRESS_BOOK_INDEX_TITLES)); 115 116 assertNotNull(bundle.getIntArray(Contacts.EXTRA_ADDRESS_BOOK_INDEX_COUNTS)); 117 MoreAsserts.assertEquals("Wrong counts!", newCounts, bundle.getIntArray(Contacts 118 .EXTRA_ADDRESS_BOOK_INDEX_COUNTS)); 119 } 120 121 } 122