Skip to content

Instantly share code, notes, and snippets.

@ez-li
Created August 15, 2019 16:58
Show Gist options
  • Save ez-li/634c5433ca111fe4da70985ea996fb29 to your computer and use it in GitHub Desktop.
Save ez-li/634c5433ca111fe4da70985ea996fb29 to your computer and use it in GitHub Desktop.
function CashAmount(dollars) {
this.total = dollars;
this.pennies = dollars * 100;
}
CashAmount.prototype.totalInPennies = function() {
return this.pennies;
}
CashAmount.prototype.addDoubleAmount = function(dollars) {
this.pennies += dollars * 100;
}
CashAmount.prototype.quantityOfEachDenomination = function() {
var dollars = this.pennies/100;
var pennies = this.pennies - dollars;
var denomination = {};
denomination['hundreds'] = Math.floor(dollars/ 100);
dollars -= denomination['hundreds'];
denomination['fifties'] = Math.floor(dollars / 50);
dollars -= denomination['fifties'];
denomination['tens'] = Math.floor(dollars/ 10);
dollars -= denomination['tens'];
denomination['fives'] = Math.floor(dollars/ 5);
dollars -= denomination['fives'];
denomination['ones'] = Math.floor(dollars);
dollars -= denomination['ones'];
denomination['quarters'] = Math.floor(pennies/ 25);
pennies -= denomination['quarters'];
denomination['dimes'] = Math.floor(pennies/ 10);
pennies -= denomination['dimes'];
denomination['nickels'] = Math.floor(pennies/ 5);
pennies -= denomination['nickels'];
denomination['pennies'] = pennies;
return denomination;
}
CashAmount.prototype.toDouble = function() {
var q = this.quantityOfEachDenomination();
var dollars = q['hundreds']*100 + q['fifties']*50 + q['tens']*10 + q['fives']*5 + q['ones'];
var pennies = q['quarters']*25 + q['dimes']*10 + q['nickels']*5 + q['pennies'];
this.total = dollars + pennies/100;
return this.total;
}
CashAmount.prototype.toDoubleString = function() {
return this.total.toString();
}
// Testing
class TestSuite {
runTests() {
var cash = new CashAmount(123.45);
expect(cash).to.equal()
}
testTotalInPennies() {
var pennies = cash.totalInPennies();
expect(pennies).to.equal(12345);
}
testQuantityDenomination() {
}
testDouble() {
cash.toDouble(98.76);
var amount = cash.toDouble();
expect(amount).to.equal(222.21)
}
}
const suite = new TestSuite();
suite.runTests();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment