Migrate tests to JUnit 5 (#8519)
Signed-off-by: Wouter Born <github@maindrain.net>
This commit is contained in:
@@ -12,7 +12,7 @@
|
||||
*/
|
||||
package org.openhab.binding.dsmr.internal;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
@@ -63,9 +63,9 @@ public final class TelegramReaderUtil {
|
||||
|
||||
parser.setLenientMode(true);
|
||||
parser.parse(telegram, telegram.length);
|
||||
assertNotNull("Telegram state should have been set. (Missing newline at end of message?)", p1Telegram.get());
|
||||
assertEquals("Expected TelegramState should be as expected", expectedTelegramState,
|
||||
p1Telegram.get().getTelegramState());
|
||||
assertNotNull(p1Telegram.get(), "Telegram state should have been set. (Missing newline at end of message?)");
|
||||
assertEquals(expectedTelegramState, p1Telegram.get().getTelegramState(),
|
||||
"Expected TelegramState should be as expected");
|
||||
return p1Telegram.get();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,10 +12,9 @@
|
||||
*/
|
||||
package org.openhab.binding.dsmr.internal.device;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.mockito.ArgumentMatchers.*;
|
||||
import static org.mockito.Mockito.*;
|
||||
import static org.mockito.MockitoAnnotations.initMocks;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
@@ -25,9 +24,11 @@ import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.openhab.binding.dsmr.internal.DSMRBindingConstants;
|
||||
import org.openhab.binding.dsmr.internal.TelegramReaderUtil;
|
||||
import org.openhab.binding.dsmr.internal.device.DSMRSerialAutoDevice.DeviceState;
|
||||
@@ -45,22 +46,20 @@ import org.openhab.core.io.transport.serial.SerialPortManager;
|
||||
*
|
||||
* @author Hilbrand Bouwkamp - Initial contribution
|
||||
*/
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
public class DSMRSerialAutoDeviceTest {
|
||||
|
||||
private static final String DUMMY_PORTNAME = "/dev/dummy-serial";
|
||||
private static final String TELEGRAM_NAME = "dsmr_50";
|
||||
|
||||
@Mock
|
||||
private SerialPortIdentifier mockIdentifier;
|
||||
@Mock
|
||||
private ScheduledExecutorService scheduler;
|
||||
@Mock
|
||||
private SerialPort mockSerialPort;
|
||||
private @Mock SerialPortIdentifier mockIdentifier;
|
||||
private @Mock ScheduledExecutorService scheduler;
|
||||
private @Mock SerialPort mockSerialPort;
|
||||
|
||||
private SerialPortManager serialPortManager = new SerialPortManager() {
|
||||
@Override
|
||||
public SerialPortIdentifier getIdentifier(String name) {
|
||||
assertEquals("Expect the passed serial port name", DUMMY_PORTNAME, name);
|
||||
assertEquals(DUMMY_PORTNAME, name, "Expect the passed serial port name");
|
||||
return mockIdentifier;
|
||||
}
|
||||
|
||||
@@ -71,9 +70,8 @@ public class DSMRSerialAutoDeviceTest {
|
||||
};
|
||||
private SerialPortEventListener serialPortEventListener;
|
||||
|
||||
@Before
|
||||
@BeforeEach
|
||||
public void setUp() throws PortInUseException, TooManyListenersException {
|
||||
initMocks(this);
|
||||
doAnswer(a -> {
|
||||
serialPortEventListener = a.getArgument(0);
|
||||
return null;
|
||||
@@ -100,18 +98,18 @@ public class DSMRSerialAutoDeviceTest {
|
||||
DSMRSerialAutoDevice device = new DSMRSerialAutoDevice(serialPortManager, DUMMY_PORTNAME, listener,
|
||||
new DSMRTelegramListener(), scheduler, 1);
|
||||
device.start();
|
||||
assertSame("Expect to be starting discovery state", DeviceState.DISCOVER_SETTINGS, device.getState());
|
||||
assertSame(DeviceState.DISCOVER_SETTINGS, device.getState(), "Expect to be starting discovery state");
|
||||
serialPortEventListener
|
||||
.serialEvent(new MockSerialPortEvent(mockSerialPort, SerialPortEvent.BI, false, true));
|
||||
assertSame("Expect to be still in discovery state", DeviceState.DISCOVER_SETTINGS, device.getState());
|
||||
assertSame(DeviceState.DISCOVER_SETTINGS, device.getState(), "Expect to be still in discovery state");
|
||||
serialPortEventListener
|
||||
.serialEvent(new MockSerialPortEvent(mockSerialPort, SerialPortEvent.DATA_AVAILABLE, false, true));
|
||||
assertSame("Expect to be in normal state", DeviceState.NORMAL, device.getState());
|
||||
assertSame(DeviceState.NORMAL, device.getState(), "Expect to be in normal state");
|
||||
device.restart();
|
||||
assertSame("Expect not to start rediscovery when in normal state", DeviceState.NORMAL, device.getState());
|
||||
assertSame(DeviceState.NORMAL, device.getState(), "Expect not to start rediscovery when in normal state");
|
||||
device.stop();
|
||||
}
|
||||
assertNotNull("Expected to have read a telegram", telegramRef.get());
|
||||
assertNotNull(telegramRef.get(), "Expected to have read a telegram");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -137,19 +135,19 @@ public class DSMRSerialAutoDeviceTest {
|
||||
DSMRSerialAutoDevice device = new DSMRSerialAutoDevice(serialPortManager, DUMMY_PORTNAME, listener,
|
||||
new DSMRTelegramListener(), scheduler, 1);
|
||||
device.start();
|
||||
assertSame("Expected an error", DSMRConnectorErrorEvent.IN_USE, eventRef.get());
|
||||
assertSame("Expect to be in error state", DeviceState.ERROR, device.getState());
|
||||
assertSame(DSMRConnectorErrorEvent.IN_USE, eventRef.get(), "Expected an error");
|
||||
assertSame(DeviceState.ERROR, device.getState(), "Expect to be in error state");
|
||||
// Trigger device to restart
|
||||
mockValidSerialPort();
|
||||
device.restart();
|
||||
assertSame("Expect to be starting discovery state", DeviceState.DISCOVER_SETTINGS, device.getState());
|
||||
assertSame(DeviceState.DISCOVER_SETTINGS, device.getState(), "Expect to be starting discovery state");
|
||||
// Trigger device to go into error stage with port doesn't exist.
|
||||
mockIdentifier = null;
|
||||
device = new DSMRSerialAutoDevice(serialPortManager, DUMMY_PORTNAME, listener, new DSMRTelegramListener(),
|
||||
scheduler, 1);
|
||||
device.start();
|
||||
assertSame("Expected an error", DSMRConnectorErrorEvent.DONT_EXISTS, eventRef.get());
|
||||
assertSame("Expect to be in error state", DeviceState.ERROR, device.getState());
|
||||
assertSame(DSMRConnectorErrorEvent.DONT_EXISTS, eventRef.get(), "Expected an error");
|
||||
assertSame(DeviceState.ERROR, device.getState(), "Expect to be in error state");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
package org.openhab.binding.dsmr.internal.device;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.*;
|
||||
import static org.junit.Assert.assertThat;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
import org.junit.Test;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.openhab.binding.dsmr.internal.TelegramReaderUtil;
|
||||
import org.openhab.binding.dsmr.internal.device.p1telegram.P1TelegramListener;
|
||||
import org.openhab.binding.dsmr.internal.device.p1telegram.P1TelegramParser;
|
||||
|
||||
@@ -12,16 +12,13 @@
|
||||
*/
|
||||
package org.openhab.binding.dsmr.internal.device.p1telegram;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.Parameterized;
|
||||
import org.junit.runners.Parameterized.Parameter;
|
||||
import org.junit.runners.Parameterized.Parameters;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
import org.openhab.binding.dsmr.internal.TelegramReaderUtil;
|
||||
import org.openhab.binding.dsmr.internal.device.p1telegram.P1Telegram.TelegramState;
|
||||
|
||||
@@ -30,11 +27,9 @@ import org.openhab.binding.dsmr.internal.device.p1telegram.P1Telegram.TelegramSt
|
||||
*
|
||||
* @author Hilbrand Bouwkamp - Initial contribution
|
||||
*/
|
||||
@RunWith(value = Parameterized.class)
|
||||
public class P1TelegramParserTest {
|
||||
|
||||
// @formatter:off
|
||||
@Parameters(name = "{0}")
|
||||
public static final List<Object[]> data() {
|
||||
return Arrays.asList(new Object[][] {
|
||||
{ "ace4000", 59, },
|
||||
@@ -52,17 +47,13 @@ public class P1TelegramParserTest {
|
||||
}
|
||||
// @formatter:on
|
||||
|
||||
@Parameter(0)
|
||||
public String telegramName;
|
||||
|
||||
@Parameter(1)
|
||||
public int numberOfCosemObjects;
|
||||
|
||||
@Test
|
||||
public void testParsing() {
|
||||
@ParameterizedTest
|
||||
@MethodSource("data")
|
||||
public void testParsing(final String telegramName, final int numberOfCosemObjects) {
|
||||
P1Telegram telegram = TelegramReaderUtil.readTelegram(telegramName, TelegramState.OK);
|
||||
assertEquals("Should not have any unknown cosem objects", 0, telegram.getUnknownCosemObjects().size());
|
||||
assertEquals("Expected number of objects", numberOfCosemObjects,
|
||||
telegram.getCosemObjects().stream().mapToInt(co -> co.getCosemValues().size()).sum());
|
||||
assertEquals(0, telegram.getUnknownCosemObjects().size(), "Should not have any unknown cosem objects");
|
||||
assertEquals(numberOfCosemObjects,
|
||||
telegram.getCosemObjects().stream().mapToInt(co -> co.getCosemValues().size()).sum(),
|
||||
"Expected number of objects");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
*/
|
||||
package org.openhab.binding.dsmr.internal.discovery;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.openhab.binding.dsmr.internal.meter.DSMRMeterType.*;
|
||||
|
||||
import java.util.Arrays;
|
||||
@@ -24,11 +24,8 @@ import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.Parameterized;
|
||||
import org.junit.runners.Parameterized.Parameter;
|
||||
import org.junit.runners.Parameterized.Parameters;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
import org.openhab.binding.dsmr.internal.TelegramReaderUtil;
|
||||
import org.openhab.binding.dsmr.internal.device.cosem.CosemObject;
|
||||
import org.openhab.binding.dsmr.internal.device.cosem.CosemObjectType;
|
||||
@@ -42,11 +39,9 @@ import org.openhab.binding.dsmr.internal.meter.DSMRMeterType;
|
||||
*
|
||||
* @author Hilbrand Bouwkamp - Initial contribution
|
||||
*/
|
||||
@RunWith(value = Parameterized.class)
|
||||
public class DSMRMeterDetectorTest {
|
||||
|
||||
// @formatter:off
|
||||
@Parameters(name = "{0}")
|
||||
public static final List<Object[]> data() {
|
||||
return Arrays.asList(new Object[][] {
|
||||
{ "ace4000", EnumSet.of( ELECTRICITY_ACE4000, GAS_ACE4000)},
|
||||
@@ -64,30 +59,26 @@ public class DSMRMeterDetectorTest {
|
||||
}
|
||||
// @formatter:on
|
||||
|
||||
@Parameter(0)
|
||||
public String telegramName;
|
||||
|
||||
@Parameter(1)
|
||||
public Set<DSMRMeterType> expectedMeters;
|
||||
|
||||
@Test
|
||||
public void testDetectMeters() {
|
||||
@ParameterizedTest
|
||||
@MethodSource("data")
|
||||
public void testDetectMeters(final String telegramName, final Set<DSMRMeterType> expectedMeters) {
|
||||
P1Telegram telegram = TelegramReaderUtil.readTelegram(telegramName, TelegramState.OK);
|
||||
DSMRMeterDetector detector = new DSMRMeterDetector();
|
||||
Entry<Collection<DSMRMeterDescriptor>, Map<CosemObjectType, CosemObject>> entry = detector
|
||||
.detectMeters(telegram);
|
||||
Collection<DSMRMeterDescriptor> detectMeters = entry.getKey();
|
||||
|
||||
assertEquals("Should detect correct number of meters: " + Arrays.toString(detectMeters.toArray()),
|
||||
expectedMeters.size(), detectMeters.size());
|
||||
assertEquals("Should not have any undetected cosem objects: ", Collections.emptyMap(), entry.getValue());
|
||||
assertEquals("Should not have any unknown cosem objects", Collections.emptyList(),
|
||||
telegram.getUnknownCosemObjects());
|
||||
assertEquals(expectedMeters.size(), detectMeters.size(),
|
||||
"Should detect correct number of meters: " + Arrays.toString(detectMeters.toArray()));
|
||||
assertEquals(Collections.emptyMap(), entry.getValue(), "Should not have any undetected cosem objects: ");
|
||||
assertEquals(Collections.emptyList(), telegram.getUnknownCosemObjects(),
|
||||
"Should not have any unknown cosem objects");
|
||||
for (DSMRMeterType meter : expectedMeters) {
|
||||
assertEquals(
|
||||
|
||||
1, detectMeters.stream().filter(e -> e.getMeterType() == meter).count(),
|
||||
String.format("Meter '%s' not found: %s", meter,
|
||||
Arrays.toString(detectMeters.toArray(new DSMRMeterDescriptor[0]))),
|
||||
1, detectMeters.stream().filter(e -> e.getMeterType() == meter).count());
|
||||
Arrays.toString(detectMeters.toArray(new DSMRMeterDescriptor[0]))));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,24 +12,23 @@
|
||||
*/
|
||||
package org.openhab.binding.dsmr.internal.discovery;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.mockito.Mockito.when;
|
||||
import static org.mockito.MockitoAnnotations.initMocks;
|
||||
import static org.openhab.binding.dsmr.internal.meter.DSMRMeterType.*;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.EnumSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.TooManyListenersException;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.Answers;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.openhab.binding.dsmr.internal.TelegramReaderUtil;
|
||||
import org.openhab.binding.dsmr.internal.device.p1telegram.P1Telegram;
|
||||
import org.openhab.binding.dsmr.internal.device.p1telegram.P1Telegram.TelegramState;
|
||||
@@ -37,7 +36,6 @@ import org.openhab.binding.dsmr.internal.handler.DSMRBridgeHandler;
|
||||
import org.openhab.binding.dsmr.internal.handler.DSMRMeterHandler;
|
||||
import org.openhab.binding.dsmr.internal.meter.DSMRMeterDescriptor;
|
||||
import org.openhab.binding.dsmr.internal.meter.DSMRMeterType;
|
||||
import org.openhab.core.io.transport.serial.PortInUseException;
|
||||
import org.openhab.core.thing.Thing;
|
||||
import org.openhab.core.thing.ThingUID;
|
||||
|
||||
@@ -46,22 +44,15 @@ import org.openhab.core.thing.ThingUID;
|
||||
*
|
||||
* @author Hilbrand Bouwkamp - Initial contribution
|
||||
*/
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
public class DSMRMeterDiscoveryServiceTest {
|
||||
|
||||
private static final String EXPECTED_CONFIGURED_TELEGRAM = "dsmr_50";
|
||||
private static final String UNREGISTERED_METER_TELEGRAM = "unregistered_meter";
|
||||
|
||||
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
|
||||
private DSMRBridgeHandler bridge;
|
||||
@Mock
|
||||
private Thing thing;
|
||||
@Mock
|
||||
private DSMRMeterHandler meterHandler;
|
||||
|
||||
@Before
|
||||
public void setUp() throws PortInUseException, TooManyListenersException {
|
||||
initMocks(this);
|
||||
}
|
||||
private @Mock(answer = Answers.RETURNS_DEEP_STUBS) DSMRBridgeHandler bridge;
|
||||
private @Mock Thing thing;
|
||||
private @Mock DSMRMeterHandler meterHandler;
|
||||
|
||||
/**
|
||||
* Test if discovery reports when the user has incorrectly configured the binding with the wrong meter types.
|
||||
@@ -100,12 +91,12 @@ public class DSMRMeterDiscoveryServiceTest {
|
||||
when(bridge.getThing().getThings()).thenReturn(things);
|
||||
|
||||
service.telegramReceived(expected);
|
||||
assertNotNull("Should have invalid configured meters", invalidConfiguredRef.get());
|
||||
assertTrue("Should have found specific invalid meter",
|
||||
invalidConfiguredRef.get().contains(DSMRMeterType.ELECTRICITY_V4_2));
|
||||
assertNotNull("Should have undetected meters", unconfiguredRef.get());
|
||||
assertTrue("Should have found specific undetected meter",
|
||||
unconfiguredRef.get().contains(DSMRMeterType.ELECTRICITY_V5_0));
|
||||
assertNotNull(invalidConfiguredRef.get(), "Should have invalid configured meters");
|
||||
assertTrue(invalidConfiguredRef.get().contains(DSMRMeterType.ELECTRICITY_V4_2),
|
||||
"Should have found specific invalid meter");
|
||||
assertNotNull(unconfiguredRef.get(), "Should have undetected meters");
|
||||
assertTrue(unconfiguredRef.get().contains(DSMRMeterType.ELECTRICITY_V5_0),
|
||||
"Should have found specific undetected meter");
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -128,6 +119,6 @@ public class DSMRMeterDiscoveryServiceTest {
|
||||
when(bridge.getThing().getThings()).thenReturn(Collections.emptyList());
|
||||
|
||||
service.telegramReceived(telegram);
|
||||
assertTrue("Should have found an unregistered meter", unregisteredMeter.get());
|
||||
assertTrue(unregisteredMeter.get(), "Should have found an unregistered meter");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,12 +12,12 @@
|
||||
*/
|
||||
package org.openhab.binding.dsmr.internal.meter;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
import org.junit.Test;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.openhab.binding.dsmr.internal.TelegramReaderUtil;
|
||||
import org.openhab.binding.dsmr.internal.device.cosem.CosemObject;
|
||||
import org.openhab.binding.dsmr.internal.device.p1telegram.P1Telegram.TelegramState;
|
||||
@@ -40,7 +40,7 @@ public class DSMRMeterTest {
|
||||
|
||||
List<CosemObject> filterMeterValues = meter
|
||||
.filterMeterValues(TelegramReaderUtil.readTelegram("dsmr_50", TelegramState.OK).getCosemObjects());
|
||||
assertEquals("Filter should return all required objects", DSMRMeterType.DEVICE_V5.requiredCosemObjects.length,
|
||||
filterMeterValues.size());
|
||||
assertEquals(DSMRMeterType.DEVICE_V5.requiredCosemObjects.length, filterMeterValues.size(),
|
||||
"Filter should return all required objects");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user