/portal-kernel/test/unit/com/liferay/portal/kernel/util/ArrayUtilTest.java

https://github.com/danielreuther/liferay-portal · Java · 1160 lines · 846 code · 297 blank · 17 comment · 5 complexity · 8d2a644d319843aa53ebb40c0505a2a0 MD5 · raw file

  1. /**
  2. * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
  3. *
  4. * This library is free software; you can redistribute it and/or modify it under
  5. * the terms of the GNU Lesser General Public License as published by the Free
  6. * Software Foundation; either version 2.1 of the License, or (at your option)
  7. * any later version.
  8. *
  9. * This library is distributed in the hope that it will be useful, but WITHOUT
  10. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  11. * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
  12. * details.
  13. */
  14. package com.liferay.portal.kernel.util;
  15. import com.liferay.portal.kernel.test.AssertUtils;
  16. import java.util.ArrayList;
  17. import java.util.Arrays;
  18. import java.util.List;
  19. import java.util.function.Predicate;
  20. import org.junit.Assert;
  21. import org.junit.Test;
  22. /**
  23. * @author Eudaldo Alonso
  24. * @author Roberto Díaz
  25. */
  26. public class ArrayUtilTest {
  27. @Test
  28. public void testAppend() {
  29. Assert.assertArrayEquals(
  30. new boolean[] {true, false, true},
  31. ArrayUtil.append(new boolean[] {true, false}, true));
  32. Assert.assertArrayEquals(
  33. new boolean[] {true, false, false, false},
  34. ArrayUtil.append(
  35. new boolean[] {true, false}, new boolean[] {false, false}));
  36. Assert.assertArrayEquals(
  37. new byte[] {1, 2, 3, 4},
  38. ArrayUtil.append(new byte[] {1, 2, 3}, (byte)4));
  39. Assert.assertArrayEquals(
  40. new byte[] {1, 2, 3, 4, 5, 6},
  41. ArrayUtil.append(new byte[] {1, 2, 3}, new byte[] {4, 5, 6}));
  42. Assert.assertArrayEquals(
  43. new char[] {'a', 'b', 'c', 'd'},
  44. ArrayUtil.append(new char[] {'a', 'b', 'c'}, 'd'));
  45. Assert.assertArrayEquals(
  46. new char[] {'a', 'b', 'c', 'd', 'e', 'f'},
  47. ArrayUtil.append(
  48. new char[] {'a', 'b', 'c'}, new char[] {'d', 'e', 'f'}));
  49. Assert.assertArrayEquals(
  50. new double[] {1.0, 2.0, 3.0, 4.0},
  51. ArrayUtil.append(new double[] {1.0, 2.0, 3.0}, 4.0), 0.0001);
  52. Assert.assertArrayEquals(
  53. new double[] {1.0, 2.0, 3.0, 4.0, 5.0, 6.0},
  54. ArrayUtil.append(
  55. new double[] {1.0, 2.0, 3.0}, new double[] {4.0, 5.0, 6.0}),
  56. 0.0001);
  57. Assert.assertArrayEquals(
  58. new float[] {1.0F, 2.0F, 3.0F, 4.0F},
  59. ArrayUtil.append(new float[] {1.0F, 2.0F, 3.0F}, 4.0F), 0.0001F);
  60. Assert.assertArrayEquals(
  61. new float[] {1.0F, 2.0F, 3.0F, 4.0F, 5.0F, 6.0F},
  62. ArrayUtil.append(
  63. new float[] {1.0F, 2.0F, 3.0F}, new float[] {4.0F, 5.0F, 6.0F}),
  64. 0.0001F);
  65. Assert.assertArrayEquals(
  66. new int[] {1, 2, 3, 4}, ArrayUtil.append(new int[] {1, 2, 3}, 4));
  67. Assert.assertArrayEquals(
  68. new int[] {1, 2, 3, 4, 5, 6},
  69. ArrayUtil.append(new int[] {1, 2, 3}, new int[] {4, 5, 6}));
  70. Assert.assertArrayEquals(
  71. new long[] {1L, 2L, 3L, 4L},
  72. ArrayUtil.append(new long[] {1L, 2L, 3L}, 4L));
  73. Assert.assertArrayEquals(
  74. new long[] {1L, 2L, 3L, 4L, 5L, 6L},
  75. ArrayUtil.append(new long[] {1L, 2L, 3L}, new long[] {4L, 5L, 6L}));
  76. Assert.assertArrayEquals(
  77. new short[] {1, 2, 3, 4},
  78. ArrayUtil.append(new short[] {1, 2, 3}, (short)4));
  79. Assert.assertArrayEquals(
  80. new short[] {1, 2, 3, 4, 5, 6},
  81. ArrayUtil.append(new short[] {1, 2, 3}, new short[] {4, 5, 6}));
  82. Assert.assertArrayEquals(
  83. new Integer[] {1, 2, 3, 4, 5, 6},
  84. ArrayUtil.append(
  85. new Integer[] {1, 2}, new Integer[] {3, 4},
  86. new Integer[] {5, 6}));
  87. Assert.assertArrayEquals(
  88. new Integer[] {1, 2, 3, 4},
  89. ArrayUtil.append(new Integer[] {1, 2, 3}, 4));
  90. Assert.assertArrayEquals(
  91. new Integer[] {1, 2, 3, 4, 5, 6},
  92. ArrayUtil.append(new Integer[] {1, 2, 3}, new Integer[] {4, 5, 6}));
  93. Assert.assertArrayEquals(
  94. new Integer[][] {new Integer[] {1, 2, 3}, new Integer[] {4, 5, 6}},
  95. ArrayUtil.append(
  96. new Integer[][] {new Integer[] {1, 2, 3}},
  97. new Integer[] {4, 5, 6}));
  98. Assert.assertArrayEquals(
  99. new Integer[][] {new Integer[] {1, 2, 3}, new Integer[] {4, 5, 6}},
  100. ArrayUtil.append(
  101. new Integer[][] {new Integer[] {1, 2, 3}},
  102. new Integer[][] {new Integer[] {4, 5, 6}}));
  103. }
  104. @Test
  105. public void testContainsAllBooleanArray() throws Exception {
  106. boolean[] array1 = {true};
  107. boolean[] array2 = {true, false};
  108. Assert.assertFalse(ArrayUtil.containsAll(array1, array2));
  109. Assert.assertTrue(ArrayUtil.containsAll(array2, array1));
  110. }
  111. @Test
  112. public void testContainsAllByteArray() throws Exception {
  113. byte[] array1 = {1, 2};
  114. byte[] array2 = {1, 2, 3};
  115. Assert.assertFalse(ArrayUtil.containsAll(array1, array2));
  116. Assert.assertTrue(ArrayUtil.containsAll(array2, array1));
  117. }
  118. @Test
  119. public void testContainsAllCharArray() throws Exception {
  120. char[] array1 = {'a', 'b'};
  121. char[] array2 = {'a', 'b', 'c'};
  122. Assert.assertFalse(ArrayUtil.containsAll(array1, array2));
  123. Assert.assertTrue(ArrayUtil.containsAll(array2, array1));
  124. }
  125. @Test
  126. public void testContainsAllDoubleArray() throws Exception {
  127. double[] array1 = {1.5D, 2.5D};
  128. double[] array2 = {1.5D, 2.5D, 3.5D};
  129. Assert.assertFalse(ArrayUtil.containsAll(array1, array2));
  130. Assert.assertTrue(ArrayUtil.containsAll(array2, array1));
  131. }
  132. @Test
  133. public void testContainsAllFloatArray() throws Exception {
  134. float[] array1 = {1.5F, 2.5F};
  135. float[] array2 = {1.5F, 2.5F, 3.5F};
  136. Assert.assertFalse(ArrayUtil.containsAll(array1, array2));
  137. Assert.assertTrue(ArrayUtil.containsAll(array2, array1));
  138. }
  139. @Test
  140. public void testContainsAllIntArray() throws Exception {
  141. int[] array1 = {1, 2};
  142. int[] array2 = {1, 2, 3};
  143. Assert.assertFalse(ArrayUtil.containsAll(array1, array2));
  144. Assert.assertTrue(ArrayUtil.containsAll(array2, array1));
  145. }
  146. @Test
  147. public void testContainsAllLongArray() throws Exception {
  148. long[] array1 = {1L, 2L};
  149. long[] array2 = {1L, 2L, 3L};
  150. Assert.assertFalse(ArrayUtil.containsAll(array1, array2));
  151. Assert.assertTrue(ArrayUtil.containsAll(array2, array1));
  152. }
  153. @Test
  154. public void testContainsAllShortArray() throws Exception {
  155. short[] array1 = {1, 2};
  156. short[] array2 = {1, 2, 3};
  157. Assert.assertFalse(ArrayUtil.containsAll(array1, array2));
  158. Assert.assertTrue(ArrayUtil.containsAll(array2, array1));
  159. }
  160. @Test
  161. public void testContainsAllUserArray() throws Exception {
  162. User brian = new User("brian", 20);
  163. User julio = new User("julio", 20);
  164. User sergio = new User("sergio", 20);
  165. User[] array1 = {julio, sergio};
  166. User[] array2 = {brian, julio, sergio};
  167. Assert.assertFalse(ArrayUtil.containsAll(array1, array2));
  168. Assert.assertTrue(ArrayUtil.containsAll(array2, array1));
  169. }
  170. @Test
  171. public void testContainsBooleanArray() throws Exception {
  172. boolean[] array1 = {true, true};
  173. Assert.assertFalse(ArrayUtil.contains(array1, false));
  174. Assert.assertTrue(ArrayUtil.contains(array1, true));
  175. }
  176. @Test
  177. public void testContainsByteArray() throws Exception {
  178. byte[] array = {2, 3};
  179. Assert.assertFalse(ArrayUtil.contains(array, (byte)1));
  180. Assert.assertTrue(ArrayUtil.contains(array, (byte)2));
  181. }
  182. @Test
  183. public void testContainsCharArray() throws Exception {
  184. char[] array = {'a', 'b'};
  185. Assert.assertFalse(ArrayUtil.contains(array, 'C'));
  186. Assert.assertTrue(ArrayUtil.contains(array, 'a'));
  187. }
  188. @Test
  189. public void testContainsDoubleArray() throws Exception {
  190. double[] array = {2.5D, 3.5D};
  191. Assert.assertFalse(ArrayUtil.contains(array, 1.5D));
  192. Assert.assertTrue(ArrayUtil.contains(array, 2.5D));
  193. }
  194. @Test
  195. public void testContainsFloatArray() throws Exception {
  196. float[] array = {2.5F, 3.5F};
  197. Assert.assertFalse(ArrayUtil.contains(array, 1.5F));
  198. Assert.assertTrue(ArrayUtil.contains(array, 2.5F));
  199. }
  200. @Test
  201. public void testContainsIntArray() throws Exception {
  202. int[] array = {2, 3};
  203. Assert.assertFalse(ArrayUtil.contains(array, 1));
  204. Assert.assertTrue(ArrayUtil.contains(array, 2));
  205. }
  206. @Test
  207. public void testContainsLongArray() throws Exception {
  208. long[] array = {2L, 3L};
  209. Assert.assertFalse(ArrayUtil.contains(array, 1L));
  210. Assert.assertTrue(ArrayUtil.contains(array, 2L));
  211. }
  212. @Test
  213. public void testContainsShortArray() throws Exception {
  214. short[] array = {2, 3};
  215. Assert.assertFalse(ArrayUtil.contains(array, (short)1));
  216. Assert.assertTrue(ArrayUtil.contains(array, (short)2));
  217. }
  218. @Test
  219. public void testContainsStringArray() throws Exception {
  220. String[] array = {"a", "b", null};
  221. Assert.assertFalse(ArrayUtil.contains(array, "c", true));
  222. Assert.assertFalse(ArrayUtil.contains(array, "C", false));
  223. Assert.assertTrue(ArrayUtil.contains(array, "a", true));
  224. Assert.assertTrue(ArrayUtil.contains(array, "a", false));
  225. Assert.assertTrue(ArrayUtil.contains(array, "A", true));
  226. Assert.assertTrue(ArrayUtil.contains(array, null, true));
  227. Assert.assertTrue(ArrayUtil.contains(array, null, false));
  228. }
  229. @Test
  230. public void testContainsUserArray() throws Exception {
  231. User brian = new User("brian", 20);
  232. User julio = new User("julio", 20);
  233. User sergio = new User("sergio", 20);
  234. User[] array = {julio, sergio, null};
  235. Assert.assertFalse(ArrayUtil.contains(array, brian));
  236. Assert.assertTrue(ArrayUtil.contains(array, julio));
  237. Assert.assertTrue(ArrayUtil.contains(array, null));
  238. }
  239. @Test
  240. public void testCountStringArray() {
  241. Assert.assertEquals(
  242. 1,
  243. ArrayUtil.count(new String[] {"a", "b", "c"}, s -> s.equals("b")));
  244. }
  245. @Test
  246. public void testCountStringEmptyArray() {
  247. Assert.assertEquals(0, ArrayUtil.count(new String[0], s -> true));
  248. }
  249. @Test
  250. public void testCountStringNullArray() {
  251. String[] array = null;
  252. Assert.assertEquals(0, ArrayUtil.count(array, s -> true));
  253. }
  254. @Test
  255. public void testFilterDoubleArray() {
  256. double[] array = ArrayUtil.filter(
  257. new double[] {0.1, 0.2, 1.2, 1.3}, _doublePredicate);
  258. Assert.assertEquals(Arrays.toString(array), 2, array.length);
  259. AssertUtils.assertEquals(new double[] {1.2, 1.3}, array);
  260. }
  261. @Test
  262. public void testFilterDoubleEmptyArray() {
  263. double[] array = ArrayUtil.filter(new double[0], _doublePredicate);
  264. Assert.assertEquals(Arrays.toString(array), 0, array.length);
  265. AssertUtils.assertEquals(new double[0], array);
  266. }
  267. @Test
  268. public void testFilterDoubleNullArray() {
  269. double[] array = null;
  270. double[] filteredArray = ArrayUtil.filter(array, _doublePredicate);
  271. Assert.assertNull(filteredArray);
  272. }
  273. @Test
  274. public void testFilterIntegerArray() {
  275. int[] array = ArrayUtil.filter(
  276. new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, _integerPredicate);
  277. Assert.assertEquals(Arrays.toString(array), 5, array.length);
  278. Assert.assertArrayEquals(new int[] {5, 6, 7, 8, 9}, array);
  279. }
  280. @Test
  281. public void testFilterIntegerEmptyArray() {
  282. int[] array = ArrayUtil.filter(new int[0], _integerPredicate);
  283. Assert.assertEquals(Arrays.toString(array), 0, array.length);
  284. Assert.assertArrayEquals(new int[0], array);
  285. }
  286. @Test
  287. public void testFilterIntegerNullArray() {
  288. int[] array = null;
  289. int[] filteredArray = ArrayUtil.filter(array, _integerPredicate);
  290. Assert.assertNull(filteredArray);
  291. }
  292. @Test
  293. public void testFilterUserArray() {
  294. User[] array = ArrayUtil.filter(
  295. new User[] {new User("james", 17), new User("john", 26)},
  296. _userPredicate);
  297. Assert.assertEquals(Arrays.toString(array), 1, array.length);
  298. Assert.assertEquals("john", array[0].getName());
  299. Assert.assertEquals(26, array[0].getAge());
  300. }
  301. @Test
  302. public void testFilterUserEmptyArray() {
  303. User[] array = ArrayUtil.filter(new User[0], _userPredicate);
  304. Assert.assertEquals(Arrays.toString(array), 0, array.length);
  305. }
  306. @Test
  307. public void testFilterUserNullArray() {
  308. User[] array = ArrayUtil.filter(null, _userPredicate);
  309. Assert.assertNull(array);
  310. }
  311. @Test
  312. public void testIsEmptyBooleanArray() {
  313. Assert.assertTrue(ArrayUtil.isEmpty((boolean[])null));
  314. Assert.assertTrue(ArrayUtil.isEmpty(new boolean[0]));
  315. Assert.assertFalse(ArrayUtil.isEmpty(new boolean[] {true, true}));
  316. }
  317. @Test
  318. public void testIsEmptyByteArray() {
  319. Assert.assertTrue(ArrayUtil.isEmpty((byte[])null));
  320. Assert.assertTrue(ArrayUtil.isEmpty(new byte[0]));
  321. Assert.assertFalse(ArrayUtil.isEmpty(new byte[] {1, 2}));
  322. }
  323. @Test
  324. public void testIsEmptyCharArray() {
  325. Assert.assertTrue(ArrayUtil.isEmpty((char[])null));
  326. Assert.assertTrue(ArrayUtil.isEmpty(new char[0]));
  327. Assert.assertFalse(ArrayUtil.isEmpty(new char[] {1, 2}));
  328. }
  329. @Test
  330. public void testIsEmptyDoubleArray() {
  331. Assert.assertTrue(ArrayUtil.isEmpty((double[])null));
  332. Assert.assertTrue(ArrayUtil.isEmpty(new double[0]));
  333. Assert.assertFalse(ArrayUtil.isEmpty(new double[] {1, 2}));
  334. }
  335. @Test
  336. public void testIsEmptyFloatArray() {
  337. Assert.assertTrue(ArrayUtil.isEmpty((float[])null));
  338. Assert.assertTrue(ArrayUtil.isEmpty(new float[0]));
  339. Assert.assertFalse(ArrayUtil.isEmpty(new float[] {1, 2}));
  340. }
  341. @Test
  342. public void testIsEmptyIntArray() {
  343. Assert.assertTrue(ArrayUtil.isEmpty((int[])null));
  344. Assert.assertTrue(ArrayUtil.isEmpty(new int[0]));
  345. Assert.assertFalse(ArrayUtil.isEmpty(new int[] {1, 2}));
  346. }
  347. @Test
  348. public void testIsEmptyLongArray() {
  349. Assert.assertTrue(ArrayUtil.isEmpty((long[])null));
  350. Assert.assertTrue(ArrayUtil.isEmpty(new long[0]));
  351. Assert.assertFalse(ArrayUtil.isEmpty(new long[] {1, 2}));
  352. }
  353. @Test
  354. public void testIsEmptyShortArray() {
  355. Assert.assertTrue(ArrayUtil.isEmpty((short[])null));
  356. Assert.assertTrue(ArrayUtil.isEmpty(new short[0]));
  357. Assert.assertFalse(ArrayUtil.isEmpty(new short[] {1, 2}));
  358. }
  359. @Test
  360. public void testIsEmptyUserArray() {
  361. Assert.assertTrue(ArrayUtil.isEmpty((User[])null));
  362. Assert.assertTrue(ArrayUtil.isEmpty(new User[0]));
  363. Assert.assertFalse(
  364. ArrayUtil.isEmpty(
  365. new User[] {
  366. new User("brian", 20), new User("julio", 20),
  367. new User("sergio", 20)
  368. }));
  369. }
  370. @Test
  371. public void testIsNotEmptyBooleanArray() {
  372. Assert.assertFalse(ArrayUtil.isNotEmpty((boolean[])null));
  373. Assert.assertFalse(ArrayUtil.isNotEmpty(new boolean[0]));
  374. Assert.assertTrue(ArrayUtil.isNotEmpty(new boolean[] {true, true}));
  375. }
  376. @Test
  377. public void testIsNotEmptyByteArray() {
  378. Assert.assertFalse(ArrayUtil.isNotEmpty((byte[])null));
  379. Assert.assertFalse(ArrayUtil.isNotEmpty(new byte[0]));
  380. Assert.assertTrue(ArrayUtil.isNotEmpty(new byte[] {1, 2}));
  381. }
  382. @Test
  383. public void testIsNotEmptyCharArray() {
  384. Assert.assertFalse(ArrayUtil.isNotEmpty((char[])null));
  385. Assert.assertFalse(ArrayUtil.isNotEmpty(new char[0]));
  386. Assert.assertTrue(ArrayUtil.isNotEmpty(new char[] {1, 2}));
  387. }
  388. @Test
  389. public void testIsNotEmptyDoubleArray() {
  390. Assert.assertFalse(ArrayUtil.isNotEmpty((double[])null));
  391. Assert.assertFalse(ArrayUtil.isNotEmpty(new double[0]));
  392. Assert.assertTrue(ArrayUtil.isNotEmpty(new double[] {1, 2}));
  393. }
  394. @Test
  395. public void testIsNotEmptyFloatArray() {
  396. Assert.assertFalse(ArrayUtil.isNotEmpty((float[])null));
  397. Assert.assertFalse(ArrayUtil.isNotEmpty(new float[0]));
  398. Assert.assertTrue(ArrayUtil.isNotEmpty(new float[] {1, 2}));
  399. }
  400. @Test
  401. public void testIsNotEmptyIntArray() {
  402. Assert.assertFalse(ArrayUtil.isNotEmpty((int[])null));
  403. Assert.assertFalse(ArrayUtil.isNotEmpty(new int[0]));
  404. Assert.assertTrue(ArrayUtil.isNotEmpty(new int[] {1, 2}));
  405. }
  406. @Test
  407. public void testIsNotEmptyLongArray() {
  408. Assert.assertFalse(ArrayUtil.isNotEmpty((long[])null));
  409. Assert.assertFalse(ArrayUtil.isNotEmpty(new long[0]));
  410. Assert.assertTrue(ArrayUtil.isNotEmpty(new long[] {1, 2}));
  411. }
  412. @Test
  413. public void testIsNotEmptyShortArray() {
  414. Assert.assertFalse(ArrayUtil.isNotEmpty((short[])null));
  415. Assert.assertFalse(ArrayUtil.isNotEmpty(new short[0]));
  416. Assert.assertTrue(ArrayUtil.isNotEmpty(new short[] {1, 2}));
  417. }
  418. @Test
  419. public void testIsNotEmptyUserArray() {
  420. Assert.assertFalse(ArrayUtil.isNotEmpty((User[])null));
  421. Assert.assertFalse(ArrayUtil.isNotEmpty(new User[0]));
  422. Assert.assertTrue(
  423. ArrayUtil.isNotEmpty(
  424. new User[] {
  425. new User("brian", 20), new User("julio", 20),
  426. new User("sergio", 20)
  427. }));
  428. }
  429. @Test
  430. public void testRemoveFromBooleanArray() {
  431. boolean[] array = {true, true, false};
  432. array = ArrayUtil.remove(array, false);
  433. Assert.assertArrayEquals(new boolean[] {true, true}, array);
  434. }
  435. @Test
  436. public void testRemoveFromBooleanEmptyArray() {
  437. boolean[] array = {};
  438. array = ArrayUtil.remove(array, false);
  439. Assert.assertTrue(ArrayUtil.isEmpty(array));
  440. }
  441. @Test
  442. public void testRemoveFromBooleanNullArray() {
  443. boolean[] array = null;
  444. array = ArrayUtil.remove(array, false);
  445. Assert.assertNull(array);
  446. }
  447. @Test
  448. public void testRemoveFromByteArray() {
  449. byte[] array = {1, 2, 3};
  450. array = ArrayUtil.remove(array, (byte)3);
  451. Assert.assertArrayEquals(new byte[] {1, 2}, array);
  452. }
  453. @Test
  454. public void testRemoveFromByteEmptyArray() {
  455. byte[] array = {};
  456. array = ArrayUtil.remove(array, (byte)3);
  457. Assert.assertTrue(ArrayUtil.isEmpty(array));
  458. }
  459. @Test
  460. public void testRemoveFromByteNullArray() {
  461. byte[] array = null;
  462. array = ArrayUtil.remove(array, (byte)3);
  463. Assert.assertNull(array);
  464. }
  465. @Test
  466. public void testRemoveFromCharArray() {
  467. char[] array = {'a', 'b', 'c'};
  468. array = ArrayUtil.remove(array, 'c');
  469. Assert.assertArrayEquals(new char[] {'a', 'b'}, array);
  470. }
  471. @Test
  472. public void testRemoveFromCharEmptyArray() {
  473. char[] array = {};
  474. array = ArrayUtil.remove(array, 'c');
  475. Assert.assertTrue(ArrayUtil.isEmpty(array));
  476. }
  477. @Test
  478. public void testRemoveFromCharNullArray() {
  479. char[] array = null;
  480. array = ArrayUtil.remove(array, 'c');
  481. Assert.assertNull(array);
  482. }
  483. @Test
  484. public void testRemoveFromDoubleArray() {
  485. double[] array = {1.0D, 2.0D, 3.0D};
  486. array = ArrayUtil.remove(array, 3.0D);
  487. Assert.assertArrayEquals(new double[] {1.0D, 2.0D}, array, 0);
  488. }
  489. @Test
  490. public void testRemoveFromDoubleEmptyArray() {
  491. double[] array = {};
  492. array = ArrayUtil.remove(array, 3.0D);
  493. Assert.assertTrue(ArrayUtil.isEmpty(array));
  494. }
  495. @Test
  496. public void testRemoveFromDoubleNullArray() {
  497. double[] array = null;
  498. array = ArrayUtil.remove(array, 3.0D);
  499. Assert.assertNull(array);
  500. }
  501. @Test
  502. public void testRemoveFromFloatArray() {
  503. float[] array = {1.5F, 2.5F, 3.5F};
  504. array = ArrayUtil.remove(array, 3.5F);
  505. Assert.assertArrayEquals(new float[] {1.5F, 2.5F}, array, 0);
  506. }
  507. @Test
  508. public void testRemoveFromFloatEmptyArray() {
  509. float[] array = {};
  510. array = ArrayUtil.remove(array, 3.5F);
  511. Assert.assertTrue(ArrayUtil.isEmpty(array));
  512. }
  513. @Test
  514. public void testRemoveFromFloatNullArray() {
  515. float[] array = null;
  516. array = ArrayUtil.remove(array, 3.5F);
  517. Assert.assertNull(array);
  518. }
  519. @Test
  520. public void testRemoveFromIntArray() {
  521. int[] array = {1, 2, 3};
  522. array = ArrayUtil.remove(array, (byte)3);
  523. Assert.assertArrayEquals(new int[] {1, 2}, array);
  524. }
  525. @Test
  526. public void testRemoveFromIntEmptyArray() {
  527. int[] array = {};
  528. array = ArrayUtil.remove(array, (byte)3);
  529. Assert.assertTrue(ArrayUtil.isEmpty(array));
  530. }
  531. @Test
  532. public void testRemoveFromIntNullArray() {
  533. int[] array = null;
  534. array = ArrayUtil.remove(array, (byte)3);
  535. Assert.assertNull(array);
  536. }
  537. @Test
  538. public void testRemoveFromLongArray() {
  539. long[] array = {1L, 2L, 3L};
  540. array = ArrayUtil.remove(array, 3L);
  541. Assert.assertArrayEquals(new long[] {1L, 2L}, array);
  542. }
  543. @Test
  544. public void testRemoveFromLongEmptyArray() {
  545. long[] array = {};
  546. array = ArrayUtil.remove(array, 3L);
  547. Assert.assertTrue(ArrayUtil.isEmpty(array));
  548. }
  549. @Test
  550. public void testRemoveFromLongNullArray() {
  551. long[] array = null;
  552. array = ArrayUtil.remove(array, 3L);
  553. Assert.assertNull(array);
  554. }
  555. @Test
  556. public void testRemoveFromShortArray() {
  557. short[] array = {1, 2, 3};
  558. array = ArrayUtil.remove(array, (short)3);
  559. Assert.assertArrayEquals(new short[] {1, 2}, array);
  560. }
  561. @Test
  562. public void testRemoveFromShortEmptyArray() {
  563. short[] array = {};
  564. array = ArrayUtil.remove(array, (short)3);
  565. Assert.assertTrue(ArrayUtil.isEmpty(array));
  566. }
  567. @Test
  568. public void testRemoveFromShortNullArray() {
  569. short[] array = null;
  570. array = ArrayUtil.remove(array, (short)3);
  571. Assert.assertNull(array);
  572. }
  573. @Test
  574. public void testRemoveFromStringArray() {
  575. String[] array = {"a", "b", "c"};
  576. array = ArrayUtil.remove(array, "c");
  577. Assert.assertArrayEquals(new String[] {"a", "b"}, array);
  578. }
  579. @Test
  580. public void testRemoveFromStringEmptyArray() {
  581. String[] array = {};
  582. array = ArrayUtil.remove(array, "c");
  583. Assert.assertTrue(ArrayUtil.isEmpty(array));
  584. }
  585. @Test
  586. public void testRemoveFromStringNullArray() {
  587. String[] array = null;
  588. array = ArrayUtil.remove(array, "c");
  589. Assert.assertNull(array);
  590. }
  591. @Test
  592. public void testReverseBooleanArray() throws Exception {
  593. boolean[] array = {true, true, false};
  594. ArrayUtil.reverse(array);
  595. Assert.assertFalse(array[0]);
  596. Assert.assertTrue(array[1]);
  597. Assert.assertTrue(array[2]);
  598. }
  599. @Test
  600. public void testReverseCharArray() throws Exception {
  601. char[] array = {'a', 'b', 'c'};
  602. ArrayUtil.reverse(array);
  603. Assert.assertArrayEquals(new char[] {'c', 'b', 'a'}, array);
  604. }
  605. @Test
  606. public void testReverseDoubleArray() throws Exception {
  607. double[] array = {111.0, 222.0, 333.0};
  608. ArrayUtil.reverse(array);
  609. Assert.assertArrayEquals(new double[] {333.0, 222.0, 111.0}, array, 0);
  610. }
  611. @Test
  612. public void testReverseIntArray() throws Exception {
  613. int[] array = {111, 222, 333};
  614. ArrayUtil.reverse(array);
  615. Assert.assertArrayEquals(new int[] {333, 222, 111}, array);
  616. }
  617. @Test
  618. public void testReverseLongArray() throws Exception {
  619. long[] array = {111, 222, 333};
  620. ArrayUtil.reverse(array);
  621. Assert.assertArrayEquals(new long[] {333, 222, 111}, array);
  622. }
  623. @Test
  624. public void testReverseShortArray() throws Exception {
  625. short[] array = {111, 222, 333};
  626. ArrayUtil.reverse(array);
  627. Assert.assertArrayEquals(new short[] {333, 222, 111}, array);
  628. }
  629. @Test
  630. public void testReverseStringArray() throws Exception {
  631. String[] array = {"aaa", "bbb", "ccc"};
  632. ArrayUtil.reverse(array);
  633. Assert.assertArrayEquals(new String[] {"ccc", "bbb", "aaa"}, array);
  634. }
  635. @Test
  636. public void testSoredUnique() {
  637. byte[] bytes = {2, 3, 1};
  638. byte[] sortedUniqueBytes = ArrayUtil.sortedUnique(bytes);
  639. Assert.assertSame(bytes, sortedUniqueBytes);
  640. Assert.assertArrayEquals(new byte[] {1, 2, 3}, sortedUniqueBytes);
  641. bytes = new byte[] {2, 3, 1, 2, 3, 3, 1};
  642. sortedUniqueBytes = ArrayUtil.sortedUnique(bytes);
  643. Assert.assertNotSame(bytes, sortedUniqueBytes);
  644. Assert.assertArrayEquals(new byte[] {1, 2, 3}, sortedUniqueBytes);
  645. double[] doubles = {2.0, 3.0, 1.0};
  646. double[] sortedUniqueDoubles = ArrayUtil.sortedUnique(doubles);
  647. Assert.assertSame(doubles, sortedUniqueDoubles);
  648. Assert.assertArrayEquals(
  649. new double[] {1.0, 2.0, 3.0}, sortedUniqueDoubles, 0.0001);
  650. doubles = new double[] {2.0, 3.0, 1.0, 2.0, 3.0, 3.0, 1.0};
  651. sortedUniqueDoubles = ArrayUtil.sortedUnique(doubles);
  652. Assert.assertNotSame(doubles, sortedUniqueDoubles);
  653. Assert.assertArrayEquals(
  654. new double[] {1.0, 2.0, 3.0}, sortedUniqueDoubles, 0.0001);
  655. float[] floats = {2.0F, 3.0F, 1.0F};
  656. float[] sortedUniqueFloats = ArrayUtil.sortedUnique(floats);
  657. Assert.assertSame(floats, sortedUniqueFloats);
  658. Assert.assertArrayEquals(
  659. new float[] {1.0F, 2.0F, 3.0F}, sortedUniqueFloats, 0.0001F);
  660. floats = new float[] {2.0F, 3.0F, 1.0F, 2.0F, 3.0F, 3.0F, 1.0F};
  661. sortedUniqueFloats = ArrayUtil.sortedUnique(floats);
  662. Assert.assertNotSame(floats, sortedUniqueFloats);
  663. Assert.assertArrayEquals(
  664. new float[] {1.0F, 2.0F, 3.0F}, sortedUniqueFloats, 0.0001F);
  665. int[] ints = {2, 3, 1};
  666. int[] sortedUniqueInts = ArrayUtil.sortedUnique(ints);
  667. Assert.assertSame(ints, sortedUniqueInts);
  668. Assert.assertArrayEquals(new int[] {1, 2, 3}, sortedUniqueInts);
  669. ints = new int[] {2, 3, 1, 2, 3, 3, 1};
  670. sortedUniqueInts = ArrayUtil.sortedUnique(ints);
  671. Assert.assertNotSame(ints, sortedUniqueInts);
  672. Assert.assertArrayEquals(new int[] {1, 2, 3}, sortedUniqueInts);
  673. long[] longs = {2, 3, 1};
  674. long[] sortedUniqueLongs = ArrayUtil.sortedUnique(longs);
  675. Assert.assertSame(longs, sortedUniqueLongs);
  676. Assert.assertArrayEquals(new long[] {1, 2, 3}, sortedUniqueLongs);
  677. longs = new long[] {2, 3, 1, 2, 3, 3, 1};
  678. sortedUniqueLongs = ArrayUtil.sortedUnique(longs);
  679. Assert.assertNotSame(longs, sortedUniqueLongs);
  680. Assert.assertArrayEquals(new long[] {1, 2, 3}, sortedUniqueLongs);
  681. short[] shorts = {2, 3, 1};
  682. short[] sortedUniqueShorts = ArrayUtil.sortedUnique(shorts);
  683. Assert.assertSame(shorts, sortedUniqueShorts);
  684. Assert.assertArrayEquals(new short[] {1, 2, 3}, sortedUniqueShorts);
  685. shorts = new short[] {2, 3, 1, 2, 3, 3, 1};
  686. sortedUniqueShorts = ArrayUtil.sortedUnique(shorts);
  687. Assert.assertNotSame(shorts, sortedUniqueShorts);
  688. Assert.assertArrayEquals(new short[] {1, 2, 3}, sortedUniqueShorts);
  689. String[] strings = {"world", "hello"};
  690. String[] sortedUniqueStrings = ArrayUtil.sortedUnique(strings);
  691. Assert.assertSame(strings, sortedUniqueStrings);
  692. Assert.assertArrayEquals(
  693. new String[] {"hello", "world"}, sortedUniqueStrings);
  694. strings = new String[] {"world", "hello", null, "hello", null, "world"};
  695. sortedUniqueStrings = ArrayUtil.sortedUnique(strings);
  696. Assert.assertNotSame(strings, sortedUniqueStrings);
  697. Assert.assertArrayEquals(
  698. new String[] {"hello", "world", null}, sortedUniqueStrings);
  699. }
  700. @Test
  701. public void testSplitEmptyArray() {
  702. int[] array = new int[0];
  703. int[][] arraySplit = (int[][])ArrayUtil.split(array, 2);
  704. Assert.assertEquals(Arrays.toString(arraySplit), 0, arraySplit.length);
  705. }
  706. @Test
  707. public void testSplitEqualToSplitSize() {
  708. int[] array = {1, 2};
  709. int[][] arraySplit = (int[][])ArrayUtil.split(array, 2);
  710. Assert.assertEquals(Arrays.toString(arraySplit), 1, arraySplit.length);
  711. Assert.assertSame(array, arraySplit[0]);
  712. }
  713. @Test
  714. public void testSplitGreaterThanSplitSize() {
  715. int[] array = {1, 2};
  716. int[][] expected = {{1}, {2}};
  717. int[][] arraySplit = (int[][])ArrayUtil.split(array, 1);
  718. Assert.assertEquals(Arrays.toString(arraySplit), 2, arraySplit.length);
  719. for (int i = 0; i < arraySplit.length; i++) {
  720. Assert.assertArrayEquals(expected[i], arraySplit[i]);
  721. }
  722. }
  723. @Test
  724. public void testSplitLessThanSplitSize() {
  725. int[] array = {0, 1, 2, 3};
  726. int[][] arraySplit = (int[][])ArrayUtil.split(array, 5);
  727. Assert.assertEquals(Arrays.toString(arraySplit), 1, arraySplit.length);
  728. Assert.assertSame(array, arraySplit[0]);
  729. }
  730. @Test
  731. public void testSubset() {
  732. Assert.assertArrayEquals(
  733. new boolean[] {true, false},
  734. ArrayUtil.subset(new boolean[] {true, false, true}, 0, 2));
  735. Assert.assertArrayEquals(
  736. new byte[] {1, 2, 3},
  737. ArrayUtil.subset(new byte[] {1, 2, 3, 4}, 0, 3));
  738. Assert.assertArrayEquals(
  739. new char[] {'a', 'b', 'c'},
  740. ArrayUtil.subset(new char[] {'a', 'b', 'c', 'd'}, 0, 3));
  741. Assert.assertArrayEquals(
  742. new double[] {1.0, 2.0, 3.0},
  743. ArrayUtil.subset(new double[] {1.0, 2.0, 3.0, 4.0}, 0, 3), 0.0001);
  744. Assert.assertArrayEquals(
  745. new float[] {1.0F, 2.0F, 3.0F},
  746. ArrayUtil.subset(new float[] {1.0F, 2.0F, 3.0F, 4.0F}, 0, 3),
  747. 0.0001F);
  748. Assert.assertArrayEquals(
  749. new int[] {1, 2, 3},
  750. ArrayUtil.subset(new int[] {1, 2, 3, 4}, 0, 3));
  751. Assert.assertArrayEquals(
  752. new long[] {1, 2, 3},
  753. ArrayUtil.subset(new long[] {1, 2, 3, 4}, 0, 3));
  754. Assert.assertArrayEquals(
  755. new short[] {1, 2, 3},
  756. ArrayUtil.subset(new short[] {1, 2, 3, 4}, 0, 3));
  757. Assert.assertArrayEquals(
  758. new Integer[] {1, 2, 3},
  759. ArrayUtil.subset(new Integer[] {1, 2, 3, 4}, 0, 3));
  760. }
  761. @Test
  762. public void testToDoubleArray() throws Exception {
  763. List<Double> list = new ArrayList<>();
  764. list.add(1.0);
  765. list.add(2.0);
  766. double[] array = ArrayUtil.toDoubleArray(list);
  767. Assert.assertEquals(list.toString(), array.length, list.size());
  768. for (int i = 0; i < list.size(); i++) {
  769. Double value = list.get(i);
  770. AssertUtils.assertEquals(value.doubleValue(), array[i]);
  771. }
  772. }
  773. @Test
  774. public void testToFloatArray() throws Exception {
  775. List<Float> list = new ArrayList<>();
  776. list.add(1.0F);
  777. list.add(2.0F);
  778. float[] array = ArrayUtil.toFloatArray(list);
  779. Assert.assertEquals(list.toString(), array.length, list.size());
  780. for (int i = 0; i < list.size(); i++) {
  781. Float value = list.get(i);
  782. AssertUtils.assertEquals(value.floatValue(), array[i]);
  783. }
  784. }
  785. @Test
  786. public void testToIntArray() throws Exception {
  787. List<Integer> list = new ArrayList<>();
  788. list.add(1);
  789. list.add(2);
  790. int[] array = ArrayUtil.toIntArray(list);
  791. Assert.assertEquals(list.toString(), array.length, list.size());
  792. for (int i = 0; i < list.size(); i++) {
  793. Integer value = list.get(i);
  794. Assert.assertEquals(value.intValue(), array[i]);
  795. }
  796. }
  797. @Test
  798. public void testToLongArray() throws Exception {
  799. List<Long> list = new ArrayList<>();
  800. list.add(1L);
  801. list.add(2L);
  802. long[] array = ArrayUtil.toLongArray(list);
  803. Assert.assertEquals(list.toString(), array.length, list.size());
  804. for (int i = 0; i < list.size(); i++) {
  805. Long value = list.get(i);
  806. Assert.assertEquals(value.longValue(), array[i]);
  807. }
  808. }
  809. @Test
  810. public void testUnique() {
  811. byte[] bytes = {1, 2, 3};
  812. Assert.assertArrayEquals(
  813. bytes, ArrayUtil.unique(new byte[] {1, 2, 3, 3, 2}));
  814. Assert.assertSame(bytes, ArrayUtil.unique(bytes));
  815. double[] doubles = {1.0, 2.0, 3.0};
  816. Assert.assertArrayEquals(
  817. doubles,
  818. ArrayUtil.unique(new double[] {1.0, 2.0, 3.0, 1.0, 2.0, 3.0}),
  819. 0.0001);
  820. Assert.assertSame(doubles, ArrayUtil.unique(doubles));
  821. float[] floats = {1.0F, 2.0F, 3.0F};
  822. Assert.assertArrayEquals(
  823. floats,
  824. ArrayUtil.unique(new float[] {1.0F, 2.0F, 3.0F, 3.0F, 2.0F}),
  825. 0.0001F);
  826. Assert.assertSame(floats, ArrayUtil.unique(floats));
  827. int[] ints = {1, 2, 3};
  828. Assert.assertArrayEquals(
  829. ints, ArrayUtil.unique(new int[] {1, 2, 3, 3, 2}));
  830. Assert.assertSame(ints, ArrayUtil.unique(ints));
  831. long[] longs = {1L, 2L, 3L};
  832. Assert.assertArrayEquals(
  833. longs, ArrayUtil.unique(new long[] {1L, 2L, 3L, 3L, 2L}));
  834. Assert.assertSame(longs, ArrayUtil.unique(longs));
  835. short[] shorts = {1, 2, 3};
  836. Assert.assertArrayEquals(
  837. shorts, ArrayUtil.unique(new short[] {1, 2, 3, 3, 2}));
  838. Assert.assertSame(shorts, ArrayUtil.unique(shorts));
  839. String[] strings = {"hello", null, "world"};
  840. Assert.assertArrayEquals(
  841. strings,
  842. ArrayUtil.unique(
  843. new String[] {"hello", null, "hello", null, "world", "world"}));
  844. Assert.assertSame(strings, ArrayUtil.unique(strings));
  845. }
  846. private final Predicate<Double> _doublePredicate = d -> d >= 1.1;
  847. private final Predicate<Integer> _integerPredicate = i -> i >= 5;
  848. private final Predicate<User> _userPredicate = user -> user.getAge() > 18;
  849. private static class User {
  850. public User(String name, int age) {
  851. _name = name;
  852. _age = age;
  853. }
  854. public int getAge() {
  855. return _age;
  856. }
  857. public String getName() {
  858. return _name;
  859. }
  860. private final int _age;
  861. private final String _name;
  862. }
  863. }