Skip to content

Commit

Permalink
final refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
veritywong committed May 29, 2023
1 parent 1159606 commit b5c0fd4
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 34 deletions.
37 changes: 13 additions & 24 deletions docs/scorecard.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ class Scorecard {

constructor() {
this.frames = []

}

calculateScore() {
Expand All @@ -15,38 +14,28 @@ class Scorecard {

sum += this.frameScore(currentFrame)

// Bonuses:
// when strike or spare on final frame
if (currentFrame === this.frames[10]) {
sum -= this.frameScore(currentFrame);
}
// when strike
else if (currentFrame.length < 2 && nextFrame.length === 2) {
sum += this.addStrikeBonus(nextFrame);

}
// when strikes in a row
else if (currentFrame.length < 2 && nextFrame.length < 2) {
sum += this.addStrikesInARowBonus(nextFrame, nextNextFrame);

}
// when spare
else if (this.frameScore(currentFrame) === 10 && currentFrame.length === 2 ) {
sum += nextFrame[0];
}
if (currentFrame === this.frames[10]) {
sum -= this.frameScore(currentFrame);
}
else if (currentFrame.length < 2 && nextFrame.length === 2) {
sum += this.addStrikeBonus(nextFrame);
}
else if (currentFrame.length < 2 && nextFrame.length < 2) {
sum += this.addStrikesInARowBonus(nextFrame, nextNextFrame);
}
else if (this.frameScore(currentFrame) === 10 && currentFrame.length === 2 ) {
sum += nextFrame[0];
}
}
return sum;


}

addFrame(roll1, roll2) {
if (roll1 < 10) {
this.frames.push([roll1, roll2]);

// adds bonus rolls as frame if frame 10 is a strike or spare
} else if (roll1 === 10 && this.frames.length === 10) {
this.frames.push([roll1, roll2]);
this.frames.push([roll1, roll2]);
} else if (roll1 === 10 ) {
this.frames.push([roll1]);
}
Expand Down
20 changes: 10 additions & 10 deletions tests/scorecard.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ const Scorecard = require('../docs/scorecard');

describe('Scorecard', () => {
it('adds the scores when no bonus points', () => {
let scorecard = new Scorecard()
let scorecard = new Scorecard();

expect(scorecard.calculateScore()).toEqual(0)
scorecard.addFrame(2, 5)
Expand All @@ -12,7 +12,7 @@ describe('Scorecard', () => {
})

it('adds bonus points when strike', () => {
let scorecard = new Scorecard()
let scorecard = new Scorecard();

scorecard.addFrame(10, 0)
scorecard.addFrame(2, 2)
Expand All @@ -21,7 +21,7 @@ describe('Scorecard', () => {
})

it('adds bonus points when two strikes in a row', () => {
let scorecard = new Scorecard()
let scorecard = new Scorecard();

scorecard.addFrame(10, 0)
scorecard.addFrame(10, 0)
Expand All @@ -31,16 +31,16 @@ describe('Scorecard', () => {
})

it('adds bonus points for spare', () => {
let scorecard = new Scorecard()
let scorecard = new Scorecard();

scorecard.addFrame(1, 9)
scorecard.addFrame(1, 3)
expect(scorecard.calculateScore()).toEqual(15)

})

it('adds up to 0 for gutter game', () => {
let scorecard = new Scorecard()
it('adds to 0 for gutter game', () => {
let scorecard = new Scorecard();

scorecard.addFrame(0, 0)
scorecard.addFrame(0, 0)
Expand All @@ -57,8 +57,8 @@ describe('Scorecard', () => {

})

it('adds up to 300 because perfect score', () => {
let scorecard = new Scorecard()
it('adds up to 300 for perfect score', () => {
let scorecard = new Scorecard();

scorecard.addFrame(10, 0)
scorecard.addFrame(10, 0)
Expand All @@ -77,7 +77,7 @@ describe('Scorecard', () => {
})

it('allows bonus points for spare on final frame', () => {
let scorecard = new Scorecard()
let scorecard = new Scorecard();

scorecard.addFrame(10, 0)
scorecard.addFrame(10, 0)
Expand All @@ -96,7 +96,7 @@ describe('Scorecard', () => {
})

it('allows bonus points for spare on final frame', () => {
let scorecard = new Scorecard()
let scorecard = new Scorecard();

scorecard.addFrame(1, 4)
scorecard.addFrame(4, 5)
Expand Down

0 comments on commit b5c0fd4

Please sign in to comment.