Project for Continous Integration
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.

460 lines
17 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. package device.usbPlayer;
  2. import org.junit.jupiter.params.ParameterizedTest;
  3. import org.junit.jupiter.params.provider.Arguments;
  4. import org.junit.jupiter.params.provider.MethodSource;
  5. import java.util.stream.Stream;
  6. import java.util.ArrayList;
  7. import static org.assertj.core.api.Assertions.assertThat;
  8. class UsbPlayerTest {
  9. //UsbPlayer up = new UsbPlayer();
  10. @ParameterizedTest
  11. @MethodSource("PlayOptions")
  12. void playTest(String testName, UsbPlayer inputPlay, String expectedResult) {
  13. String playState = inputPlay.play();
  14. assertThat(playState).describedAs(testName).isEqualTo(expectedResult);
  15. }
  16. static Stream<Arguments> PlayOptions() {
  17. USB_Stick USBDrive = new USB_Stick();
  18. UsbPlayer up1 = new UsbPlayer(USBDrive);
  19. UsbPlayer up8 = new UsbPlayer(USBDrive);
  20. up8.setPlayTrack("");
  21. UsbPlayer up2 = new UsbPlayer(USBDrive);
  22. ArrayList<String> l = new ArrayList<String>();
  23. l.add("a.mp3");
  24. l.add("b.mp3");
  25. l.add("c.gif");
  26. up2.setPlaylist(l);
  27. UsbPlayer up3 = new UsbPlayer(USBDrive);
  28. ArrayList<String> Pl = new ArrayList<String>();
  29. up3.setPlaylist(Pl);
  30. UsbPlayer up6 = new UsbPlayer(USBDrive);
  31. up6.setDefect(true);
  32. UsbPlayer up7 = new UsbPlayer(USBDrive);
  33. up7.setConnected(false);
  34. return Stream.of(
  35. Arguments.of("All right : ", up1, "USB : connected,working,have a list,Audio,point to a track."),
  36. Arguments.of("No first Track : ", up8, "USB : connected,working,have a list,Audio,doesn't point to a track."),
  37. Arguments.of("No Audio Files : ", up2, "USB : connected,working,have a list,not Audio."),
  38. Arguments.of("No list of tracks : ", up3, "USB : connected,working,have no list."),
  39. Arguments.of("connected , not working : ", up6, "USB : connected,not working."),
  40. Arguments.of("not connected : ", up7, "not connected."));
  41. }
  42. @ParameterizedTest
  43. @MethodSource("louderOptions")
  44. void louderTest(String testName, UsbPlayer inputPlay, int expectedResult) {
  45. int volumeNum = inputPlay.getLautstaerke();
  46. assertThat(volumeNum).describedAs(testName).isEqualTo(expectedResult);
  47. }
  48. static Stream<Arguments> louderOptions() {
  49. USB_Stick USBDrive = new USB_Stick();
  50. UsbPlayer up11 = new UsbPlayer(USBDrive);
  51. up11.louder();
  52. UsbPlayer up22 = new UsbPlayer(USBDrive);
  53. up22.setLautstaerke(100);
  54. up22.louder();
  55. return Stream.of(
  56. Arguments.of("Volume is : 1 ", up11, 1),
  57. Arguments.of("Volume is : 100 ", up22, 100)
  58. );
  59. }
  60. @ParameterizedTest
  61. @MethodSource("quieterOptions")
  62. void quieterTest(String testName, UsbPlayer inputPlay, int expectedResult) {
  63. int volumeNum = inputPlay.getLautstaerke();
  64. assertThat(volumeNum).describedAs(testName).isEqualTo(expectedResult);
  65. }
  66. static Stream<Arguments> quieterOptions() {
  67. USB_Stick USBDrive = new USB_Stick();
  68. UsbPlayer up1 = new UsbPlayer(USBDrive);
  69. up1.quieter();
  70. UsbPlayer up2 = new UsbPlayer(USBDrive);
  71. up2.setLautstaerke(10);
  72. up2.quieter();
  73. return Stream.of(
  74. Arguments.of("Volume must stay 0 ", up1, 0),
  75. Arguments.of("Volume must be 9 ", up2, 9)
  76. );
  77. }
  78. @ParameterizedTest
  79. @MethodSource("NextOptions")
  80. void NextTest(String testName, UsbPlayer inputPlay, String expectedResult) {
  81. String current_Track = inputPlay.getPlayTrack();
  82. assertThat(current_Track).describedAs(testName).isEqualTo(expectedResult);
  83. }
  84. static Stream<Arguments> NextOptions() {
  85. USB_Stick USBDrive = new USB_Stick();
  86. UsbPlayer up1 = new UsbPlayer(USBDrive);
  87. up1.next();
  88. UsbPlayer up2 = new UsbPlayer(USBDrive);
  89. for (int i = 1; i < up2.getPlaylist().size(); i++) {
  90. up2.next();
  91. }
  92. UsbPlayer up3 = new UsbPlayer(USBDrive);
  93. for (int i = 1; i < up3.getPlaylist().size(); i++) {
  94. up3.next();
  95. }
  96. up3.next();
  97. return Stream.of(
  98. Arguments.of("Second-Song : Musik 02.mp3 ", up1, "Musik 02.mp3"),
  99. Arguments.of("Last-Song : Musik 03.mp3 ", up2, "Musik 03.mp3"),
  100. Arguments.of("From last to first Song : Musik 01.mp3 ", up3, "Musik 01.mp3")
  101. );
  102. }
  103. @ParameterizedTest
  104. @MethodSource("PrevOptions")
  105. void PrevTest(String testName, UsbPlayer inputPlay, String expectedResult) {
  106. String current_Track = inputPlay.getPlayTrack();
  107. assertThat(current_Track).describedAs(testName).isEqualTo(expectedResult);
  108. }
  109. static Stream<Arguments> PrevOptions() {
  110. USB_Stick USBDrive = new USB_Stick();
  111. UsbPlayer up1 = new UsbPlayer(USBDrive);
  112. up1.prev();
  113. UsbPlayer up2 = new UsbPlayer(USBDrive);
  114. for (int i = 1; i < up2.getPlaylist().size(); i++) {//3
  115. up2.prev();
  116. }
  117. return Stream.of(
  118. Arguments.of("From first-Song to last-Song : Musik 03.mp3 ", up1, "Musik 03.mp3"),
  119. Arguments.of("From first-Song to second-Song(Backward) : Musik 02.mp3 ", up2, "Musik 02.mp3")
  120. );
  121. }
  122. @ParameterizedTest
  123. @MethodSource("louder_10_Options")
  124. void louder_10_Test(String testName, UsbPlayer inputPlay, int expectedResult) {
  125. int volumeNum = inputPlay.getLautstaerke();
  126. assertThat(volumeNum).describedAs(testName).isEqualTo(expectedResult);
  127. }
  128. static Stream<Arguments> louder_10_Options() {
  129. USB_Stick USBDrive = new USB_Stick();
  130. UsbPlayer up1 = new UsbPlayer(USBDrive);
  131. up1.Louder_10();
  132. UsbPlayer up2 = new UsbPlayer(USBDrive);
  133. for (int i = 0; i <= 3; i++) {
  134. up2.Louder_10();
  135. }
  136. up2.quieter_10();
  137. UsbPlayer up3 = new UsbPlayer(USBDrive);
  138. up3.setLautstaerke(100);
  139. up3.Louder_10();
  140. return Stream.of(
  141. Arguments.of("Volume was 0, should be 10 ", up1, 10),
  142. Arguments.of("Volume was 0, should be 30 ", up2, 30),
  143. Arguments.of("Volume was 100, should stay 100 ", up3, 100)
  144. );
  145. }
  146. @ParameterizedTest
  147. @MethodSource("quieter_10_Options")
  148. void quieter_10_Test(String testName, UsbPlayer inputPlay, int expectedResult) {
  149. int volumeNum = inputPlay.getLautstaerke();
  150. assertThat(volumeNum).describedAs(testName).isEqualTo(expectedResult);
  151. }
  152. static Stream<Arguments> quieter_10_Options() {
  153. USB_Stick USBDrive = new USB_Stick();
  154. UsbPlayer up1 = new UsbPlayer(USBDrive);
  155. up1.setLautstaerke(10);
  156. up1.quieter_10();
  157. UsbPlayer up2 = new UsbPlayer(USBDrive);
  158. up2.setLautstaerke(50);
  159. for (int i = 0; i < 3; i++) {
  160. up2.quieter_10();
  161. }
  162. UsbPlayer up3 = new UsbPlayer(USBDrive);
  163. up3.quieter_10();
  164. return Stream.of(
  165. Arguments.of("Volume was 10, should be 0 ", up1, 0),
  166. Arguments.of("Volume was 50, should be 20 ", up2, 20),
  167. Arguments.of("Volume was 0, should stay 0 ", up3, 0)
  168. );
  169. }
  170. @ParameterizedTest
  171. @MethodSource("FindSongOptions")
  172. void findSongTest(String testName, int inputPlay, int expectedResult) {
  173. //first case: the song is not in the Album
  174. // int songLoc1 = inputPlay.findSong("song 4");
  175. assertThat(inputPlay).describedAs(testName).isEqualTo(expectedResult);
  176. //Second Case: the song is in the album
  177. // int songLoc2 = inputPlay.findSong("Musik 02");
  178. assertThat(inputPlay).describedAs(testName).isEqualTo(expectedResult);
  179. }
  180. static Stream<Arguments> FindSongOptions() {
  181. USB_Stick USBDrive = new USB_Stick();
  182. UsbPlayer up1 = new UsbPlayer(USBDrive);
  183. return Stream.of(
  184. Arguments.of("The song is not in the Album", up1.findSong("song 4"), -1),
  185. Arguments.of("The song is in the Album", up1.findSong("Musik 02"), 1),
  186. Arguments.of("Name of the Song is in lower case :", up1.findSong("musik 02"), 1),
  187. Arguments.of("Name of the Song is in upper case :", up1.findSong("MUSIK 02"), 1)
  188. );
  189. }
  190. @ParameterizedTest
  191. @MethodSource("GoToOptions")
  192. void GoToTest(String testName, UsbPlayer inputPlay, String expectedResult) {
  193. String current_Track = inputPlay.getPlayTrack();
  194. assertThat(current_Track).describedAs(testName).isEqualTo(expectedResult);
  195. }
  196. static Stream<Arguments> GoToOptions() {
  197. USB_Stick USBDrive = new USB_Stick();
  198. UsbPlayer up1 = new UsbPlayer(USBDrive);
  199. up1.GoTo("Musik 03.mp3");
  200. UsbPlayer up2 = new UsbPlayer(USBDrive);
  201. up2.GoTo("Musik 04.mp3");
  202. UsbPlayer up3 = new UsbPlayer(USBDrive);
  203. up3.GoTo("Musik 02");
  204. UsbPlayer up4 = new UsbPlayer(USBDrive);
  205. up4.next();
  206. up4.GoTo("Musik");
  207. return Stream.of(
  208. Arguments.of("Go to Song : Musik 03.mp3 ", up1, "Musik 03.mp3"),
  209. Arguments.of("Go to Song that is not in the Album: Musik 04.mp3 ", up2, "Musik 01.mp3"),
  210. Arguments.of("Go to Song without writing the full Name : Musik 02 ", up3, "Musik 02.mp3"),
  211. Arguments.of("Go to Song and write a Name that many songs starts with : Musik", up4, "Musik 01.mp3")
  212. );
  213. }
  214. @ParameterizedTest
  215. @MethodSource("isAllAudioOptions")
  216. void isAllAudioTest(String testName, boolean inputTestResult, boolean expectedResult) {
  217. // String current_Track = inputPlay.getPlayTrack();
  218. assertThat(inputTestResult).describedAs(testName).isEqualTo(expectedResult);
  219. }
  220. static Stream<Arguments> isAllAudioOptions() {
  221. USB_Stick USBDrive = new USB_Stick();
  222. //mp3
  223. UsbPlayer up1 = new UsbPlayer(USBDrive);
  224. //mp4
  225. UsbPlayer up2 = new UsbPlayer(USBDrive);
  226. ArrayList<String> Pl = new ArrayList<String>();
  227. Pl.add("Musik 01.mp4");
  228. Pl.add("Musik 02.mp4");
  229. Pl.add("Musik 03.mp4");
  230. up2.setPlaylist(Pl);
  231. //m4a
  232. UsbPlayer up3 = new UsbPlayer(USBDrive);
  233. ArrayList<String> Pl1 = new ArrayList<String>();
  234. Pl1.add("Musik 01.m4a");
  235. Pl1.add("Musik 02.m4a");
  236. Pl1.add("Musik 03.m4a");
  237. up3.setPlaylist(Pl1);
  238. //wav
  239. UsbPlayer up4 = new UsbPlayer(USBDrive);
  240. ArrayList<String> Pl2 = new ArrayList<String>();
  241. Pl2.add("Musik 01.wav");
  242. Pl2.add("Musik 02.wav");
  243. Pl2.add("Musik 03.wav");
  244. up4.setPlaylist(Pl2);
  245. //wma
  246. UsbPlayer up5 = new UsbPlayer(USBDrive);
  247. ArrayList<String> Pl3 = new ArrayList<String>();
  248. Pl3.add("Musik 01.wma");
  249. Pl3.add("Musik 02.wma");
  250. Pl3.add("Musik 03.wma");
  251. up5.setPlaylist(Pl3);
  252. //aac
  253. UsbPlayer up6 = new UsbPlayer(USBDrive);
  254. ArrayList<String> Pl4 = new ArrayList<String>();
  255. Pl4.add("Musik 01.aac");
  256. Pl4.add("Musik 02.aac");
  257. Pl4.add("Musik 03.aac");
  258. up6.setPlaylist(Pl4);
  259. //mixed Audio and text Files in the Album
  260. UsbPlayer up7 = new UsbPlayer(USBDrive);
  261. ArrayList<String> Pl5 = new ArrayList<String>();
  262. Pl5.add("Musik 01.aac");
  263. Pl5.add("Musik 02.txt");
  264. Pl5.add("Musik 03.aac");
  265. up7.setPlaylist(Pl5);
  266. return Stream.of(
  267. Arguments.of("Check if the Files are .mp3 ", up1.isAllAudio(), true),
  268. Arguments.of("Check if the Files are .mp4 ", up2.isAllAudio(), true),
  269. Arguments.of("Check if the Files are .m4a ", up3.isAllAudio(), true),
  270. Arguments.of("Check if the Files are .wav ", up4.isAllAudio(), true),
  271. Arguments.of("Check if the Files are .wma ", up5.isAllAudio(), true),
  272. Arguments.of("Check if the Files are .aac ", up6.isAllAudio(), true),
  273. Arguments.of("Check case of mixed Files", up7.isAllAudio(), false)
  274. );
  275. }
  276. //GoToFirst()
  277. @ParameterizedTest
  278. @MethodSource("GoToFirstOptions")
  279. void GoToFirstTest(String testName, UsbPlayer inputUSB, String expectedResult) {
  280. String firstSong = inputUSB.getPlayTrack();
  281. assertThat(firstSong ).describedAs(testName).isEqualTo(expectedResult);
  282. }
  283. static Stream<Arguments> GoToFirstOptions() {
  284. USB_Stick USBDrive = new USB_Stick();
  285. UsbPlayer up1 = new UsbPlayer(USBDrive);
  286. up1.GoToFirst();
  287. UsbPlayer up2 = new UsbPlayer(USBDrive);
  288. up2.GoToFirst();
  289. up2.GoToFirst();
  290. UsbPlayer up3 = new UsbPlayer(USBDrive);
  291. up3.next();
  292. up3.GoToFirst();
  293. return Stream.of(
  294. Arguments.of("It should go to the first Song ", up1,up1.getPlaylist().get(0)),
  295. Arguments.of("Call the function twice and it stills go to the first Song ", up2,up2.getPlaylist().get(0)),
  296. Arguments.of("go to the next Song then back to first Song ", up3,up3.getPlaylist().get(0))
  297. );
  298. }
  299. @ParameterizedTest
  300. @MethodSource("GoToLastOptions")
  301. void GoToLastTest(String testName, UsbPlayer inputUSB, String expectedResult) {
  302. String firstSong = inputUSB.getPlayTrack();
  303. assertThat(firstSong ).describedAs(testName).isEqualTo(expectedResult);
  304. }
  305. static Stream<Arguments> GoToLastOptions() {
  306. USB_Stick USBDrive = new USB_Stick();
  307. //first case
  308. UsbPlayer up1 = new UsbPlayer(USBDrive);
  309. up1.GoToLast();
  310. UsbPlayer up2 = new UsbPlayer(USBDrive);
  311. up2.GoToLast();
  312. up2.GoToLast();
  313. UsbPlayer up3 = new UsbPlayer(USBDrive);
  314. up3.next();
  315. up3.GoToLast();
  316. return Stream.of(
  317. Arguments.of("It should go to the Last Song ", up1,up1.getPlaylist().get(up1.getPlaylist().size()-1)),
  318. Arguments.of("It should go to the Last Song even after calling the function twice ", up2,up2.getPlaylist().get(up2.getPlaylist().size()-1)),
  319. Arguments.of("It should go to the Last Song even changing the current song ", up3,up3.getPlaylist().get(up3.getPlaylist().size()-1))
  320. );
  321. }
  322. @ParameterizedTest
  323. @MethodSource("setPlayTrackOptions")
  324. void setPlayTrackTest(String testName, UsbPlayer inputUSB, String expectedResult) {
  325. String firstSong = inputUSB.getPlayTrack();
  326. assertThat(firstSong ).describedAs(testName).isEqualTo(expectedResult);
  327. }
  328. static Stream<Arguments> setPlayTrackOptions() {
  329. USB_Stick USBDrive = new USB_Stick();
  330. //first case
  331. UsbPlayer up1 = new UsbPlayer(USBDrive);
  332. up1.setPlayTrack("Musik 02.mp3");
  333. //Second Case
  334. UsbPlayer up2 = new UsbPlayer(USBDrive);
  335. up2.setPlayTrack("Musik 02.mp3");
  336. //Third Case
  337. UsbPlayer up3 = new UsbPlayer(USBDrive);
  338. up3.setPlayTrack("Musik 04.mp3");
  339. return Stream.of(
  340. Arguments.of("It should change the current Song ", up1,"Musik 02.mp3"),
  341. Arguments.of("It should change the current Song if it is in the Albume", up2,"Musik 02.mp3"),
  342. Arguments.of("Tried to change the Song,but the Song name does not exist in the Album(No change)", up3,"Musik 01.mp3")
  343. );
  344. }////
  345. @ParameterizedTest
  346. @MethodSource("getInfoTextOptions")
  347. void getInfoTextTest(String testName, UsbPlayer inputUSB, String expectedResult) {
  348. String infotxt = inputUSB.getInfoText();
  349. assertThat(infotxt ).describedAs(testName).isEqualTo(expectedResult);
  350. }
  351. static Stream<Arguments> getInfoTextOptions() {
  352. USB_Stick USBDrive = new USB_Stick();
  353. ArrayList<String> Fileslist = new ArrayList<String>();
  354. Fileslist.add("file 01.txt");
  355. Fileslist.add("file 02.txt");
  356. Fileslist.add("file 03.txt");
  357. USB_Stick USBwithTXT = new USB_Stick(Fileslist);
  358. //USB_Stick emptyUSB = new USB_Stick("");
  359. //first case
  360. UsbPlayer up1 = new UsbPlayer(USBDrive);
  361. //Second case
  362. UsbPlayer up2 = new UsbPlayer(USBwithTXT);
  363. return Stream.of(
  364. Arguments.of("USB Player with Albums ", up1,"USB Player is on : "+up1.getPlayTrack()),
  365. Arguments.of("USB Player with no Albums ", up2,"USB Player with no Albums")
  366. );
  367. }//"muted"
  368. @ParameterizedTest
  369. @MethodSource("muteOptions")
  370. void muteTest(String testName, UsbPlayer inputUSB, String expectedResult,String testName2,String testName3) {
  371. int prevSound = inputUSB.getLautstaerke();
  372. String isMuted = inputUSB.mute();
  373. assertThat(isMuted).describedAs(testName).isEqualTo(expectedResult);
  374. //Second case
  375. assertThat(inputUSB.getLautstaerke()).describedAs(testName2).isEqualTo(0);
  376. //third case
  377. assertThat(inputUSB.soundWas).describedAs(testName3).isEqualTo(prevSound);
  378. }
  379. static Stream<Arguments> muteOptions() {
  380. USB_Stick USBDrive = new USB_Stick();
  381. //first case
  382. UsbPlayer up1 = new UsbPlayer(USBDrive);
  383. up1.mute();
  384. return Stream.of(
  385. Arguments.of("The Sound is muted ", up1,"muted","Sound level is 0","previous sound level is saved ")
  386. );
  387. }
  388. }