Browse Source

added fifth test case for readConfig() & productive code

and added first test case for setDevices() & productive code
feature-pr-BordComputer-setDevices
Jan Ortner 3 years ago
parent
commit
9913b17554
  1. 2
      Geraete.config
  2. 13
      src/main/java/BordComputer.java
  3. 46
      src/test/java/BordComputerTest.java

2
Geraete.config

@ -1,4 +1,4 @@
CD=device.cdPlayer.CdPlayer
CD=device.cdPlayer.CDPlayer
Radio=device.radioPlayer.RadioPlayer Radio=device.radioPlayer.RadioPlayer
USB=device.usbPlayer.UsbPlayer USB=device.usbPlayer.UsbPlayer

13
src/main/java/BordComputer.java

@ -1,10 +1,15 @@
import device.Device;
import java.io.FileReader; import java.io.FileReader;
import java.lang.reflect.InvocationTargetException;
import java.util.Arrays; import java.util.Arrays;
import java.util.Properties; import java.util.Properties;
public class BordComputer { public class BordComputer {
String[] deviceNames; String[] deviceNames;
Device[] installedDevices;
Device activeDevice = null;
public void readConfig() { public void readConfig() {
@ -15,8 +20,16 @@ public class BordComputer {
Arrays.sort(values); Arrays.sort(values);
deviceNames = new String[values.length]; deviceNames = new String[values.length];
System.arraycopy(values, 0, deviceNames, 0, properties.size()); System.arraycopy(values, 0, deviceNames, 0, properties.size());
installedDevices=new Device[values.length];
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
activeDevice =installedDevices[0];
}
public void setDevices() throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException, ClassNotFoundException {
Class<?> c;
c= Class.forName(deviceNames[0]);
installedDevices[0] = (Device) c.getConstructor().newInstance();
} }
} }

46
src/test/java/BordComputerTest.java

@ -1,3 +1,4 @@
import device.Device;
import device.radioPlayer.RadioPlayer; import device.radioPlayer.RadioPlayer;
import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.Arguments;
@ -5,6 +6,7 @@ import org.junit.jupiter.params.provider.MethodSource;
import java.io.FileReader; import java.io.FileReader;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Properties; import java.util.Properties;
import java.util.stream.Stream; import java.util.stream.Stream;
@ -17,15 +19,10 @@ class BordComputerTest {
@MethodSource("readConfigOptions") @MethodSource("readConfigOptions")
void readConfigTest(String testName, String testTyp, BordComputer testBc, String expectedResult) { void readConfigTest(String testName, String testTyp, BordComputer testBc, String expectedResult) {
if (testTyp.equals("count")) { if (testTyp.equals("count")) {
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();
}
assertThat(count).describedAs(testName).isEqualTo(testBc.deviceNames.length);
assertThat(fileReaderCount()).describedAs(testName).isEqualTo(testBc.deviceNames.length);
}
if (testTyp.equals("count1")) {
assertThat(fileReaderCount()).describedAs(testName).isEqualTo(testBc.installedDevices.length);
} }
if (testTyp.equals("item1")) { if (testTyp.equals("item1")) {
assertThat(testBc.deviceNames[0]).describedAs(testName).isEqualTo(expectedResult); assertThat(testBc.deviceNames[0]).describedAs(testName).isEqualTo(expectedResult);
@ -44,10 +41,37 @@ class BordComputerTest {
return Stream.of( 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 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 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 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("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) {
Device dev = testBc.installedDevices[0];
assertThat(dev).describedAs(testName).isNotEqualTo(null);
}
static Stream<Arguments> setDevicesOptions() throws ClassNotFoundException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException {
BordComputer bc = new BordComputer();
bc.readConfig();
bc.setDevices();
return Stream.of(
Arguments.of("Test if installedDevices[0] is not null", bc)
);
}
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;
}
} }
Loading…
Cancel
Save