diff --git a/src/main/java/device/radioPlayer/RadioPlayer.java b/src/main/java/device/radioPlayer/RadioPlayer.java index 2bd5401..2b91e3e 100644 --- a/src/main/java/device/radioPlayer/RadioPlayer.java +++ b/src/main/java/device/radioPlayer/RadioPlayer.java @@ -22,6 +22,7 @@ public class RadioPlayer implements Device { LocalDateTime now = LocalDateTime.now(); int hour = now.getHour(); int Lautstaerke = 0; + int savedVolume; String playedStation = ""; public String getYouFMInfoByTime(int x) { @@ -158,22 +159,50 @@ public class RadioPlayer implements Device { @Override public String chooseItem(int itemNr) { - return null; + if (regionPlaylist.contains(playedStation)) { + if (itemNr > regionPlaylist.size()) { + playedStation = regionPlaylist.get(regionPlaylist.size() - 1); + return ("Radio is playing station: 0" + regionPlaylist.size() + " " + this.playedStation + " from regional playlist"); + } else if (itemNr < 1) { + playedStation = regionPlaylist.get(0); + return ("Radio is playing station: 01 " + this.playedStation + " from regional playlist"); + } else { + playedStation = regionPlaylist.get(itemNr - 1); + return ("Radio is playing station: 0" + (regionPlaylist.indexOf(playedStation) + 1) + " " + this.playedStation + " from regional playlist"); + } + } else { + if (itemNr > savedPlaylist.size()) { + playedStation = savedPlaylist.get(savedPlaylist.size() - 1); + return ("Radio is playing station: 0" + savedPlaylist.size() + " " + this.playedStation + " from saved playlist"); + } else if (itemNr < 1) { + playedStation = savedPlaylist.get(0); + return ("Radio is playing station: 01 " + this.playedStation + " from saved playlist"); + } else { + playedStation = savedPlaylist.get(itemNr - 1); + return ("Radio is playing station: 0" + (savedPlaylist.indexOf(playedStation) + 1) + " " + this.playedStation + " from saved playlist"); + } + } } @Override public String[] getItemList() { - return null; + if (regionPlaylist.contains(playedStation)) + return regionPlaylist.toArray(new String[0]); + else + return savedPlaylist.toArray(new String[0]); } @Override public String mute() { - return null; + savedVolume = getVolume(); + setLautstaerke(0); + return "RadioPlayer is muted now"; } @Override public String unmute() { - return null; + setLautstaerke(savedVolume); + return ("RadioPlayer is unmuted Volume is set to " + getVolume()); } @@ -218,7 +247,7 @@ public class RadioPlayer implements Device { } public String changeToSavedPlaylist() { - if(regionPlaylist.contains(playedStation)) { + if (regionPlaylist.contains(playedStation)) { playedStation = savedPlaylist.get(0); regionPlaylist.clear(); return "Playlist switched now playing station: 0" + (savedPlaylist.indexOf(playedStation) + 1) + " " + this.playedStation + " from saved playlist"; @@ -228,16 +257,15 @@ public class RadioPlayer implements Device { public String changeOrderInSavedPlaylist(int nr) { String station = playedStation; - if((nr-1) > savedPlaylist.size()) { + if ((nr - 1) > savedPlaylist.size()) { savedPlaylist.remove(playedStation); - savedPlaylist.add(savedPlaylist.size(),station); - return"Station " + playedStation + " is now on place 0" + (savedPlaylist.size()+1) + "in saved playlist"; - }else if(nr < 0) { + savedPlaylist.add(savedPlaylist.size(), station); + return "Station " + playedStation + " is now on place 0" + (savedPlaylist.size() + 1) + "in saved playlist"; + } else if (nr < 0) { savedPlaylist.remove(playedStation); - savedPlaylist.add(0,station); - return"Station " + playedStation + " is now on place 01 in saved playlist"; - } - else { + savedPlaylist.add(0, station); + return "Station " + playedStation + " is now on place 01 in saved playlist"; + } else { savedPlaylist.remove(playedStation); savedPlaylist.add(nr - 1, station); return "Station " + playedStation + " is now on place 0" + nr + "in saved playlist"; diff --git a/src/test/java/device/radioPlayer/RadioPlayerTest.java b/src/test/java/device/radioPlayer/RadioPlayerTest.java index 109e1d1..ac5eefc 100644 --- a/src/test/java/device/radioPlayer/RadioPlayerTest.java +++ b/src/test/java/device/radioPlayer/RadioPlayerTest.java @@ -171,11 +171,42 @@ class RadioPlayerTest { @Test void getOptions() { } - - @Test - void chooseOption() { - } */ + + @ParameterizedTest + @MethodSource("chooseItemOptions") + void testChooseItem(String testName, RadioPlayer testRp, String expectedResult) { + String playedStation = testRp.playedStation; + assertThat(playedStation).describedAs(testName).isEqualTo(expectedResult); + } + + static Stream chooseItemOptions() { + RadioPlayer rp = new RadioPlayer(); + rp.chooseItem(2); + RadioPlayer rp1 = new RadioPlayer(); + rp1.chooseItem(5); + RadioPlayer rp2 = new RadioPlayer(); + rp2.chooseItem(-1); + RadioPlayer rp3 = new RadioPlayer(); + rp3.changeRegion("BY"); + rp3.chooseItem(2); + RadioPlayer rp4 = new RadioPlayer(); + rp4.changeRegion("BY"); + rp4.chooseItem(5); + RadioPlayer rp5 = new RadioPlayer(); + rp5.changeRegion("BY"); + rp5.chooseItem(-2); + + return Stream.of( + Arguments.of("Test select station in saved playlist to play with nr isn`t bigger than playlist size", rp, "Teddy"), + Arguments.of("Test select station in saved playlist to play with nr is bigger than playlist size. Last station in playlist gets played", rp1, "MegaHits"), + Arguments.of("Test select station in saved playlist to play with nr is lower than 0. First station in playlist gets played", rp2, "YouFM"), + Arguments.of("Test select station in regional playlist to play with nr isn`t bigger than playlist size", rp3, "Bayern 1"), + Arguments.of("Test select station in regional playlist to play with nr is bigger than playlist size. Last station in playlist gets played", rp4, "Hit Radio N1"), + Arguments.of("Test select station in regional playlist to play with nr is lower than 0. Last station in playlist gets played", rp5, "Antenne Bayern") + ); + } + @ParameterizedTest @MethodSource("testPlayOptions") void testPlay(String testName, RadioPlayer testRp, String expectedResult) { @@ -289,4 +320,57 @@ class RadioPlayerTest { Arguments.of("Test for change order in saved playlist with nr is than smaller than 0 at front of playlist", rp2, 0, "Teddy") ); } + + @ParameterizedTest + @MethodSource("getItemListOptions") + void testGetItemList(String testName, RadioPlayer testRp, String testTyp, String[] expectedResult) { + if (testTyp.equals("region")) { + testRp.changeRegion("BY"); + } + + String[] playList = testRp.getItemList(); + assertThat(playList).describedAs(testName).isEqualTo(expectedResult); + } + + static Stream getItemListOptions() { + RadioPlayer rp = new RadioPlayer(); + RadioPlayer rp1 = new RadioPlayer(); + rp1.changeRegion("BY"); + + return Stream.of( + Arguments.of("Test for return saved playlist", rp, "saved", rp.savedPlaylist.toArray(new String[0])), + Arguments.of("Test for return regional playlist", rp1, "region", rp1.regionPlaylist.toArray(new String[0])) + ); + } + + @ParameterizedTest + @MethodSource("muteOptions") + void testMute(String testName, String testTyp, RadioPlayer testRp, int expectedResult) { + int volume; + if (testTyp.equals("actual")) volume = testRp.getVolume(); + else volume = testRp.savedVolume; + assertThat(volume).describedAs(testName).isEqualTo(expectedResult); + } + + static Stream muteOptions() { + RadioPlayer rp = new RadioPlayer(); + rp.setLautstaerke(25); + rp.mute(); + RadioPlayer rp1 = new RadioPlayer(); + rp1.setLautstaerke(30); + rp1.mute(); + + return Stream.of( + Arguments.of("Test for mute RadioPlayer if volume is actually 0", "actual", rp, 0), + Arguments.of("Test for mute RadioPlayer if volume is saved before muting", "saved", rp1, 30) + ); + } + @Test + void TestUnmute() { + RadioPlayer rp = new RadioPlayer(); + rp.setLautstaerke(40); + rp.mute(); + rp.unmute(); + assertThat(rp.getVolume()).describedAs("Test if unmute is setting the saved volume").isEqualTo(rp.savedVolume); + } } \ No newline at end of file