2 * Copyright (c) 2010-2020 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
7 * This program and the accompanying materials are made available under the
8 * terms of the Eclipse Public License 2.0 which is available at
9 * http://www.eclipse.org/legal/epl-2.0
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.io.transport.modbus.test;
15 import static org.junit.jupiter.api.Assertions.*;
17 import org.junit.jupiter.api.Test;
18 import org.openhab.io.transport.modbus.ModbusBitUtilities;
22 * Tests for extractSInt8 and extractUInt8
24 * @author Sami Salonen - Initial contribution
26 public class BitUtilitiesExtractInt8Test {
29 public void extractSInt8WithSingleIndex() {
30 byte[] bytes = new byte[] { -1, 2, 3 };
31 assertEquals(-1, ModbusBitUtilities.extractSInt8(bytes, 0));
32 assertEquals(2, ModbusBitUtilities.extractSInt8(bytes, 1));
33 assertEquals(3, ModbusBitUtilities.extractSInt8(bytes, 2));
37 public void extractSInt8WithSingleIndexOOB() {
38 byte[] bytes = new byte[] { -1, 2, 3 };
39 assertThrows(IllegalArgumentException.class, () -> ModbusBitUtilities.extractSInt8(bytes, 3));
43 public void extractSInt8WithSingleIndexOOB2() {
44 byte[] bytes = new byte[] { -1, 2, 3 };
45 assertThrows(IllegalArgumentException.class, () -> ModbusBitUtilities.extractSInt8(bytes, -1));
49 public void extractSInt8WithRegisterIndexAndHiByte() {
50 byte[] bytes = new byte[] { -1, 2, 3, 4 };
51 assertEquals(-1, ModbusBitUtilities.extractSInt8(bytes, 0, true));
52 assertEquals(2, ModbusBitUtilities.extractSInt8(bytes, 0, false));
53 assertEquals(3, ModbusBitUtilities.extractSInt8(bytes, 1, true));
54 assertEquals(4, ModbusBitUtilities.extractSInt8(bytes, 1, false));
58 public void extractSInt8WithRegisterIndexAndHiByteOOB() {
59 byte[] bytes = new byte[] { -1, 2, 3, 4 };
60 assertThrows(IllegalArgumentException.class, () -> ModbusBitUtilities.extractSInt8(bytes, 2, true));
64 public void extractSInt8WithRegisterIndexAndHiByteOOB2() {
65 byte[] bytes = new byte[] { -1, 2, 3, 4 };
66 assertThrows(IllegalArgumentException.class, () -> ModbusBitUtilities.extractSInt8(bytes, -1, true));
70 // unsigned int8 follows
74 public void extractUInt8WithSingleIndex() {
75 byte[] bytes = new byte[] { -1, 2, 3 };
76 assertEquals(255, ModbusBitUtilities.extractUInt8(bytes, 0));
77 assertEquals(2, ModbusBitUtilities.extractUInt8(bytes, 1));
78 assertEquals(3, ModbusBitUtilities.extractUInt8(bytes, 2));
82 public void extractUInt8WithSingleIndexOOB() {
83 byte[] bytes = new byte[] { -1, 2, 3 };
84 assertThrows(IllegalArgumentException.class, () -> ModbusBitUtilities.extractUInt8(bytes, 3));
88 public void extractUInt8WithSingleIndexOOB2() {
89 byte[] bytes = new byte[] { -1, 2, 3 };
90 assertThrows(IllegalArgumentException.class, () -> ModbusBitUtilities.extractUInt8(bytes, -1));
94 public void extractUInt8WithRegisterIndexAndHiByte() {
95 byte[] bytes = new byte[] { -1, 2, 3, 4 };
96 assertEquals(255, ModbusBitUtilities.extractUInt8(bytes, 0, true));
97 assertEquals(2, ModbusBitUtilities.extractUInt8(bytes, 0, false));
98 assertEquals(3, ModbusBitUtilities.extractUInt8(bytes, 1, true));
99 assertEquals(4, ModbusBitUtilities.extractUInt8(bytes, 1, false));
103 public void extractUInt8WithRegisterIndexAndHiByteOOB() {
104 byte[] bytes = new byte[] { -1, 2, 3, 4 };
105 assertThrows(IllegalArgumentException.class, () -> ModbusBitUtilities.extractUInt8(bytes, 2, true));
109 public void extractUInt8WithRegisterIndexAndHiByteOOB2() {
110 byte[] bytes = new byte[] { -1, 2, 3, 4 };
111 assertThrows(IllegalArgumentException.class, () -> ModbusBitUtilities.extractUInt8(bytes, 255, true));