SafeMath.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. const assertJump = require('./helpers/assertJump');
  2. contract('SafeMath', function(accounts) {
  3. let safeMath;
  4. before(async function() {
  5. safeMath = await SafeMathMock.new();
  6. });
  7. it("multiplies correctly", async function() {
  8. let a = 5678;
  9. let b = 1234;
  10. let mult = await safeMath.multiply(a, b);
  11. let result = await safeMath.result();
  12. assert.equal(result, a*b);
  13. });
  14. it("adds correctly", async function() {
  15. let a = 5678;
  16. let b = 1234;
  17. let add = await safeMath.add(a, b);
  18. let result = await safeMath.result();
  19. assert.equal(result, a+b);
  20. });
  21. it("subtracts correctly", async function() {
  22. let a = 5678;
  23. let b = 1234;
  24. let subtract = await safeMath.subtract(a, b);
  25. let result = await safeMath.result();
  26. assert.equal(result, a-b);
  27. });
  28. it("should throw an error if subtraction result would be negative", async function () {
  29. let a = 1234;
  30. let b = 5678;
  31. try {
  32. let subtract = await safeMath.subtract(a, b);
  33. } catch(error) {
  34. return assertJump(error);
  35. }
  36. assert.fail('should have thrown before');
  37. });
  38. it("should throw an error on addition overflow", async function() {
  39. let a = 115792089237316195423570985008687907853269984665640564039457584007913129639935;
  40. let b = 1;
  41. try {
  42. let add = await safeMath.add(a, b);
  43. } catch(error) {
  44. return assertJump(error);
  45. }
  46. assert.fail('should have thrown before');
  47. });
  48. it("should throw an error on multiplication overflow", async function() {
  49. let a = 115792089237316195423570985008687907853269984665640564039457584007913129639933;
  50. let b = 2;
  51. try {
  52. let multiply = await safeMath.multiply(a, b);
  53. } catch(error) {
  54. return assertJump(error);
  55. }
  56. assert.fail('should have thrown before');
  57. });
  58. });