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
10 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 * SPDX-License-Identifier: Apache-2.0
19 * ============LICENSE_END=========================================================
21 package org.oran.smo.yangtools.parser.model.util.test;
23 import static org.junit.Assert.assertTrue;
24 import static org.junit.Assert.fail;
26 import java.math.BigDecimal;
27 import java.math.BigInteger;
29 import org.junit.Test;
31 import org.oran.smo.yangtools.parser.model.util.DataTypeHelper.YangDataType;
32 import org.oran.smo.yangtools.parser.model.util.NumberHelper;
34 public class NumberHelperTest {
37 public void test_get_min_value_for_integer_type() {
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));
44 assertTrue(NumberHelper.getMinValueForYangIntegerDataType(YangDataType.INT8).equals(BigDecimal.valueOf(
46 assertTrue(NumberHelper.getMinValueForYangIntegerDataType(YangDataType.INT16).equals(BigDecimal.valueOf(
48 assertTrue(NumberHelper.getMinValueForYangIntegerDataType(YangDataType.INT32).equals(BigDecimal.valueOf(
50 assertTrue(NumberHelper.getMinValueForYangIntegerDataType(YangDataType.INT64).equals(BigDecimal.valueOf(
54 NumberHelper.getMinValueForYangIntegerDataType(YangDataType.STRING);
55 fail("Should have thrown");
56 } catch (final Exception ignore) {
61 public void test_get_max_value_for_integer_type() {
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")));
72 assertTrue(NumberHelper.getMaxValueForYangIntegerDataType(YangDataType.INT8).equals(BigDecimal.valueOf(
74 assertTrue(NumberHelper.getMaxValueForYangIntegerDataType(YangDataType.INT16).equals(BigDecimal.valueOf(
76 assertTrue(NumberHelper.getMaxValueForYangIntegerDataType(YangDataType.INT32).equals(BigDecimal.valueOf(
78 assertTrue(NumberHelper.getMaxValueForYangIntegerDataType(YangDataType.INT64).equals(BigDecimal.valueOf(
82 NumberHelper.getMaxValueForYangIntegerDataType(YangDataType.STRING);
83 fail("Should have thrown");
84 } catch (final Exception ignore) {
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)));
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)));
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)));
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)));
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)));
116 assertTrue(NumberHelper.getIntegerDefaultValue("0x") == null);
117 assertTrue(NumberHelper.getIntegerDefaultValue("") == null);
118 assertTrue(NumberHelper.getIntegerDefaultValue(" ") == null);
119 assertTrue(NumberHelper.getIntegerDefaultValue("ABC") == null);
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))));
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))));