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    *      http://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  package org.apache.commons.lang3.mutable;
18  
19  import static org.junit.jupiter.api.Assertions.assertEquals;
20  import static org.junit.jupiter.api.Assertions.assertNotEquals;
21  import static org.junit.jupiter.api.Assertions.assertThrows;
22  
23  import org.apache.commons.lang3.AbstractLangTest;
24  import org.junit.jupiter.api.Test;
25  
26  /**
27   * JUnit tests.
28   *
29   * @see MutableByte
30   */
31  public class MutableByteTest extends AbstractLangTest {
32  
33      @Test
34      public void testAddAndGetValueObject() {
35          final MutableByte mutableByte = new MutableByte((byte) 0);
36          final byte result = mutableByte.addAndGet(Byte.valueOf((byte) 1));
37  
38          assertEquals((byte) 1, result);
39          assertEquals((byte) 1, mutableByte.byteValue());
40      }
41  
42      @Test
43      public void testAddAndGetValuePrimitive() {
44          final MutableByte mutableByte = new MutableByte((byte) 0);
45          final byte result = mutableByte.addAndGet((byte) 1);
46  
47          assertEquals((byte) 1, result);
48          assertEquals((byte) 1, mutableByte.byteValue());
49      }
50  
51      @Test
52      public void testAddValueObject() {
53          final MutableByte mutNum = new MutableByte((byte) 1);
54          mutNum.add(Integer.valueOf(1));
55  
56          assertEquals((byte) 2, mutNum.byteValue());
57      }
58  
59      @Test
60      public void testAddValuePrimitive() {
61          final MutableByte mutNum = new MutableByte((byte) 1);
62          mutNum.add((byte) 1);
63  
64          assertEquals((byte) 2, mutNum.byteValue());
65      }
66  
67      @Test
68      public void testCompareTo() {
69          final MutableByte mutNum = new MutableByte((byte) 0);
70  
71          assertEquals((byte) 0, mutNum.compareTo(new MutableByte((byte) 0)));
72          assertEquals((byte) +1, mutNum.compareTo(new MutableByte((byte) -1)));
73          assertEquals((byte) -1, mutNum.compareTo(new MutableByte((byte) 1)));
74      }
75  
76      @Test
77      public void testCompareToNull() {
78          final MutableByte mutNum = new MutableByte((byte) 0);
79          assertThrows(NullPointerException.class, () -> mutNum.compareTo(null));
80      }
81  
82      @Test
83      public void testConstructorNull() {
84          assertThrows(NullPointerException.class, () -> new MutableByte((Number) null));
85      }
86  
87      @Test
88      public void testConstructors() {
89          assertEquals((byte) 0, new MutableByte().byteValue());
90  
91          assertEquals((byte) 1, new MutableByte((byte) 1).byteValue());
92  
93          assertEquals((byte) 2, new MutableByte(Byte.valueOf((byte) 2)).byteValue());
94          assertEquals((byte) 3, new MutableByte(new MutableByte((byte) 3)).byteValue());
95  
96          assertEquals((byte) 2, new MutableByte("2").byteValue());
97  
98      }
99  
100     @Test
101     public void testDecrement() {
102         final MutableByte mutNum = new MutableByte((byte) 1);
103         mutNum.decrement();
104 
105         assertEquals(0, mutNum.intValue());
106         assertEquals(0L, mutNum.longValue());
107     }
108 
109     @Test
110     public void testDecrementAndGet() {
111         final MutableByte mutNum = new MutableByte((byte) 1);
112         final byte result = mutNum.decrementAndGet();
113 
114         assertEquals(0, result);
115         assertEquals(0, mutNum.intValue());
116         assertEquals(0L, mutNum.longValue());
117     }
118 
119     @Test
120     public void testEquals() {
121         final MutableByte mutNumA = new MutableByte((byte) 0);
122         final MutableByte mutNumB = new MutableByte((byte) 0);
123         final MutableByte mutNumC = new MutableByte((byte) 1);
124 
125         assertEquals(mutNumA, mutNumA);
126         assertEquals(mutNumA, mutNumB);
127         assertEquals(mutNumB, mutNumA);
128         assertEquals(mutNumB, mutNumB);
129         assertNotEquals(mutNumA, mutNumC);
130         assertNotEquals(mutNumB, mutNumC);
131         assertEquals(mutNumC, mutNumC);
132         assertNotEquals(null, mutNumA);
133         assertNotEquals(mutNumA, Byte.valueOf((byte) 0));
134         assertNotEquals("0", mutNumA);
135     }
136 
137     @Test
138     public void testGetAndAddValueObject() {
139         final MutableByte mutableByte = new MutableByte((byte) 0);
140         final byte result = mutableByte.getAndAdd(Byte.valueOf((byte) 1));
141 
142         assertEquals((byte) 0, result);
143         assertEquals((byte) 1, mutableByte.byteValue());
144     }
145 
146     @Test
147     public void testGetAndAddValuePrimitive() {
148         final MutableByte mutableByte = new MutableByte((byte) 0);
149         final byte result = mutableByte.getAndAdd((byte) 1);
150 
151         assertEquals((byte) 0, result);
152         assertEquals((byte) 1, mutableByte.byteValue());
153     }
154 
155     @Test
156     public void testGetAndDecrement() {
157         final MutableByte mutNum = new MutableByte((byte) 1);
158         final byte result = mutNum.getAndDecrement();
159 
160         assertEquals(1, result);
161         assertEquals(0, mutNum.intValue());
162         assertEquals(0L, mutNum.longValue());
163     }
164 
165     @Test
166     public void testGetAndIncrement() {
167         final MutableByte mutNum = new MutableByte((byte) 1);
168         final byte result = mutNum.getAndIncrement();
169 
170         assertEquals(1, result);
171         assertEquals(2, mutNum.intValue());
172         assertEquals(2L, mutNum.longValue());
173     }
174 
175     @Test
176     public void testGetSet() {
177         final MutableByte mutNum = new MutableByte((byte) 0);
178         assertEquals((byte) 0, new MutableByte().byteValue());
179         assertEquals(Byte.valueOf((byte) 0), new MutableByte().getValue());
180 
181         mutNum.setValue((byte) 1);
182         assertEquals((byte) 1, mutNum.byteValue());
183         assertEquals(Byte.valueOf((byte) 1), mutNum.getValue());
184 
185         mutNum.setValue(Byte.valueOf((byte) 2));
186         assertEquals((byte) 2, mutNum.byteValue());
187         assertEquals(Byte.valueOf((byte) 2), mutNum.getValue());
188 
189         mutNum.setValue(new MutableByte((byte) 3));
190         assertEquals((byte) 3, mutNum.byteValue());
191         assertEquals(Byte.valueOf((byte) 3), mutNum.getValue());
192     }
193 
194     @Test
195     public void testHashCode() {
196         final MutableByte mutNumA = new MutableByte((byte) 0);
197         final MutableByte mutNumB = new MutableByte((byte) 0);
198         final MutableByte mutNumC = new MutableByte((byte) 1);
199 
200         assertEquals(mutNumA.hashCode(), mutNumA.hashCode());
201         assertEquals(mutNumA.hashCode(), mutNumB.hashCode());
202         assertNotEquals(mutNumA.hashCode(), mutNumC.hashCode());
203         assertEquals(mutNumA.hashCode(), Byte.valueOf((byte) 0).hashCode());
204     }
205 
206     @Test
207     public void testIncrement() {
208         final MutableByte mutNum = new MutableByte((byte) 1);
209         mutNum.increment();
210 
211         assertEquals(2, mutNum.intValue());
212         assertEquals(2L, mutNum.longValue());
213     }
214 
215     @Test
216     public void testIncrementAndGet() {
217         final MutableByte mutNum = new MutableByte((byte) 1);
218         final byte result = mutNum.incrementAndGet();
219 
220         assertEquals(2, result);
221         assertEquals(2, mutNum.intValue());
222         assertEquals(2L, mutNum.longValue());
223     }
224 
225     @Test
226     public void testPrimitiveValues() {
227         final MutableByte mutNum = new MutableByte( (byte) 1 );
228         assertEquals(1.0F, mutNum.floatValue());
229         assertEquals(1.0, mutNum.doubleValue());
230         assertEquals( (byte) 1, mutNum.byteValue() );
231         assertEquals( (short) 1, mutNum.shortValue() );
232         assertEquals( 1, mutNum.intValue() );
233         assertEquals( 1L, mutNum.longValue() );
234     }
235 
236     @Test
237     public void testSetNull() {
238         final MutableByte mutNum = new MutableByte((byte) 0);
239         assertThrows(NullPointerException.class, () -> mutNum.setValue(null));
240     }
241 
242     @Test
243     public void testSubtractValueObject() {
244         final MutableByte mutNum = new MutableByte((byte) 1);
245         mutNum.subtract(Integer.valueOf(1));
246 
247         assertEquals((byte) 0, mutNum.byteValue());
248     }
249 
250     @Test
251     public void testSubtractValuePrimitive() {
252         final MutableByte mutNum = new MutableByte((byte) 1);
253         mutNum.subtract((byte) 1);
254 
255         assertEquals((byte) 0, mutNum.byteValue());
256     }
257 
258     @Test
259     public void testToByte() {
260         assertEquals(Byte.valueOf((byte) 0), new MutableByte((byte) 0).toByte());
261         assertEquals(Byte.valueOf((byte) 123), new MutableByte((byte) 123).toByte());
262     }
263 
264     @Test
265     public void testToString() {
266         assertEquals("0", new MutableByte((byte) 0).toString());
267         assertEquals("10", new MutableByte((byte) 10).toString());
268         assertEquals("-123", new MutableByte((byte) -123).toString());
269     }
270 
271 }