/*
* 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.ssdv;
import java.io.File;
import org.junit.Before;
import org.junit.Test;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
/**
*
* @author will
*/
public class SsdvControllerImpleTest {
SsdvController ssdvController;
SsdvEncoderController encoder;
SsdvDataWriter writer;
@Before
public void setUp() {
encoder = mock(SsdvEncoderController.class);
writer = mock(SsdvDataWriter.class);
ssdvController = new SsdvController(encoder, writer);
}
@Test
public void testSendNextPacketDoesNotWritePacketIfNoEncodedImageAvailable() {
when(encoder.getEncodedImageFile()).thenReturn(null);
ssdvController.sendNextPacket();
verify(writer, never()).writePacket(any(String.class), any(int.class));
}
@Test
public void testSendNextPacketWritesPacketIfEncodedImageAvailable() {
String testImageFilePath = SsdvControllerImpleTest.class.getResource("testFile").getFile();
File mockEncodedImage = new File(testImageFilePath);
when(encoder.getEncodedImageFile()).thenReturn(mockEncodedImage);
ssdvController.sendNextPacket();
verify(writer).writePacket(mockEncodedImage.getAbsolutePath(), 0);
}
@Test
public void testSendNextPacketWritesAllPacketsBeforeGettingNextEncodedImage() {
String testImageFilePath = SsdvControllerImpleTest.class.getResource("testFile").getFile();
// File contains 2 packets worth of data (512 bytes)
File mockEncodedImage = new File(testImageFilePath);
when(encoder.getEncodedImageFile()).thenReturn(mockEncodedImage);
ssdvController.sendNextPacket();
verify(encoder).getEncodedImageFile();
verify(writer).writePacket(mockEncodedImage.getAbsolutePath(), 0);
ssdvController.sendNextPacket();
verify(writer).writePacket(mockEncodedImage.getAbsolutePath(), 1);
verify(encoder).getEncodedImageFile();
ssdvController.sendNextPacket();
verify(writer, times(2)).writePacket(mockEncodedImage.getAbsolutePath(), 0);
verify(encoder, times(2)).getEncodedImageFile();
}
}