diff --git a/ScoreboardQuestions.md b/ScoreboardQuestions.md new file mode 100644 index 0000000..7a6862a --- /dev/null +++ b/ScoreboardQuestions.md @@ -0,0 +1,8 @@ +#Scoreboard Lab +**Question 1** +When testing the accuracy of a non-full scoreboard with more than two entries, you will +need a test with no values, one score added and two scores added. + +**Question 2** +When testing the accuracy of a full Scoreboard you need one test with three or more scores +with a non full array and other test with a full array. diff --git a/src/Scoreboard.java b/src/Scoreboard.java index f0b8d0a..eb019f2 100644 --- a/src/Scoreboard.java +++ b/src/Scoreboard.java @@ -5,17 +5,44 @@ public class Scoreboard { private int maxCount; public Scoreboard(int maxScoreCount) { - scores = new ArrayList<>(maxScoreCount); + scores = new ArrayList(maxScoreCount); maxCount = maxScoreCount; } public void addScore(int score) { + if (!isHighScore(score)) { + return; + } + + if (scores.size() < maxCount) { + scores.add(score); + } + else { + scores.set(scores.size() - 1, score); + } scores.add(score); + for(int i = scores.size() -1; i > 0; i--) { + + if ( scores.get(i) > scores.get(i - 1)) { + int temp = scores.get(i-1); + scores.set(i-1, scores.get(i)); + scores.set(i, temp); + } + } } + public boolean isHighScore(int score) { + if (scores.size() < maxCount) { + return true; + } - return true; + else if (score > scores.get(scores.size()-1)) { + return true; + } + else { + return false; + } } public int getScore(int position) { diff --git a/src/ScoreboardTest.java b/src/ScoreboardTest.java index 697a6b4..9f31144 100644 --- a/src/ScoreboardTest.java +++ b/src/ScoreboardTest.java @@ -18,4 +18,58 @@ public void testOneEntry() { assertEquals(50, sb.getScore(0)); assertEquals(1, sb.getNumScores()); } + + public void testSecondScoreBeforeFirst() { + Scoreboard sb = new Scoreboard(10); + + sb.addScore(50); + sb.addScore(51); + + assertTrue(sb.isHighScore(10)); + assertEquals(50, sb.getScore(1)); + assertEquals(51, sb.getScore(0)); + assertEquals(2, sb.getNumScores()); + } + + + public void testSecondScoreAfterFirst() { + Scoreboard sb = new Scoreboard(10); + + sb.addScore(50); + sb.addScore(49); + + assertTrue(sb.isHighScore(10)); + assertEquals(50, sb.getScore(0)); + assertEquals(49, sb.getScore(1)); + assertEquals(2, sb.getNumScores()); + } + + public void testMulipleScoresNonFull() { + Scoreboard sb = new Scoreboard(10); + + sb.addScore(50); + sb.addScore(51); + sb.addScore(52); + + assertTrue(sb.isHighScore(10)); + assertEquals(50, sb.getScore(2)); + assertEquals(51, sb.getScore(1)); + assertEquals(52, sb.getScore(0)); + assertEquals(3, sb.getNumScores()); + } + + public void testMulipleScoresFull() { + Scoreboard sb = new Scoreboard(10); + + sb.addScore(50); + sb.addScore(51); + sb.addScore(52); + sb.addScore(53); + + assertTrue(sb.isHighScore(10)); + assertEquals(53, sb.getScore(0)); + assertEquals(51, sb.getScore(2)); + assertEquals(52, sb.getScore(1)); + assertEquals(3, sb.getNumScores()); +} }