diff --git a/src/main/java/io/zipcoder/Music.java b/src/main/java/io/zipcoder/Music.java index 180c65c..ffbbbef 100644 --- a/src/main/java/io/zipcoder/Music.java +++ b/src/main/java/io/zipcoder/Music.java @@ -8,7 +8,24 @@ public Music(String[] playList){ this.playList = playList; } - public Integer selection(Integer startIndex, String selection){ - return null; + public Integer selection(Integer startIndex, String selection) { + int distance = 0; + int selectionIndex = 0; + + for (int i = startIndex; i < playList.length+1; i++) { + distance++; + if (i >= playList.length) { + i = 0; + } + if (playList[i].equals(selection)) { + selectionIndex = i; + } + if (distance >= playList.length) break; + } + + int dist1 = Math.abs(selectionIndex - startIndex); + int dist2 = startIndex + playList.length - selectionIndex; + distance = Math.min(dist1, dist2); + return distance; } } diff --git a/src/test/java/io/zipcoder/MusicTest.java b/src/test/java/io/zipcoder/MusicTest.java index 03ede61..67234c4 100644 --- a/src/test/java/io/zipcoder/MusicTest.java +++ b/src/test/java/io/zipcoder/MusicTest.java @@ -28,4 +28,28 @@ public void selectionTest2(){ Integer actual = music.selection(startingIndex, selection); Assert.assertEquals(expected, actual); } + + @Test + public void selectionTest3(){ + + String[] playlist = {"dancinginthedark","rio","liveoak","liveoak"}; + Music music = new Music(playlist); + Integer startingIndex = 0; + String selection = "rio"; + Integer expected = 1; + Integer actual = music.selection(startingIndex, selection); + Assert.assertEquals(expected, actual); + } + + @Test + public void selectionTest4(){ + + String[] playlist = {"wheniseeyouagain","borntorun","nothingelsematters","cecelia"}; + Music music = new Music(playlist); + Integer startingIndex = 1; + String selection = "nothingelsematters"; + Integer expected = 1; + Integer actual = music.selection(startingIndex, selection); + Assert.assertEquals(expected, actual); + } }