diff --git a/src/main/java/device/cdPlayer/CDPlayer.java b/src/main/java/device/cdPlayer/CDPlayer.java index ea05053..8d4a53b 100644 --- a/src/main/java/device/cdPlayer/CDPlayer.java +++ b/src/main/java/device/cdPlayer/CDPlayer.java @@ -152,13 +152,17 @@ public class CDPlayer implements Device { throw new MaxCapacityExceededException(); } cdWechseler.loadOneCD(cd,index); - this.loadedCD=cdWechseler.getCDList()[0]; + this.loadedCD=cdWechseler.getCDList().get(0); } public void changeToNextCD(){ if(activeSource.equals("CDDrive")){ throw new ChangeCDOnlyOnCDWechselerException(); } - this.loadedCD=cdWechseler.getCDList()[1]; + + List CDList = cdWechseler.getCDList(); + int indexOfLoadedCD=CDList.indexOf(loadedCD); + int nextIndex=(indexOfLoadedCD+1)%CDList.size(); + this.loadedCD=CDList.get(nextIndex); } //Getters, Setters und SupportMethods diff --git a/src/main/java/device/cdPlayer/CDWechseler.java b/src/main/java/device/cdPlayer/CDWechseler.java index 0ae54e5..fca17d6 100644 --- a/src/main/java/device/cdPlayer/CDWechseler.java +++ b/src/main/java/device/cdPlayer/CDWechseler.java @@ -4,7 +4,7 @@ import java.util.ArrayList; import java.util.List; public class CDWechseler { - private CD[]CDList=new CD[10]; + private List CDList=new ArrayList<>(); private boolean running=false; @@ -16,11 +16,11 @@ public class CDWechseler { this.running = true; } - public CD[] getCDList() { + public List getCDList() { return CDList; } - public void loadOneCD(CD cd,int index){ - CDList[index]=cd; + public void loadOneCD(CD cd, int index){ + CDList.add(cd); } } diff --git a/src/test/java/device/cdPlayer/CDPlayerTest.java b/src/test/java/device/cdPlayer/CDPlayerTest.java index 8bb6f90..a3e3ebf 100644 --- a/src/test/java/device/cdPlayer/CDPlayerTest.java +++ b/src/test/java/device/cdPlayer/CDPlayerTest.java @@ -404,7 +404,7 @@ class CDPlayerTest { if(cases.equals("Case3")) { _cdPlayer.changePlaySource(); _cdPlayer.loadCDWechseler(cd,0); - CD firstCD=_cdPlayer.getCdWechseler().getCDList()[0]; + CD firstCD=_cdPlayer.getCdWechseler().getCDList().get(0); assertThat(firstCD).describedAs(testName).isNotEqualTo(null); } if(cases.equals("Case4")) { @@ -443,21 +443,24 @@ class CDPlayerTest { } if(cases.equals("Case3")) { CD actualCD=_cdPlayer.getCD(); - System.out.println("loadedCD_id:"+actualCD.getId()); _cdPlayer.changeToNextCD(); CD nextCD=_cdPlayer.getCD(); - System.out.println("nextCD_id:"+nextCD.getId()); - /*System.out.println("loadedCD_id:"+_cdPlayer.getCD().getId()); - System.out.println("actualCD_id:"+_cdPlayer.getCdWechseler().getCDList()[0].getId()); - System.out.println("nextCD_id:"+_cdPlayer.getCdWechseler().getCDList()[1].getId());*/ - //System.out.println("nextCD_id:"+nextCD.getId()); assertThat(nextCD.getId()==actualCD.getId()).describedAs(testName).isNotEqualTo(true); } + if(cases.equals("Case4")) { + CD actualCdBefore=_cdPlayer.getCD(); + for (int i = 0; i <3 ; i++) { + _cdPlayer.changeToNextCD(); + } + CD actualCdAfter=_cdPlayer.getCD(); + assertThat(actualCdBefore.getId()==actualCdAfter.getId()).describedAs(testName).isEqualTo(true); + } } static Stream changeToNextCDData () { String[] audioPlayList=new String[]{"Audio 01","Audio 02","Audio 03","Audio 04","Audio 05"}; CD audioCD1=new CD("Audio","PopMusic",audioPlayList,"XAc20044"); CD audioCD2=new CD("Audio","RockMusic",audioPlayList,"BLXPP78"); + CD audioCD3=new CD("Audio","SalsaMusic",audioPlayList,"KKRP118"); CDPlayer cdPlayer1 = new CDPlayer(); @@ -465,16 +468,26 @@ class CDPlayerTest { cdPlayer2.changePlaySource(); cdPlayer2.loadCDWechseler(audioCD1,0); cdPlayer2.loadCDWechseler(audioCD2,1); + cdPlayer2.loadCDWechseler(audioCD3,2); + CDPlayer cdPlayer3 = new CDPlayer(); cdPlayer3.changePlaySource(); cdPlayer3.loadCDWechseler(audioCD1,0); cdPlayer3.loadCDWechseler(audioCD2,1); + cdPlayer3.loadCDWechseler(audioCD3,2); + + CDPlayer cdPlayer4 = new CDPlayer(); + cdPlayer4.changePlaySource(); + cdPlayer4.loadCDWechseler(audioCD1,0); + cdPlayer4.loadCDWechseler(audioCD2,1); + cdPlayer4.loadCDWechseler(audioCD3,2); return Stream.of( Arguments.of("[changeToNextCD() by CDWechselerNotSelected ] => shouldThrowAnException", "Case1", cdPlayer1,new ChangeCDOnlyOnCDWechselerException()), Arguments.of("[changeToNextCD() checking the effect ] => loadedCDShouldNotReturnNull", "Case2", cdPlayer2,null), - Arguments.of("[changeToNextCD() checking the effect 2 ] => loadedCDShouldNotHaveTheSameIdAsPrev", "Case3", cdPlayer3,null) + Arguments.of("[changeToNextCD() checking the effect 2 ] => loadedCDShouldNotHaveTheSameIdAsPrev", "Case3", cdPlayer3,null), + Arguments.of("[3x changeToNextCD() changing from last to first CD] => FirstCDShouldBeTaken", "Case4", cdPlayer4,null) ); }