View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      https://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  
18  package org.apache.commons.lang3;
19  
20  import static org.junit.jupiter.api.Assertions.assertArrayEquals;
21  import static org.junit.jupiter.api.Assertions.assertEquals;
22  import static org.junit.jupiter.api.Assertions.assertNull;
23  import static org.junit.jupiter.api.Assertions.assertSame;
24  
25  import org.apache.commons.lang3.function.FailableIntFunction;
26  import org.junit.jupiter.api.Test;
27  
28  /**
29   * Tests {@link ArrayFill}.
30   */
31  class ArrayFillTest extends AbstractLangTest {
32  
33      @Test
34      void testClearByteArray() {
35          final byte[] array = new byte[3];
36          final byte val = 0;
37          final byte[] actual = ArrayFill.clear(array);
38          assertSame(array, actual);
39          for (final byte v : actual) {
40              assertEquals(val, v);
41          }
42      }
43  
44      @Test
45      void testClearByteArrayNull() {
46          final byte[] array = null;
47          final byte[] actual = ArrayFill.clear(array);
48          assertSame(array, actual);
49      }
50  
51      @Test
52      void testClearCharArray() {
53          final char[] array = new char[3];
54          final char val = 0;
55          final char[] actual = ArrayFill.clear(array);
56          assertSame(array, actual);
57          for (final char v : actual) {
58              assertEquals(val, v);
59          }
60      }
61  
62      @Test
63      void testClearCharArrayNull() {
64          final char[] array = null;
65          final char[] actual = ArrayFill.clear(array);
66          assertSame(array, actual);
67      }
68  
69      @Test
70      void testClearCharArrayRange() {
71          final char[] array = {'A', 'B', 'C', 'D', 'E'};
72          final char[] actual = ArrayFill.clear(array, 1, 4);
73          assertSame(array, actual);
74          assertEquals('A', actual[0]);
75          assertEquals('\0', actual[1]);
76          assertEquals('\0', actual[2]);
77          assertEquals('\0', actual[3]);
78          assertEquals('E', actual[4]);
79      }
80  
81      @Test
82      void testClearCharArrayRangeNull() {
83          final char[] actual = ArrayFill.clear(null, 0, 0);
84          assertNull(actual);
85      }
86  
87      @Test
88      void testFillBooleanArray() {
89          final boolean[] array = new boolean[3];
90          final boolean val = true;
91          final boolean[] actual = ArrayFill.fill(array, val);
92          assertSame(array, actual);
93          for (final boolean v : actual) {
94              assertEquals(val, v);
95          }
96      }
97  
98      @Test
99      void testFillBooleanArrayNull() {
100         final boolean[] array = null;
101         final boolean val = true;
102         final boolean[] actual = ArrayFill.fill(array, val);
103         assertSame(array, actual);
104     }
105 
106     @Test
107     void testFillByteArray() {
108         final byte[] array = new byte[3];
109         final byte val = 1;
110         final byte[] actual = ArrayFill.fill(array, val);
111         assertSame(array, actual);
112         for (final byte v : actual) {
113             assertEquals(val, v);
114         }
115     }
116 
117     @Test
118     void testFillByteArrayNull() {
119         final byte[] array = null;
120         final byte val = 1;
121         final byte[] actual = ArrayFill.fill(array, val);
122         assertSame(array, actual);
123     }
124 
125     @Test
126     void testFillCharArray() {
127         final char[] array = new char[3];
128         final char val = 1;
129         final char[] actual = ArrayFill.fill(array, val);
130         assertSame(array, actual);
131         for (final char v : actual) {
132             assertEquals(val, v);
133         }
134     }
135 
136     @Test
137     void testFillCharArrayNull() {
138         final char[] array = null;
139         final char val = 1;
140         final char[] actual = ArrayFill.fill(array, val);
141         assertSame(array, actual);
142     }
143 
144     @Test
145     void testFillCharArrayRange() {
146         final char[] array = {'A', 'B', 'C', 'D', 'E'};
147         final char val = 'Z';
148         final char[] actual = ArrayFill.fill(array, 1, 4, val);
149         assertSame(array, actual);
150         assertEquals('A', actual[0]);
151         assertEquals('Z', actual[1]);
152         assertEquals('Z', actual[2]);
153         assertEquals('Z', actual[3]);
154         assertEquals('E', actual[4]);
155     }
156 
157     @Test
158     void testFillCharArrayRangeEmpty() {
159         final char[] array = {'A', 'B', 'C'};
160         final char[] actual = ArrayFill.fill(array, 1, 1, 'Z');
161         assertSame(array, actual);
162         assertArrayEquals(new char[] {'A', 'B', 'C'}, actual);
163     }
164 
165     @Test
166     void testFillCharArrayRangeNull() {
167         final char[] actual = ArrayFill.fill(null, 0, 0, 'Z');
168         assertNull(actual);
169     }
170 
171     @Test
172     void testFillDoubleArray() {
173         final double[] array = new double[3];
174         final double val = 1;
175         final double[] actual = ArrayFill.fill(array, val);
176         assertSame(array, actual);
177         for (final double v : actual) {
178             assertEquals(val, v);
179         }
180     }
181 
182     @Test
183     void testFillDoubleArrayNull() {
184         final double[] array = null;
185         final double val = 1;
186         final double[] actual = ArrayFill.fill(array, val);
187         assertSame(array, actual);
188     }
189 
190     @Test
191     void testFillFloatArray() {
192         final float[] array = new float[3];
193         final float val = 1;
194         final float[] actual = ArrayFill.fill(array, val);
195         assertSame(array, actual);
196         for (final float v : actual) {
197             assertEquals(val, v);
198         }
199     }
200 
201     @Test
202     void testFillFloatArrayNull() {
203         final float[] array = null;
204         final float val = 1;
205         final float[] actual = ArrayFill.fill(array, val);
206         assertSame(array, actual);
207     }
208 
209     @Test
210     void testFillFunction() throws Exception {
211         final FailableIntFunction<?, Exception> nullIntFunction = null;
212         assertNull(ArrayFill.fill(null, nullIntFunction));
213         assertArrayEquals(null, ArrayFill.fill(null, nullIntFunction));
214         assertArrayEquals(ArrayUtils.EMPTY_BOOLEAN_OBJECT_ARRAY, ArrayFill.fill(ArrayUtils.EMPTY_BOOLEAN_OBJECT_ARRAY, nullIntFunction));
215         assertArrayEquals(ArrayUtils.EMPTY_OBJECT_ARRAY, ArrayFill.fill(ArrayUtils.EMPTY_OBJECT_ARRAY, nullIntFunction));
216         final Integer[] array = new Integer[10];
217         final Integer[] array2 = ArrayFill.fill(array, Integer::valueOf);
218         assertSame(array, array2);
219         for (int i = 0; i < array.length; i++) {
220             assertEquals(i, array[i].intValue());
221         }
222     }
223 
224     @Test
225     void testFillIntArray() {
226         final int[] array = new int[3];
227         final int val = 1;
228         final int[] actual = ArrayFill.fill(array, val);
229         assertSame(array, actual);
230         for (final int v : actual) {
231             assertEquals(val, v);
232         }
233     }
234 
235     @Test
236     void testFillIntArrayNull() {
237         final int[] array = null;
238         final int val = 1;
239         final int[] actual = ArrayFill.fill(array, val);
240         assertSame(array, actual);
241     }
242 
243     @Test
244     void testFillLongArray() {
245         final long[] array = new long[3];
246         final long val = 1;
247         final long[] actual = ArrayFill.fill(array, val);
248         assertSame(array, actual);
249         for (final long v : actual) {
250             assertEquals(val, v);
251         }
252     }
253 
254     @Test
255     void testFillLongArrayNull() {
256         final long[] array = null;
257         final long val = 1;
258         final long[] actual = ArrayFill.fill(array, val);
259         assertSame(array, actual);
260     }
261 
262     @Test
263     void testFillObjectArray() {
264         final String[] array = new String[3];
265         final String val = "A";
266         final String[] actual = ArrayFill.fill(array, val);
267         assertSame(array, actual);
268         for (final String v : actual) {
269             assertEquals(val, v);
270         }
271     }
272 
273     @Test
274     void testFillObjectArrayNull() {
275         final Object[] array = null;
276         final Object val = 1;
277         final Object[] actual = ArrayFill.fill(array, val);
278         assertSame(array, actual);
279     }
280 
281     @Test
282     void testFillShortArray() {
283         final short[] array = new short[3];
284         final short val = 1;
285         final short[] actual = ArrayFill.fill(array, val);
286         assertSame(array, actual);
287         for (final short v : actual) {
288             assertEquals(val, v);
289         }
290     }
291 
292     @Test
293     void testFillShortArrayNull() {
294         final short[] array = null;
295         final short val = 1;
296         final short[] actual = ArrayFill.fill(array, val);
297         assertSame(array, actual);
298     }
299 }