Guest User

Untitled

a guest
Dec 13th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.76 KB | None | 0 0
  1. var CashAmount = function(num) {
  2. this.value = num;
  3. this.valueInPennies = num * 100;
  4. }
  5.  
  6. CashAmount.prototype.totalInPennies = function() {
  7. return this.valueInPennies;
  8. }
  9. CashAmount.prototype.addDoubleAmount = function(inputDouble) {
  10. inputDouble = inputDouble * 100;
  11. return this.valueInPennies + inputDouble;
  12. }
  13.  
  14. CashAmount.prototype.quantityOfEachDenomination = function() {
  15. let denominations = {
  16. 'hundreds': 0,
  17. 'fifties': 0,
  18. 'twenties': 0,
  19. 'tens': 0,
  20. 'fives': 0,
  21. 'ones': 0,
  22. 'quarters': 0,
  23. 'dimes': 0,
  24. 'nickels': 0,
  25. 'pennies': 0
  26. }
  27. denominations.hundreds = this.value > 100 ? Math.floor(this.value/100) : 0
  28. var remainder = Math.floor(this.value%100);
  29.  
  30. denominations.fifties = remainder > 50 ? Math.floor(remainder/50) : 0
  31. remainder = Math.floor(remainder%50);
  32.  
  33. denominations.twenties = remainder > 20 ? Math.floor(remainder/20) : 0
  34. remainder = Math.floor(remainder%20);
  35.  
  36. denominations.tens = remainder > 10 ? Math.floor(remainder/10) : 0
  37. remainder = Math.floor(remainder%10);
  38.  
  39. denominations.fives = remainder > 5 ? Math.floor(remainder/5) : 0
  40. remainder = Math.floor(remainder%5);
  41.  
  42. denominations.ones = remainder > 1 ? Math.floor(remainder/1) : 0
  43. remainder = remainder%1
  44.  
  45. remainder = remainder * 100;
  46.  
  47. denominations.quarters = remainder > 25 ? Math.floor(remainder/25) : 0
  48. remainder = remainder % 25
  49.  
  50. denominations.dimes = remainder > 10 ? Math.floor(remainder/10) : 0
  51. remainder = remainder % 10
  52.  
  53. denominations.nickels = remainder > 5 ? Math.floor(remainder/5) : 0
  54. remainder = remainder % 5
  55.  
  56. denominations.pennies = remainder > 1 ? remainder : 0
  57.  
  58. return denominations;
  59. }
  60.  
  61. CashAmount.prototype.toDouble = function() {
  62. return this.value
  63. }
  64.  
  65. CashAmount.prototype.toDoubleString = function() {
  66. return '' + this.value
  67. }
  68.  
  69. //TESTING
  70.  
  71. function assertEqual(actual, expected, testName) {
  72. actual = JSON.stringify(actual);
  73. expected = JSON.stringify(expected);
  74.  
  75. if (actual === expected) {
  76. console.log("Passed");
  77. } else {
  78. console.log("FAILED [" + testName + "] expected: " + expected + "; but got: " + actual);
  79. }
  80. }
  81.  
  82.  
  83. var sample = new CashAmount(235.13)
  84. var denominationsSample = {
  85. 'hundreds': 2,
  86. 'fifties': 0,
  87. 'twenties': 1,
  88. 'tens': 1,
  89. 'fives': 1,
  90. 'ones': 0,
  91. 'quarters': 0,
  92. 'dimes': 1,
  93. 'nickels': 0,
  94. 'pennies': 3
  95. }
  96. assertEqual(sample.totalInPennies(), 2351300, 'totalInPennies Test');
  97. assertEqual(sample.addDoubleAmount(10.15), 245.28, 'addDoubleAmount Test');
  98. assertEqual(sample.quantityOfEachDenomination(), denominationsSample, 'quantityOfEachDenomination Test');
  99. assertEqual(sample.toDouble(),235.13, 'toDouble Test');
  100. assertEqual(sample.toDoubleString(), '235.13', 'toDoubleString Test');
Add Comment
Please, Sign In to add comment