2 * Copyright (c) 2016 Cisco Systems, Inc. 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.model.util.type;
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertTrue;
13 import java.math.BigDecimal;
14 import java.math.BigInteger;
15 import java.util.function.Function;
16 import org.junit.Test;
17 import org.opendaylight.yangtools.yang.common.Uint16;
18 import org.opendaylight.yangtools.yang.common.Uint32;
19 import org.opendaylight.yangtools.yang.common.Uint64;
21 public class NumberUtilTest {
24 public void testRangeCoveredForShort() {
25 final short min = 100;
26 final short superMin = 50;
27 final short max = 200;
28 final short superMax = 300;
30 assertTrue(NumberUtil.isRangeCovered(min, max, superMin, superMax));
34 public void testRangeCoveredForLong() {
35 final long min = 100L;
36 final long superMin = 50L;
37 final long max = 200L;
38 final long superMax = 300L;
40 assertTrue(NumberUtil.isRangeCovered(min, max, superMin, superMax));
44 public void testRangeCoveredForBigDecimal() {
45 final BigDecimal min = new BigDecimal(100.0);
46 final BigDecimal superMin = new BigDecimal(50.0);
47 final BigDecimal max = new BigDecimal(200.0);
48 final BigDecimal superMax = new BigDecimal(300.0);
50 assertTrue(NumberUtil.isRangeCovered(min, max, superMin, superMax));
54 public void testRangeCoveredForUint8() {
55 final Uint64 min = Uint64.valueOf("100");
56 final Uint64 superMin = Uint64.valueOf("50");
57 final Uint64 max = Uint64.valueOf("200");
58 final Uint64 superMax = Uint64.valueOf("250");
60 assertTrue(NumberUtil.isRangeCovered(min, max, superMin, superMax));
64 public void testRangeCoveredForUint16() {
65 final Uint16 min = Uint16.valueOf("100");
66 final Uint16 superMin = Uint16.valueOf("50");
67 final Uint16 max = Uint16.valueOf("200");
68 final Uint16 superMax = Uint16.valueOf("300");
70 assertTrue(NumberUtil.isRangeCovered(min, max, superMin, superMax));
74 public void testRangeCoveredForUint32() {
75 final Uint32 min = Uint32.valueOf("100");
76 final Uint32 superMin = Uint32.valueOf("50");
77 final Uint32 max = Uint32.valueOf("200");
78 final Uint32 superMax = Uint32.valueOf("300");
80 assertTrue(NumberUtil.isRangeCovered(min, max, superMin, superMax));
84 public void testRangeCoveredForUint64() {
85 final Uint64 min = Uint64.valueOf("100");
86 final Uint64 superMin = Uint64.valueOf("50");
87 final Uint64 max = Uint64.valueOf("200");
88 final Uint64 superMax = Uint64.valueOf("300");
90 assertTrue(NumberUtil.isRangeCovered(min, max, superMin, superMax));
93 @Test(expected = IllegalArgumentException.class)
94 public void testRangeCoveredForUnsupportedNumberType() {
95 final double min = 100.0;
96 final double superMin = 50.0;
97 final double max = 200.0;
98 final double superMax = 300.0;
100 NumberUtil.isRangeCovered(min, max, superMin, superMax);
104 public void testConverterToShort() {
105 final Short shortNum = 20;
106 final Function<Number, Short> numberFunction = NumberUtil.converterTo(Short.class);
107 assertEquals(shortNum, numberFunction.apply(shortNum));
109 final byte byteNum = 20;
110 assertEquals(shortNum, numberFunction.apply(byteNum));
112 final int intNum = 20;
113 assertEquals(shortNum, numberFunction.apply(intNum));
117 public void testConverterToInteger() {
118 final Integer intNum = 20;
119 final byte byteNum = 20;
120 final Function<Number, Integer> numberFunction = NumberUtil.converterTo(Integer.class);
121 assertEquals(intNum, numberFunction.apply(byteNum));
125 public void testConverterToLong() {
126 final Long longNum = 20L;
127 final Function<Number, Long> numberFunction = NumberUtil.converterTo(Long.class);
128 assertEquals(longNum, numberFunction.apply(longNum));
130 final byte byteNum = 20;
131 assertEquals(longNum, numberFunction.apply(byteNum));
133 final BigInteger bigIntNum = new BigInteger("20");
134 assertEquals(longNum, numberFunction.apply(bigIntNum));
138 public void testConverterToBigDecimal() {
139 BigDecimal bigDecNum = new BigDecimal(20.0);
140 final Function<Number, BigDecimal> numberFunction = NumberUtil.converterTo(BigDecimal.class);
141 assertEquals(bigDecNum, numberFunction.apply(bigDecNum));
144 assertEquals(bigDecNum, numberFunction.apply(intNum));
146 double doubleNum = 20.0;
147 bigDecNum = new BigDecimal("20.0");
148 assertEquals(bigDecNum, numberFunction.apply(doubleNum));
152 public void testConverterToUint64() {
153 final Uint64 bigIntNum = Uint64.valueOf("20");
154 final Function<Number, Uint64> numberFunction = NumberUtil.converterTo(Uint64.class);
155 assertEquals(bigIntNum, numberFunction.apply(bigIntNum));
157 final int intNum = 20;
158 assertEquals(bigIntNum, numberFunction.apply(intNum));
160 final BigDecimal bigDecNum = new BigDecimal(20.0);
161 assertEquals(bigIntNum, numberFunction.apply(bigDecNum));