/* * 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 java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.*; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; /** * * @author dgorst */ public class ChunkedSerialDataWriterTest { private ChunkedSerialDataWriter chunkedSerialDataWriter; private SerialDataWriter mockDataWriter; @Before public void setUp() { mockDataWriter = mock(SerialDataWriter.class); chunkedSerialDataWriter = new ChunkedSerialDataWriter(200, mockDataWriter); } /** * Test of breakDataIntoChunks method, of class ChunkedSerialDataWriter. */ @Test public void testBreakDataIntoChunks() { String data = "abcdef123445678912345678901234567890\n"; List<String> expResult = new ArrayList<>(); expResult.add("abcdef1234456789"); expResult.add("1234567890123456"); expResult.add("7890\n"); List<String> result = chunkedSerialDataWriter.breakDataIntoChunks(data); assertEquals(expResult, result); } @Test public void testBreakEmptyDataIntoChunks() { String data = ""; List<String> expResult = new ArrayList<>(); List<String> result = chunkedSerialDataWriter.breakDataIntoChunks(data); assertEquals(expResult, result); } /** * Test that we add chunks to our collection when data is passed to us */ @Test public void testWriteData() { Map<String, Object> dataModel = new HashMap<>(); dataModel.put("value1", 2.34567); dataModel.put("value2", "test"); when(mockDataWriter.convertDataToCsvString(dataModel)).thenReturn("2.3456789, teststring"); chunkedSerialDataWriter.writeData(dataModel); List<String> expResult = new ArrayList<>(); expResult.add("\n2.3456789, test"); expResult.add("string\n"); assertEquals(expResult, chunkedSerialDataWriter.getChunks()); } @Test public void testWriteNextChunkRemovesItFromOurCollection() { chunkedSerialDataWriter.addChunk("12345"); assertFalse(chunkedSerialDataWriter.getChunks().isEmpty()); chunkedSerialDataWriter.writeNextChunk(); assertTrue(chunkedSerialDataWriter.getChunks().isEmpty()); verify(mockDataWriter).writeString("12345"); } @Test public void testWriteNextChunkDoesNothingIfChunksIsEmpty() { assertTrue(chunkedSerialDataWriter.getChunks().isEmpty()); chunkedSerialDataWriter.writeNextChunk(); verify(mockDataWriter, never()).writeString(anyString()); } }