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.ri.type;
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertThrows;
12 import static org.junit.Assert.assertTrue;
14 import java.math.BigDecimal;
15 import java.math.BigInteger;
16 import java.util.function.Function;
17 import org.junit.Test;
18 import org.opendaylight.yangtools.yang.common.Decimal64;
19 import org.opendaylight.yangtools.yang.common.Uint16;
20 import org.opendaylight.yangtools.yang.common.Uint32;
21 import org.opendaylight.yangtools.yang.common.Uint64;
23 public class NumberUtilTest {
26 public void testRangeCoveredForShort() {
27 final short min = 100;
28 final short superMin = 50;
29 final short max = 200;
30 final short superMax = 300;
32 assertTrue(NumberUtil.isRangeCovered(min, max, superMin, superMax));
36 public void testRangeCoveredForLong() {
37 final long min = 100L;
38 final long superMin = 50L;
39 final long max = 200L;
40 final long superMax = 300L;
42 assertTrue(NumberUtil.isRangeCovered(min, max, superMin, superMax));
46 public void testRangeCoveredForDecimal64() {
47 final Decimal64 min = Decimal64.valueOf("100.0");
48 final Decimal64 superMin = Decimal64.valueOf("50.0");
49 final Decimal64 max = Decimal64.valueOf("200.0");
50 final Decimal64 superMax = Decimal64.valueOf("300.0");
52 assertTrue(NumberUtil.isRangeCovered(min, max, superMin, superMax));
56 public void testRangeCoveredForUint8() {
57 final Uint64 min = Uint64.valueOf("100");
58 final Uint64 superMin = Uint64.valueOf("50");
59 final Uint64 max = Uint64.valueOf("200");
60 final Uint64 superMax = Uint64.valueOf("250");
62 assertTrue(NumberUtil.isRangeCovered(min, max, superMin, superMax));
66 public void testRangeCoveredForUint16() {
67 final Uint16 min = Uint16.valueOf("100");
68 final Uint16 superMin = Uint16.valueOf("50");
69 final Uint16 max = Uint16.valueOf("200");
70 final Uint16 superMax = Uint16.valueOf("300");
72 assertTrue(NumberUtil.isRangeCovered(min, max, superMin, superMax));
76 public void testRangeCoveredForUint32() {
77 final Uint32 min = Uint32.valueOf("100");
78 final Uint32 superMin = Uint32.valueOf("50");
79 final Uint32 max = Uint32.valueOf("200");
80 final Uint32 superMax = Uint32.valueOf("300");
82 assertTrue(NumberUtil.isRangeCovered(min, max, superMin, superMax));
86 public void testRangeCoveredForUint64() {
87 final Uint64 min = Uint64.valueOf("100");
88 final Uint64 superMin = Uint64.valueOf("50");
89 final Uint64 max = Uint64.valueOf("200");
90 final Uint64 superMax = Uint64.valueOf("300");
92 assertTrue(NumberUtil.isRangeCovered(min, max, superMin, superMax));
96 public void testRangeCoveredForUnsupportedNumberType() {
97 final double min = 100.0;
98 final double superMin = 50.0;
99 final double max = 200.0;
100 final double superMax = 300.0;
102 assertThrows(IllegalArgumentException.class, () -> NumberUtil.isRangeCovered(min, max, superMin, superMax));
106 public void testConverterToShort() {
107 final Short shortNum = 20;
108 final Function<Number, Short> numberFunction = NumberUtil.converterTo(Short.class);
109 assertEquals(shortNum, numberFunction.apply(shortNum));
111 final byte byteNum = 20;
112 assertEquals(shortNum, numberFunction.apply(byteNum));
114 final int intNum = 20;
115 assertEquals(shortNum, numberFunction.apply(intNum));
119 public void testConverterToInteger() {
120 final Integer intNum = 20;
121 final byte byteNum = 20;
122 final Function<Number, Integer> numberFunction = NumberUtil.converterTo(Integer.class);
123 assertEquals(intNum, numberFunction.apply(byteNum));
127 public void testConverterToLong() {
128 final Long longNum = 20L;
129 final Function<Number, Long> numberFunction = NumberUtil.converterTo(Long.class);
130 assertEquals(longNum, numberFunction.apply(longNum));
132 final byte byteNum = 20;
133 assertEquals(longNum, numberFunction.apply(byteNum));
135 final BigInteger bigIntNum = new BigInteger("20");
136 assertEquals(longNum, numberFunction.apply(bigIntNum));
140 public void testConverterToBigDecimal() {
141 final Decimal64 bigDecNum = Decimal64.valueOf("20.0");
142 final Function<Number, Decimal64> numberFunction = NumberUtil.converterTo(Decimal64.class);
143 assertEquals(bigDecNum, numberFunction.apply(bigDecNum));
146 assertEquals(bigDecNum, numberFunction.apply(intNum));
148 double doubleNum = 20.0;
149 assertEquals(bigDecNum, numberFunction.apply(doubleNum));
153 public void testConverterToUint64() {
154 final Uint64 bigIntNum = Uint64.valueOf("20");
155 final Function<Number, Uint64> numberFunction = NumberUtil.converterTo(Uint64.class);
156 assertEquals(bigIntNum, numberFunction.apply(bigIntNum));
158 final int intNum = 20;
159 assertEquals(bigIntNum, numberFunction.apply(intNum));
161 final BigDecimal bigDecNum = new BigDecimal(20.0);
162 assertEquals(bigIntNum, numberFunction.apply(bigDecNum));