Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions ScoreboardQuestions.md
Original file line number Diff line number Diff line change
@@ -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.
31 changes: 29 additions & 2 deletions src/Scoreboard.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,44 @@ public class Scoreboard {
private int maxCount;

public Scoreboard(int maxScoreCount) {
scores = new ArrayList<>(maxScoreCount);
scores = new ArrayList<Integer>(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) {
Expand Down
54 changes: 54 additions & 0 deletions src/ScoreboardTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -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());
}
}