/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package project.latex.balloon.writer; import com.pi4j.io.serial.Serial; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.junit.Before; import org.junit.Test; import org.mockito.Matchers; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import project.latex.balloon.TransmittedDataKeysResource; /** * * @author Dan */ public class SerialDataWriterTest { private SerialDataWriter writer; private Serial mockSerial; private List<String> dataKeys; private TransmittedDataKeysResource mockTransmittedDataKeysResource; private ChecksumGenerator mockChecksumGenerator; @Before public void setUp() { mockSerial = mock(Serial.class); dataKeys = new ArrayList<>(); dataKeys.add("Test"); dataKeys.add("Test2"); mockTransmittedDataKeysResource = mock(TransmittedDataKeysResource.class); when(mockTransmittedDataKeysResource.getTransmittedDataKeys()).thenReturn(dataKeys); mockChecksumGenerator = mock(ChecksumGenerator.class); when(mockChecksumGenerator.generateChecksum(Matchers.anyString())).thenReturn("XX"); writer = new SerialDataWriter(mockTransmittedDataKeysResource, new DataModelConverter(mockChecksumGenerator), mockSerial, 50); } @Test(expected = UnsatisfiedLinkError.class) public void testConstructorThrowsIfSerialPortCantOpen() { doThrow(UnsatisfiedLinkError.class).when(mockSerial).open(Serial.DEFAULT_COM_PORT, 50); writer = new SerialDataWriter(mockTransmittedDataKeysResource, new DataModelConverter(mockChecksumGenerator), mockSerial, 50); } /** * Test of writeData method, of class SerialDataWriter. */ @Test public void testWriteValidData() { Map<String, Object> dataModel = new HashMap<>(); dataModel.put("Test", "DataString"); dataModel.put("Test2", "HelloWorld"); writer.writeData(dataModel); verify(mockSerial).writeln("DataString,HelloWorld*XX"); } @Test public void testWriteDataWhichDoesntMatchKeys() { Map<String, Object> dataModel = new HashMap<>(); dataModel.put("Invalid", "DataString"); dataModel.put("Invalid2", "HelloWorld"); writer.writeData(dataModel); verify(mockSerial).writeln("99.99,99.99*XX"); } @Test(expected = IllegalArgumentException.class) public void testWriteDataThrowsIfDataModelIsNull() { writer.writeData(null); } }