2 * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.yangtools.yang.common;
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertFalse;
12 import static org.junit.Assert.assertSame;
13 import static org.junit.Assert.assertThrows;
14 import static org.junit.Assert.assertTrue;
16 import java.io.ByteArrayInputStream;
17 import java.io.ByteArrayOutputStream;
18 import java.io.IOException;
19 import java.io.ObjectInputStream;
20 import java.io.ObjectOutputStream;
21 import org.junit.Test;
23 public class Uint8Test {
25 public void testValueOf() {
26 assertEquals(127, Uint8.valueOf(Byte.MAX_VALUE).byteValue());
27 assertEquals(255, Uint8.valueOf(255).intValue());
28 assertEquals(255L, Uint8.valueOf(255L).longValue());
29 assertEquals(0, Uint8.valueOf("0").intValue());
33 public void testSaturatedOf() {
34 assertEquals(127, Uint8.saturatedOf((byte) 127).byteValue());
35 assertEquals(127, Uint8.saturatedOf((short) 127).byteValue());
36 assertEquals(127, Uint8.saturatedOf(127).byteValue());
37 assertEquals(127, Uint8.saturatedOf(127L).byteValue());
39 assertEquals(255, Uint8.saturatedOf((short) 255).intValue());
40 assertEquals(255, Uint8.saturatedOf(255).intValue());
41 assertEquals(255L, Uint8.saturatedOf(255L).longValue());
45 public void testCompareTo() {
46 final Uint8 five = Uint8.valueOf(5);
47 final Uint8 zero = Uint8.valueOf(0);
48 final Uint8 max = Uint8.valueOf(255);
50 assertEquals(0, zero.compareTo(zero));
51 assertEquals(-5, zero.compareTo(five));
52 assertEquals(-255, zero.compareTo(max));
54 assertEquals(5, five.compareTo(zero));
55 assertEquals(0, five.compareTo(five));
56 assertEquals(-250, five.compareTo(max));
58 assertEquals(255, max.compareTo(zero));
59 assertEquals(250, max.compareTo(five));
60 assertEquals(0, max.compareTo(max));
64 public void testEquals() {
65 final Uint8 five = Uint8.valueOf(5);
66 final Uint8 zero = Uint8.valueOf(0);
67 final Uint8 max = Uint8.valueOf(255);
69 final Uint8 test = new Uint8(five);
70 assertFalse(test.equals(zero));
71 assertFalse(test.equals(new Object()));
72 assertFalse(test.equals(max));
73 assertTrue(test.equals(test));
74 assertTrue(test.equals(five));
75 assertTrue(five.equals(test));
79 public void testToString() {
80 assertEquals("0", Uint8.valueOf(0).toString());
81 assertEquals("127", Uint8.valueOf(127).toString());
82 assertEquals("128", Uint8.valueOf(128).toString());
83 assertEquals("255", Uint8.valueOf(255).toString());
87 public void testHashCode() {
88 assertEquals(Byte.hashCode((byte)-63), Uint8.fromByteBits((byte)-63).hashCode());
92 public void testFloatValue() {
93 assertEquals(0, Uint8.valueOf(0).floatValue(), 0);
97 public void testDoubleValue() {
98 assertEquals(0, Uint8.valueOf(0).doubleValue(), 0);
102 public void testConversions() {
103 assertSame(Uint8.valueOf(5), Uint8.valueOf(Uint16.valueOf(5)));
104 assertSame(Uint8.valueOf(10), Uint8.valueOf(Uint32.valueOf(10)));
105 assertSame(Uint8.valueOf(20), Uint8.valueOf(Uint64.valueOf(20)));
107 assertEquals(Uint16.valueOf(255), Uint8.MAX_VALUE.toUint16());
108 assertEquals(Uint32.valueOf(255), Uint8.MAX_VALUE.toUint32());
109 assertEquals(Uint64.valueOf(255), Uint8.MAX_VALUE.toUint64());
113 public void testSerialization() throws IOException, ClassNotFoundException {
114 final Uint8 source = Uint8.valueOf(255);
115 final ByteArrayOutputStream bos = new ByteArrayOutputStream();
116 try (ObjectOutputStream oos = new ObjectOutputStream(bos)) {
117 oos.writeObject(source);
121 try (ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bos.toByteArray()))) {
122 read = ois.readObject();
125 assertSame(source, read);
129 public void testNegativeValues() {
130 assertThrows(IllegalArgumentException.class, () -> Uint8.valueOf((byte)-1));
131 assertThrows(IllegalArgumentException.class, () -> Uint8.valueOf((short)-1));
132 assertThrows(IllegalArgumentException.class, () -> Uint8.valueOf(-1));
133 assertThrows(IllegalArgumentException.class, () -> Uint8.valueOf(-1L));
135 assertEquals(Uint8.ZERO, Uint8.saturatedOf((byte)-1));
136 assertEquals(Uint8.ZERO, Uint8.saturatedOf((short)-1));
137 assertEquals(Uint8.ZERO, Uint8.saturatedOf(-1));
138 assertEquals(Uint8.ZERO, Uint8.saturatedOf(-1L));
142 public void testLargeValues() {
143 assertThrows(IllegalArgumentException.class, () -> Uint8.valueOf((short)256));
144 assertThrows(IllegalArgumentException.class, () -> Uint8.valueOf(256));
145 assertThrows(IllegalArgumentException.class, () -> Uint8.valueOf(256L));
147 assertEquals(Uint8.MAX_VALUE, Uint8.saturatedOf(Short.MAX_VALUE));
148 assertEquals(Uint8.MAX_VALUE, Uint8.saturatedOf(Integer.MAX_VALUE));
149 assertEquals(Uint8.MAX_VALUE, Uint8.saturatedOf(Long.MAX_VALUE));
153 public void testNullValueOfString() {
154 assertThrows(NullPointerException.class, () -> Uint8.valueOf((String) null));