|
|
@ -1,7 +1,9 @@ |
|
|
|
import device.Device; |
|
|
|
import device.cdPlayer.CDPlayer; |
|
|
|
import device.cdPlayer.exceptions.NegativeInputException; |
|
|
|
import device.radioPlayer.RadioPlayer; |
|
|
|
import device.usbPlayer.UsbPlayer; |
|
|
|
import exception.NoItemEvenAllPreconditionAreMet; |
|
|
|
import org.junit.jupiter.params.ParameterizedTest; |
|
|
|
import org.junit.jupiter.params.provider.Arguments; |
|
|
|
import org.junit.jupiter.params.provider.MethodSource; |
|
|
@ -81,4 +83,156 @@ class BordComputerTest { |
|
|
|
} |
|
|
|
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(); |
|
|
|
}else if (caseNr == 4) { |
|
|
|
assertThat(inputBC.changeDevice()).describedAs(testName).isNotNull(); |
|
|
|
}else if (caseNr == 5) { |
|
|
|
assertThat(inputBC.changeDevice()).describedAs(testName).isNotNull(); |
|
|
|
}else if (caseNr == 6) { |
|
|
|
assertThat(inputBC.changeDevice()).describedAs(testName).contains("USB Player"); |
|
|
|
}else if (caseNr == 7) { |
|
|
|
assertThat(inputBC.changeDevice()).describedAs(testName).contains("CDPlayer"); |
|
|
|
}else if (caseNr == 8) { |
|
|
|
assertThat(inputBC.changeDevice()).describedAs(testName).contains("playlist"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
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(); |
|
|
|
|
|
|
|
//forth case |
|
|
|
BordComputer bc3 = new BordComputer(); |
|
|
|
bc3.readConfig(); |
|
|
|
bc3.setDevices(); |
|
|
|
m =bc3.changeDevice(); |
|
|
|
m =bc3.changeDevice(); //CDPlayer |
|
|
|
|
|
|
|
//fifth case |
|
|
|
BordComputer bc4 = new BordComputer(); |
|
|
|
bc4.readConfig(); |
|
|
|
bc4.setDevices(); |
|
|
|
m =bc4.changeDevice(); |
|
|
|
m =bc4.changeDevice(); //CDPlayer |
|
|
|
m =bc4.changeDevice(); |
|
|
|
|
|
|
|
//sixth case |
|
|
|
BordComputer bc5 = new BordComputer(); |
|
|
|
bc5.readConfig(); |
|
|
|
bc5.setDevices(); |
|
|
|
m =bc5.changeDevice(); |
|
|
|
|
|
|
|
//seventh case |
|
|
|
BordComputer bc6 = new BordComputer(); |
|
|
|
bc6.readConfig(); |
|
|
|
bc6.setDevices(); |
|
|
|
m =bc6.changeDevice(); |
|
|
|
m =bc6.changeDevice(); |
|
|
|
|
|
|
|
//eighth case |
|
|
|
BordComputer bc7 = new BordComputer(); |
|
|
|
bc7.readConfig(); |
|
|
|
bc7.setDevices(); |
|
|
|
m =bc7.changeDevice(); |
|
|
|
m =bc7.changeDevice(); |
|
|
|
m =bc7.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), |
|
|
|
Arguments.of("The new Device returns a String ", bc3,null,prvDevice,null,4), |
|
|
|
Arguments.of("The new Device returns a String ", bc4,null,prvDevice,null,5), |
|
|
|
Arguments.of("The new Device returns Info ", bc5,null,prvDevice,null,6), |
|
|
|
Arguments.of("The new Device returns Info ", bc6,null,prvDevice,null,7), |
|
|
|
Arguments.of("The new Device returns Info ", bc6,null,prvDevice,null,8) |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
@ParameterizedTest |
|
|
|
@MethodSource("playDate") |
|
|
|
void playTest(String testName, String testCase,BordComputer bordComputer,String instanceName) { |
|
|
|
if(testCase.equals("Case1")) { |
|
|
|
bordComputer.meetAllPreconditionForPlay(); |
|
|
|
assertThat(bordComputer.play()).describedAs(testName).isNotEqualTo(null); |
|
|
|
} |
|
|
|
if(testCase.equals("Case2")) { |
|
|
|
Device radioPlayer=bordComputer.getInstanceByName(instanceName); |
|
|
|
bordComputer.setActiveDevice(radioPlayer); |
|
|
|
assertThat(bordComputer.play()).describedAs(testName).isNotEqualTo(null); |
|
|
|
} |
|
|
|
if(testCase.equals("Case3")) { |
|
|
|
Device usbPlayer=bordComputer.getInstanceByName(instanceName); |
|
|
|
bordComputer.setActiveDevice(usbPlayer); |
|
|
|
bordComputer.meetAllPreconditionForPlay(); |
|
|
|
assertThat(bordComputer.play()).describedAs(testName).isNotEqualTo(null); |
|
|
|
} |
|
|
|
if(testCase.equals("Case4")) { |
|
|
|
Exception newException = assertThrows(NoItemEvenAllPreconditionAreMet.class, () -> bordComputer.play()); |
|
|
|
assertEquals(NoItemEvenAllPreconditionAreMet.class, newException.getClass()); |
|
|
|
assertEquals(newException.getMessage(), "No Item returned even all preconditions are met."); |
|
|
|
} |
|
|
|
if(testCase.equals("Case5")) { |
|
|
|
Device usbPlayer=bordComputer.getInstanceByName(instanceName); |
|
|
|
bordComputer.setActiveDevice(usbPlayer); |
|
|
|
Exception newException = assertThrows(NoItemEvenAllPreconditionAreMet.class, () -> bordComputer.play()); |
|
|
|
assertEquals(NoItemEvenAllPreconditionAreMet.class, newException.getClass()); |
|
|
|
assertEquals(newException.getMessage(), "No Item returned even all preconditions are met."); |
|
|
|
} |
|
|
|
if(testCase.equals("Case6")) { |
|
|
|
Device radioPlayer=bordComputer.getInstanceByName(instanceName); |
|
|
|
bordComputer.setActiveDevice(radioPlayer); |
|
|
|
assertDoesNotThrow(() -> bordComputer.play()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
static Stream<Arguments> playDate()throws ClassNotFoundException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException { |
|
|
|
BordComputer bordComputer = new BordComputer(); |
|
|
|
bordComputer.readConfig(); |
|
|
|
|
|
|
|
BordComputer bordComputer2 = new BordComputer(); |
|
|
|
bordComputer2.readConfig(); |
|
|
|
|
|
|
|
return Stream.of( |
|
|
|
Arguments.of("[CDPlayer-> play(): after all preconditions are met] => ShouldReturnAnItemToPlay","Case1",bordComputer,"CDPlayer"), |
|
|
|
Arguments.of("[RadioPlayer-> play(): after all preconditions are met] => ShouldReturnAnItemToPlay","Case2",bordComputer,"RadioPlayer"), |
|
|
|
Arguments.of("[UsbPlayer-> play(): after all preconditions are met] => ShouldReturnAnItemToPlay","Case3",bordComputer,"UsbPlayer"), |
|
|
|
Arguments.of("[CDPlayer-> play(): without fulfilling preconditions] => ShouldReturnAnException","Case4",bordComputer2,"CDPlayer"), |
|
|
|
Arguments.of("[UsbPlayer-> play(): without fulfilling preconditions] => ShouldReturnAnException","Case5",bordComputer2,"UsbPlayer"), |
|
|
|
Arguments.of("[RadioPlayer-> play(): without fulfilling preconditions] => ShouldWorkWell","Case6",bordComputer2,"RadioPlayer") |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |