### Question:
Scores implements PlayerScores { @Override public Object getScore() { return score; } Scores(int startScore, SettingsWrapper settings); @Override int clear(); @Override void update(Object score); @Override Object getScore(); @Override void event(Object input);  }### Answer:
@Test public void shouldCollectScores() { scores = new Scores(140, wrapper); win(); win(); win(); win(); loose(); Assert.assertEquals(140 + 4 * winScore - loosePenalty, scores.getScore()); }
@Test public void shouldCollectScores_ignoreOnMultiple() { scores = new Scores(140, wrapper); winMultiple(); winMultiple(); winMultiple(); winMultiple(); Assert.assertEquals(140, scores.getScore()); }
@Test public void shouldWithWithGold() { scores = new Scores(0, wrapper); win(0); win(1); win(2); Assert.assertEquals(3 * winScore + 3 * goldScore, scores.getScore()); }
@Test public void shouldStillZeroAfterDead() { loose(); Assert.assertEquals(0, scores.getScore()); }