You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
5.7 KiB
131 lines
5.7 KiB
import device.Device;
|
|
import device.cdPlayer.CDPlayer;
|
|
import device.radioPlayer.RadioPlayer;
|
|
import device.usbPlayer.UsbPlayer;
|
|
import org.junit.jupiter.params.ParameterizedTest;
|
|
import org.junit.jupiter.params.provider.Arguments;
|
|
import org.junit.jupiter.params.provider.MethodSource;
|
|
|
|
import java.io.FileReader;
|
|
import java.io.IOException;
|
|
import java.lang.reflect.InvocationTargetException;
|
|
import java.util.Properties;
|
|
import java.util.stream.Stream;
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
|
|
class BordComputerTest {
|
|
|
|
@ParameterizedTest
|
|
@MethodSource("readConfigOptions")
|
|
void readConfigTest(String testName, String testTyp, BordComputer testBc, String expectedResult) {
|
|
if (testTyp.equals("count")) {
|
|
assertThat(fileReaderCount()).describedAs(testName).isEqualTo(testBc.deviceNames.length);
|
|
}
|
|
if (testTyp.equals("count1")) {
|
|
assertThat(fileReaderCount()).describedAs(testName).isEqualTo(testBc.installedDevices.length);
|
|
}
|
|
if (testTyp.equals("item1")) {
|
|
assertThat(testBc.deviceNames[0]).describedAs(testName).isEqualTo(expectedResult);
|
|
}
|
|
if (testTyp.equals("item2")) {
|
|
assertThat(testBc.deviceNames[1]).describedAs(testName).isEqualTo(expectedResult);
|
|
}
|
|
if (testTyp.equals("item3")) {
|
|
assertThat(testBc.deviceNames[2]).describedAs(testName).isEqualTo(expectedResult);
|
|
}
|
|
}
|
|
|
|
static Stream<Arguments> readConfigOptions() throws ClassNotFoundException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException {
|
|
BordComputer bc1 = new BordComputer();
|
|
bc1.readConfig();
|
|
|
|
return Stream.of(
|
|
Arguments.of("Check if file reader is getting every item in Geraete.config", "count", bc1, ""),
|
|
Arguments.of("Check if file reader is getting the first element", "item1", bc1, "device.cdPlayer.CDPlayer"),
|
|
Arguments.of("Check if file reader is getting the second element", "item2", bc1, "device.radioPlayer.RadioPlayer"),
|
|
Arguments.of("Check if file reader is getting the third element", "item3", bc1, "device.usbPlayer.UsbPlayer"),
|
|
Arguments.of("Test if installed devices has the length", "count1", bc1, "")
|
|
);
|
|
}
|
|
|
|
@ParameterizedTest
|
|
@MethodSource("setDevicesOptions")
|
|
void setDevicesTest(String testName, BordComputer testBc, String testTyp, Boolean bool) {
|
|
Boolean boolActual = null;
|
|
if (testTyp.equals("0")) boolActual = (testBc.installedDevices[0] instanceof CDPlayer);
|
|
if (testTyp.equals("1")) boolActual = (testBc.installedDevices[1] instanceof RadioPlayer);
|
|
if (testTyp.equals("2")) boolActual = (testBc.installedDevices[2] instanceof UsbPlayer);
|
|
assertThat(boolActual).describedAs(testName).isEqualTo(bool);
|
|
}
|
|
|
|
static Stream<Arguments> setDevicesOptions() throws ClassNotFoundException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException {
|
|
BordComputer bc = new BordComputer();
|
|
bc.readConfig();
|
|
return Stream.of(
|
|
Arguments.of("Test if installedDevices[0] is instance of CDPlayer", bc, "0", true),
|
|
Arguments.of("Test if installedDevices[1] is instance of RadioPlayer", bc, "1", true),
|
|
Arguments.of("Test if installedDevices[2] is instance of UsbPlayer", bc, "2", true)
|
|
);
|
|
}
|
|
|
|
public int fileReaderCount() {
|
|
int count = 0;
|
|
try (FileReader reader = new FileReader("Geraete.config")) {
|
|
Properties properties = new Properties();
|
|
properties.load(reader);
|
|
count = properties.size();
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return count;
|
|
}
|
|
|
|
////
|
|
@ParameterizedTest
|
|
@MethodSource("changeDeviceOptions")
|
|
void changeDeviceTest(String testName, BordComputer inputBC, Device[] oldDevices,Device prvDevice,String message ,int caseNr) {
|
|
Device[] newDevicesList = inputBC.installedDevices.clone();
|
|
if (caseNr == 1 ) {
|
|
assertThat(newDevicesList).describedAs(testName).isNotEqualTo(oldDevices);
|
|
}else if (caseNr == 2) {
|
|
Device currentDevice = inputBC.activeDevice;
|
|
assertThat(currentDevice).describedAs(testName).isNotEqualTo(prvDevice);
|
|
}else if (caseNr == 3) {
|
|
assertThat(inputBC.changeDevice()).describedAs(testName).isNotNull();
|
|
}
|
|
}
|
|
|
|
static Stream<Arguments> changeDeviceOptions() throws ClassNotFoundException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException {
|
|
|
|
//first case
|
|
BordComputer bc = new BordComputer();
|
|
bc.readConfig();
|
|
bc.setDevices();
|
|
Device[] currentDevices = new Device[bc.installedDevices.length];
|
|
currentDevices = bc.installedDevices.clone();
|
|
String m = bc.changeDevice();
|
|
|
|
//second case
|
|
BordComputer bc1 = new BordComputer();
|
|
bc1.readConfig();
|
|
bc1.setDevices();
|
|
Device prvDevice = bc1.activeDevice;
|
|
m =bc1.changeDevice();
|
|
|
|
//third case
|
|
BordComputer bc2 = new BordComputer();
|
|
bc2.readConfig();
|
|
bc2.setDevices();
|
|
m =bc2.changeDevice();
|
|
|
|
|
|
|
|
return Stream.of(
|
|
Arguments.of("The order of the installedDevices should be changed ", bc,currentDevices,null,"",1),
|
|
Arguments.of("The active Device should be changed ", bc1,null,prvDevice,"",2),
|
|
Arguments.of("The new Device returns a String ", bc2,null,prvDevice,bc2.activeDevice.toString(),3)
|
|
);
|
|
}
|
|
}
|