1c92c883fdf2287b49392692fa2e8d109dc26f785David Faden/* 2c92c883fdf2287b49392692fa2e8d109dc26f785David Faden * Copyright (C) 2014 The Android Open Source Project 3c92c883fdf2287b49392692fa2e8d109dc26f785David Faden * 4c92c883fdf2287b49392692fa2e8d109dc26f785David Faden * Licensed under the Apache License, Version 2.0 (the "License"); 5c92c883fdf2287b49392692fa2e8d109dc26f785David Faden * you may not use this file except in compliance with the License. 6c92c883fdf2287b49392692fa2e8d109dc26f785David Faden * You may obtain a copy of the License at 7c92c883fdf2287b49392692fa2e8d109dc26f785David Faden * 8c92c883fdf2287b49392692fa2e8d109dc26f785David Faden * http://www.apache.org/licenses/LICENSE-2.0 9c92c883fdf2287b49392692fa2e8d109dc26f785David Faden * 10c92c883fdf2287b49392692fa2e8d109dc26f785David Faden * Unless required by applicable law or agreed to in writing, software 11c92c883fdf2287b49392692fa2e8d109dc26f785David Faden * distributed under the License is distributed on an "AS IS" BASIS, 12c92c883fdf2287b49392692fa2e8d109dc26f785David Faden * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c92c883fdf2287b49392692fa2e8d109dc26f785David Faden * See the License for the specific language governing permissions and 14c92c883fdf2287b49392692fa2e8d109dc26f785David Faden * limitations under the License. 15c92c883fdf2287b49392692fa2e8d109dc26f785David Faden */ 16c92c883fdf2287b49392692fa2e8d109dc26f785David Faden 17c92c883fdf2287b49392692fa2e8d109dc26f785David Fadenpackage com.android.inputmethod.latin.utils; 18c92c883fdf2287b49392692fa2e8d109dc26f785David Faden 19c92c883fdf2287b49392692fa2e8d109dc26f785David Fadenimport android.test.AndroidTestCase; 20c92c883fdf2287b49392692fa2e8d109dc26f785David Fadenimport android.test.suitebuilder.annotation.SmallTest; 21c92c883fdf2287b49392692fa2e8d109dc26f785David Faden 225b91b551e5ffaf2c2e691dfbd434f21c82293986Jean Chalardimport com.android.inputmethod.latin.common.CollectionUtils; 235b91b551e5ffaf2c2e691dfbd434f21c82293986Jean Chalard 24c92c883fdf2287b49392692fa2e8d109dc26f785David Fadenimport java.util.ArrayList; 25c92c883fdf2287b49392692fa2e8d109dc26f785David Fadenimport java.util.Arrays; 26c92c883fdf2287b49392692fa2e8d109dc26f785David Fadenimport java.util.Collections; 2787eb7ac29c51ba4c341cb663cdbbc5ea74595f2dDan Zivkovicimport java.util.HashMap; 2887eb7ac29c51ba4c341cb663cdbbc5ea74595f2dDan Zivkovicimport java.util.List; 2987eb7ac29c51ba4c341cb663cdbbc5ea74595f2dDan Zivkovicimport java.util.Map; 30c92c883fdf2287b49392692fa2e8d109dc26f785David Faden 31c92c883fdf2287b49392692fa2e8d109dc26f785David Faden/** 32c92c883fdf2287b49392692fa2e8d109dc26f785David Faden * Tests for {@link CollectionUtils}. 33c92c883fdf2287b49392692fa2e8d109dc26f785David Faden */ 34c92c883fdf2287b49392692fa2e8d109dc26f785David Faden@SmallTest 35c92c883fdf2287b49392692fa2e8d109dc26f785David Fadenpublic class CollectionUtilsTests extends AndroidTestCase { 36c92c883fdf2287b49392692fa2e8d109dc26f785David Faden /** 37d443146c343fd880eb6178bae94edec0865bce62David Faden * Tests that {@link CollectionUtils#arrayAsList(Object[],int,int)} fails as expected 38d443146c343fd880eb6178bae94edec0865bce62David Faden * with some invalid inputs. 39d443146c343fd880eb6178bae94edec0865bce62David Faden */ 40d443146c343fd880eb6178bae94edec0865bce62David Faden public void testArrayAsListFailure() { 41d443146c343fd880eb6178bae94edec0865bce62David Faden final String[] array = { "0", "1" }; 42d443146c343fd880eb6178bae94edec0865bce62David Faden // Negative start 43d443146c343fd880eb6178bae94edec0865bce62David Faden try { 44d443146c343fd880eb6178bae94edec0865bce62David Faden CollectionUtils.arrayAsList(array, -1, 1); 45d443146c343fd880eb6178bae94edec0865bce62David Faden fail("Failed to catch start < 0"); 46d443146c343fd880eb6178bae94edec0865bce62David Faden } catch (final IllegalArgumentException e) { 47d443146c343fd880eb6178bae94edec0865bce62David Faden assertEquals("Invalid start: -1 end: 1 with array.length: 2", e.getMessage()); 48d443146c343fd880eb6178bae94edec0865bce62David Faden } 49d443146c343fd880eb6178bae94edec0865bce62David Faden // start > end 50d443146c343fd880eb6178bae94edec0865bce62David Faden try { 51d443146c343fd880eb6178bae94edec0865bce62David Faden CollectionUtils.arrayAsList(array, 1, -1); 52d443146c343fd880eb6178bae94edec0865bce62David Faden fail("Failed to catch start > end"); 53d443146c343fd880eb6178bae94edec0865bce62David Faden } catch (final IllegalArgumentException e) { 54d443146c343fd880eb6178bae94edec0865bce62David Faden assertEquals("Invalid start: 1 end: -1 with array.length: 2", e.getMessage()); 55d443146c343fd880eb6178bae94edec0865bce62David Faden } 56d443146c343fd880eb6178bae94edec0865bce62David Faden // end > array.length 57d443146c343fd880eb6178bae94edec0865bce62David Faden try { 58d443146c343fd880eb6178bae94edec0865bce62David Faden CollectionUtils.arrayAsList(array, 1, 3); 59d443146c343fd880eb6178bae94edec0865bce62David Faden fail("Failed to catch end > array.length"); 60d443146c343fd880eb6178bae94edec0865bce62David Faden } catch (final IllegalArgumentException e) { 61d443146c343fd880eb6178bae94edec0865bce62David Faden assertEquals("Invalid start: 1 end: 3 with array.length: 2", e.getMessage()); 62d443146c343fd880eb6178bae94edec0865bce62David Faden } 63d443146c343fd880eb6178bae94edec0865bce62David Faden } 64d443146c343fd880eb6178bae94edec0865bce62David Faden 65d443146c343fd880eb6178bae94edec0865bce62David Faden /** 66d3a4c5132422b189c8dbb94dbbe84a9b9761b0a8Tadashi G. Takaoka * Tests that {@link CollectionUtils#arrayAsList(Object[],int,int)} gives the expected 67c92c883fdf2287b49392692fa2e8d109dc26f785David Faden * results for a few valid inputs. 68c92c883fdf2287b49392692fa2e8d109dc26f785David Faden */ 69c92c883fdf2287b49392692fa2e8d109dc26f785David Faden public void testArrayAsList() { 70c92c883fdf2287b49392692fa2e8d109dc26f785David Faden final ArrayList<String> empty = new ArrayList<>(); 71541ef56e057eb7d81eae6e294ce9eb364f825867Dan Zivkovic assertEquals(empty, CollectionUtils.arrayAsList(new String[] {}, 0, 0)); 72d443146c343fd880eb6178bae94edec0865bce62David Faden final String[] array = { "0", "1", "2", "3", "4" }; 73c92c883fdf2287b49392692fa2e8d109dc26f785David Faden assertEquals(empty, CollectionUtils.arrayAsList(array, 0, 0)); 74c92c883fdf2287b49392692fa2e8d109dc26f785David Faden assertEquals(empty, CollectionUtils.arrayAsList(array, 1, 1)); 75d443146c343fd880eb6178bae94edec0865bce62David Faden assertEquals(empty, CollectionUtils.arrayAsList(array, array.length, array.length)); 76c92c883fdf2287b49392692fa2e8d109dc26f785David Faden final ArrayList<String> expected123 = new ArrayList<>(Arrays.asList("1", "2", "3")); 77c92c883fdf2287b49392692fa2e8d109dc26f785David Faden assertEquals(expected123, CollectionUtils.arrayAsList(array, 1, 4)); 78c92c883fdf2287b49392692fa2e8d109dc26f785David Faden } 79c92c883fdf2287b49392692fa2e8d109dc26f785David Faden 80c92c883fdf2287b49392692fa2e8d109dc26f785David Faden /** 81d3a4c5132422b189c8dbb94dbbe84a9b9761b0a8Tadashi G. Takaoka * Tests that {@link CollectionUtils#isNullOrEmpty(java.util.Collection)} gives the expected 82c92c883fdf2287b49392692fa2e8d109dc26f785David Faden * results for a few cases. 83c92c883fdf2287b49392692fa2e8d109dc26f785David Faden */ 84c92c883fdf2287b49392692fa2e8d109dc26f785David Faden public void testIsNullOrEmpty() { 85541ef56e057eb7d81eae6e294ce9eb364f825867Dan Zivkovic assertTrue(CollectionUtils.isNullOrEmpty((List<String>) null)); 86541ef56e057eb7d81eae6e294ce9eb364f825867Dan Zivkovic assertTrue(CollectionUtils.isNullOrEmpty((Map<String, String>) null)); 87541ef56e057eb7d81eae6e294ce9eb364f825867Dan Zivkovic assertTrue(CollectionUtils.isNullOrEmpty(new ArrayList<String>())); 88541ef56e057eb7d81eae6e294ce9eb364f825867Dan Zivkovic assertTrue(CollectionUtils.isNullOrEmpty(new HashMap<String, String>())); 8987eb7ac29c51ba4c341cb663cdbbc5ea74595f2dDan Zivkovic assertFalse(CollectionUtils.isNullOrEmpty(Collections.singletonList("Not empty"))); 9087eb7ac29c51ba4c341cb663cdbbc5ea74595f2dDan Zivkovic assertFalse(CollectionUtils.isNullOrEmpty(Collections.singletonMap("Not", "empty"))); 91c92c883fdf2287b49392692fa2e8d109dc26f785David Faden } 92c92c883fdf2287b49392692fa2e8d109dc26f785David Faden} 93