SafeMath.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. assertJump(error);
  35. }
  36. });
  37. it("should throw an error on addition overflow", async function() {
  38. let a = 115792089237316195423570985008687907853269984665640564039457584007913129639935;
  39. let b = 1;
  40. try {
  41. let add = await safeMath.add(a, b);
  42. } catch(error) {
  43. assertJump(error);
  44. }
  45. });
  46. it("should throw an error on multiplication overflow", async function() {
  47. let a = 115792089237316195423570985008687907853269984665640564039457584007913129639933;
  48. let b = 2;
  49. try {
  50. let multiply = await safeMath.multiply(a, b);
  51. } catch(error) {
  52. assertJump(error);
  53. }
  54. });
  55. });