7e30abc30df7ee2dddf1cff3463cc7e16c424d39
[smo/teiv.git] /
1 /*
2  *  ============LICENSE_START=======================================================
3  *  Copyright (C) 2024 Ericsson
4  *  Modifications Copyright (C) 2024 OpenInfra Foundation Europe
5  *  ================================================================================
6  *  Licensed under the Apache License, Version 2.0 (the "License");
7  *  you may not use this file except in compliance with the License.
8  *  You may obtain a copy of the License at
9  *
10  *        http://www.apache.org/licenses/LICENSE-2.0
11  *
12  *  Unless required by applicable law or agreed to in writing, software
13  *  distributed under the License is distributed on an "AS IS" BASIS,
14  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  *  See the License for the specific language governing permissions and
16  *  limitations under the License.
17  *
18  *  SPDX-License-Identifier: Apache-2.0
19  *  ============LICENSE_END=========================================================
20  */
21 package org.oran.smo.yangtools.parser.model.util.test;
22
23 import static org.junit.Assert.assertTrue;
24 import static org.junit.Assert.fail;
25
26 import java.math.BigDecimal;
27 import java.math.BigInteger;
28
29 import org.junit.Test;
30
31 import org.oran.smo.yangtools.parser.model.util.DataTypeHelper.YangDataType;
32 import org.oran.smo.yangtools.parser.model.util.NumberHelper;
33
34 public class NumberHelperTest {
35
36     @Test
37     public void test_get_min_value_for_integer_type() {
38
39         assertTrue(NumberHelper.getMinValueForYangIntegerDataType(YangDataType.UINT8).equals(BigDecimal.ZERO));
40         assertTrue(NumberHelper.getMinValueForYangIntegerDataType(YangDataType.UINT16).equals(BigDecimal.ZERO));
41         assertTrue(NumberHelper.getMinValueForYangIntegerDataType(YangDataType.UINT32).equals(BigDecimal.ZERO));
42         assertTrue(NumberHelper.getMinValueForYangIntegerDataType(YangDataType.UINT64).equals(BigDecimal.ZERO));
43
44         assertTrue(NumberHelper.getMinValueForYangIntegerDataType(YangDataType.INT8).equals(BigDecimal.valueOf(
45                 Byte.MIN_VALUE)));
46         assertTrue(NumberHelper.getMinValueForYangIntegerDataType(YangDataType.INT16).equals(BigDecimal.valueOf(
47                 Short.MIN_VALUE)));
48         assertTrue(NumberHelper.getMinValueForYangIntegerDataType(YangDataType.INT32).equals(BigDecimal.valueOf(
49                 Integer.MIN_VALUE)));
50         assertTrue(NumberHelper.getMinValueForYangIntegerDataType(YangDataType.INT64).equals(BigDecimal.valueOf(
51                 Long.MIN_VALUE)));
52
53         try {
54             NumberHelper.getMinValueForYangIntegerDataType(YangDataType.STRING);
55             fail("Should have thrown");
56         } catch (final Exception ignore) {
57         }
58     }
59
60     @Test
61     public void test_get_max_value_for_integer_type() {
62
63         assertTrue(NumberHelper.getMaxValueForYangIntegerDataType(YangDataType.UINT8).equals(BigDecimal.valueOf(
64                 ((long) Byte.MAX_VALUE) * 2 + 1)));
65         assertTrue(NumberHelper.getMaxValueForYangIntegerDataType(YangDataType.UINT16).equals(BigDecimal.valueOf(
66                 ((long) Short.MAX_VALUE) * 2 + 1)));
67         assertTrue(NumberHelper.getMaxValueForYangIntegerDataType(YangDataType.UINT32).equals(BigDecimal.valueOf(
68                 ((long) Integer.MAX_VALUE) * 2 + 1)));
69         assertTrue(NumberHelper.getMaxValueForYangIntegerDataType(YangDataType.UINT64).equals(new BigDecimal(
70                 "18446744073709551615")));
71
72         assertTrue(NumberHelper.getMaxValueForYangIntegerDataType(YangDataType.INT8).equals(BigDecimal.valueOf(
73                 Byte.MAX_VALUE)));
74         assertTrue(NumberHelper.getMaxValueForYangIntegerDataType(YangDataType.INT16).equals(BigDecimal.valueOf(
75                 Short.MAX_VALUE)));
76         assertTrue(NumberHelper.getMaxValueForYangIntegerDataType(YangDataType.INT32).equals(BigDecimal.valueOf(
77                 Integer.MAX_VALUE)));
78         assertTrue(NumberHelper.getMaxValueForYangIntegerDataType(YangDataType.INT64).equals(BigDecimal.valueOf(
79                 Long.MAX_VALUE)));
80
81         try {
82             NumberHelper.getMaxValueForYangIntegerDataType(YangDataType.STRING);
83             fail("Should have thrown");
84         } catch (final Exception ignore) {
85         }
86     }
87
88     @Test
89     public void test_get_integer_default_value() {
90         assertTrue(NumberHelper.getIntegerDefaultValue("0").equals(BigInteger.valueOf(0)));
91         assertTrue(NumberHelper.getIntegerDefaultValue("+0").equals(BigInteger.valueOf(0)));
92         assertTrue(NumberHelper.getIntegerDefaultValue("-0").equals(BigInteger.valueOf(0)));
93
94         assertTrue(NumberHelper.getIntegerDefaultValue("00").equals(BigInteger.valueOf(0)));
95         assertTrue(NumberHelper.getIntegerDefaultValue("+00").equals(BigInteger.valueOf(0)));
96         assertTrue(NumberHelper.getIntegerDefaultValue("-00").equals(BigInteger.valueOf(0)));
97
98         assertTrue(NumberHelper.getIntegerDefaultValue("10").equals(BigInteger.valueOf(10)));
99         assertTrue(NumberHelper.getIntegerDefaultValue("+10").equals(BigInteger.valueOf(10)));
100         assertTrue(NumberHelper.getIntegerDefaultValue("-10").equals(BigInteger.valueOf(-10)));
101
102         assertTrue(NumberHelper.getIntegerDefaultValue("0x10").equals(BigInteger.valueOf(16)));
103         assertTrue(NumberHelper.getIntegerDefaultValue("0x100").equals(BigInteger.valueOf(256)));
104         assertTrue(NumberHelper.getIntegerDefaultValue("+0x10").equals(BigInteger.valueOf(16)));
105         assertTrue(NumberHelper.getIntegerDefaultValue("+0x100").equals(BigInteger.valueOf(256)));
106         assertTrue(NumberHelper.getIntegerDefaultValue("-0x10").equals(BigInteger.valueOf(-16)));
107         assertTrue(NumberHelper.getIntegerDefaultValue("-0x100").equals(BigInteger.valueOf(-256)));
108
109         assertTrue(NumberHelper.getIntegerDefaultValue("010").equals(BigInteger.valueOf(8)));
110         assertTrue(NumberHelper.getIntegerDefaultValue("0100").equals(BigInteger.valueOf(64)));
111         assertTrue(NumberHelper.getIntegerDefaultValue("+010").equals(BigInteger.valueOf(8)));
112         assertTrue(NumberHelper.getIntegerDefaultValue("+0100").equals(BigInteger.valueOf(64)));
113         assertTrue(NumberHelper.getIntegerDefaultValue("-010").equals(BigInteger.valueOf(-8)));
114         assertTrue(NumberHelper.getIntegerDefaultValue("-0100").equals(BigInteger.valueOf(-64)));
115
116         assertTrue(NumberHelper.getIntegerDefaultValue("0x") == null);
117         assertTrue(NumberHelper.getIntegerDefaultValue("") == null);
118         assertTrue(NumberHelper.getIntegerDefaultValue(" ") == null);
119         assertTrue(NumberHelper.getIntegerDefaultValue("ABC") == null);
120     }
121
122     @Test
123     public void test_get_min_value_for_yang_decimal_data_type() {
124         assertTrue(NumberHelper.getMinValueForYangDecimalDataType(0) == null);
125         assertTrue(NumberHelper.getMinValueForYangDecimalDataType(1).equals(BigDecimal.valueOf(Long.MIN_VALUE).divide(
126                 BigDecimal.valueOf(10))));
127         assertTrue(NumberHelper.getMinValueForYangDecimalDataType(2).equals(BigDecimal.valueOf(Long.MIN_VALUE).divide(
128                 BigDecimal.valueOf(100))));
129         assertTrue(NumberHelper.getMinValueForYangDecimalDataType(3).equals(BigDecimal.valueOf(Long.MIN_VALUE).divide(
130                 BigDecimal.valueOf(1000))));
131     }
132
133     @Test
134     public void test_get_max_value_for_yang_decimal_data_type() {
135         assertTrue(NumberHelper.getMaxValueForYangDecimalDataType(0) == null);
136         assertTrue(NumberHelper.getMaxValueForYangDecimalDataType(1).equals(BigDecimal.valueOf(Long.MAX_VALUE).divide(
137                 BigDecimal.valueOf(10))));
138         assertTrue(NumberHelper.getMaxValueForYangDecimalDataType(2).equals(BigDecimal.valueOf(Long.MAX_VALUE).divide(
139                 BigDecimal.valueOf(100))));
140         assertTrue(NumberHelper.getMaxValueForYangDecimalDataType(3).equals(BigDecimal.valueOf(Long.MAX_VALUE).divide(
141                 BigDecimal.valueOf(1000))));
142     }
143
144 }