Skip to content

Commit

Permalink
Add #remainder to the fraction entity
Browse files Browse the repository at this point in the history
  • Loading branch information
moodysalem committed May 6, 2020
1 parent 22453c0 commit 3b4f4a2
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/entities/fractions/fraction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,11 @@ export class Fraction {
return JSBI.divide(this.numerator, this.denominator)
}

// remainder after floor division
get remainder(): Fraction {
return this.subtract(this.quotient)
}

invert(): Fraction {
return new Fraction(this.denominator, this.numerator)
}
Expand Down
13 changes: 13 additions & 0 deletions test/fraction.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,19 @@ describe.only('Fraction', () => {
expect(new Fraction(JSBI.BigInt(16), JSBI.BigInt(5)).quotient).toEqual(JSBI.BigInt(3)) // one above
})
})
describe('#remainder', () => {
it('returns fraction after divison', () => {
expect(new Fraction(JSBI.BigInt(8), JSBI.BigInt(3)).remainder).toEqual(
new Fraction(JSBI.BigInt(2), JSBI.BigInt(3))
)
expect(new Fraction(JSBI.BigInt(12), JSBI.BigInt(4)).remainder).toEqual(
new Fraction(JSBI.BigInt(0), JSBI.BigInt(4))
)
expect(new Fraction(JSBI.BigInt(16), JSBI.BigInt(5)).remainder).toEqual(
new Fraction(JSBI.BigInt(1), JSBI.BigInt(5))
)
})
})
describe('#invert', () => {
it('flips num and denom', () => {
expect(new Fraction(JSBI.BigInt(5), JSBI.BigInt(10)).invert().numerator).toEqual(JSBI.BigInt(10))
Expand Down

0 comments on commit 3b4f4a2

Please sign in to comment.