BUG-8043: correct LengthConstraint definition
[yangtools.git] / yang / yang-model-util / src / test / java / org / opendaylight / yangtools / yang / model / util / type / NumberUtilTest.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8
9 package org.opendaylight.yangtools.yang.model.util.type;
10
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertTrue;
13
14 import java.math.BigDecimal;
15 import java.math.BigInteger;
16 import java.util.function.Function;
17 import org.junit.Test;
18
19 public class NumberUtilTest {
20
21     @Test
22     public void testRangeCoveredForShort() {
23         final short min = 100;
24         final short superMin = 50;
25         final short max = 200;
26         final short superMax = 300;
27
28         assertTrue(NumberUtil.isRangeCovered(min, max, superMin, superMax));
29     }
30
31     @Test
32     public void testRangeCoveredForLong() {
33         final long min = 100L;
34         final long superMin = 50L;
35         final long max = 200L;
36         final long superMax = 300L;
37
38         assertTrue(NumberUtil.isRangeCovered(min, max, superMin, superMax));
39     }
40
41     @Test
42     public void testRangeCoveredForBigDecimal() {
43         final BigDecimal min = new BigDecimal(100.0);
44         final BigDecimal superMin = new BigDecimal(50.0);
45         final BigDecimal max = new BigDecimal(200.0);
46         final BigDecimal superMax = new BigDecimal(300.0);
47
48         assertTrue(NumberUtil.isRangeCovered(min, max, superMin, superMax));
49     }
50
51     @Test
52     public void testRangeCoveredForBigInteger() {
53         final BigInteger min = new BigInteger("100");
54         final BigInteger superMin = new BigInteger("50");
55         final BigInteger max = new BigInteger("200");
56         final BigInteger superMax = new BigInteger("300");
57
58         assertTrue(NumberUtil.isRangeCovered(min, max, superMin, superMax));
59     }
60
61     @Test(expected = IllegalArgumentException.class)
62     public void testRangeCoveredForUnsupportedNumberType() {
63         final double min = 100.0;
64         final double superMin = 50.0;
65         final double max = 200.0;
66         final double superMax = 300.0;
67
68         NumberUtil.isRangeCovered(min, max, superMin, superMax);
69     }
70
71     @Test
72     public void testConverterToShort() {
73         final Short shortNum = 20;
74         final Function<Number, Short> numberFunction = NumberUtil.converterTo(Short.class);
75         assertEquals(shortNum, numberFunction.apply(shortNum));
76
77         final byte byteNum = 20;
78         assertEquals(shortNum, numberFunction.apply(byteNum));
79
80         final int intNum = 20;
81         assertEquals(shortNum, numberFunction.apply(intNum));
82     }
83
84     @Test
85     public void testConverterToInteger() {
86         final Integer intNum = 20;
87         final byte byteNum = 20;
88         final Function<Number, Integer> numberFunction = NumberUtil.converterTo(Integer.class);
89         assertEquals(intNum, numberFunction.apply(byteNum));
90     }
91
92     @Test
93     public void testConverterToLong() {
94         final Long longNum = 20L;
95         final Function<Number, Long> numberFunction = NumberUtil.converterTo(Long.class);
96         assertEquals(longNum, numberFunction.apply(longNum));
97
98         final byte byteNum = 20;
99         assertEquals(longNum, numberFunction.apply(byteNum));
100
101         final BigInteger bigIntNum = new BigInteger("20");
102         assertEquals(longNum, numberFunction.apply(bigIntNum));
103     }
104
105     @Test
106     public void testConverterToBigDecimal() {
107         BigDecimal bigDecNum = new BigDecimal(20.0);
108         final Function<Number, BigDecimal> numberFunction = NumberUtil.converterTo(BigDecimal.class);
109         assertEquals(bigDecNum, numberFunction.apply(bigDecNum));
110
111         int intNum = 20;
112         assertEquals(bigDecNum, numberFunction.apply(intNum));
113
114         double doubleNum = 20.0;
115         bigDecNum = new BigDecimal("20.0");
116         assertEquals(bigDecNum, numberFunction.apply(doubleNum));
117     }
118
119     @Test public void testConverterToBigInteger() {
120         final BigInteger bigIntNum = new BigInteger("20");
121         final Function<Number, BigInteger> numberFunction = NumberUtil.converterTo(BigInteger.class);
122         assertEquals(bigIntNum, numberFunction.apply(bigIntNum));
123
124         final int intNum = 20;
125         assertEquals(bigIntNum, numberFunction.apply(intNum));
126
127         final BigDecimal bigDecNum = new BigDecimal(20.0);
128         assertEquals(bigIntNum, numberFunction.apply(bigDecNum));
129     }
130 }