]> git.basschouten.com Git - openhab-addons.git/blob
72f7a976d40685d365527d5e7c6b7e5fec9594dc
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2020 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
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
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.io.transport.modbus.test;
14
15 import org.hamcrest.Description;
16 import org.hamcrest.TypeSafeMatcher;
17 import org.openhab.io.transport.modbus.ModbusWriteFunctionCode;
18 import org.openhab.io.transport.modbus.ModbusWriteRequestBlueprint;
19
20 /**
21  * @author Sami Salonen - Initial contribution
22  */
23 abstract class AbstractRequestComparer<T extends ModbusWriteRequestBlueprint> extends TypeSafeMatcher<T> {
24
25     private int expectedUnitId;
26     private int expectedAddress;
27     private ModbusWriteFunctionCode expectedFunctionCode;
28     private int expectedMaxTries;
29
30     public AbstractRequestComparer(int expectedUnitId, int expectedAddress,
31             ModbusWriteFunctionCode expectedFunctionCode, int expectedMaxTries) {
32         this.expectedUnitId = expectedUnitId;
33         this.expectedAddress = expectedAddress;
34         this.expectedFunctionCode = expectedFunctionCode;
35         this.expectedMaxTries = expectedMaxTries;
36     }
37
38     @Override
39     public void describeTo(Description description) {
40         description.appendText("should return request with");
41         description.appendText(" unitID=");
42         description.appendValue(expectedUnitId);
43         description.appendText(" address=");
44         description.appendValue(expectedAddress);
45         description.appendText(" functionCode=");
46         description.appendValue(expectedFunctionCode);
47         description.appendText(" maxTries=");
48         description.appendValue(expectedMaxTries);
49     }
50
51     @SuppressWarnings("null")
52     @Override
53     protected boolean matchesSafely(T item) {
54         if (item.getUnitID() != expectedUnitId) {
55             return false;
56         }
57         if (item.getReference() != expectedAddress) {
58             return false;
59         }
60         if (item.getFunctionCode() != expectedFunctionCode) {
61             return false;
62         }
63         if (item.getMaxTries() != expectedMaxTries) {
64             return false;
65         }
66         return doMatchData(item);
67     }
68
69     protected abstract boolean doMatchData(T item);
70 }