SafeMathMock.sol 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. // SPDX-License-Identifier: MIT
  2. pragma solidity ^0.8.0;
  3. import "../math/SafeMath.sol";
  4. contract SafeMathMock {
  5. function tryAdd(uint256 a, uint256 b) public pure returns (bool flag, uint256 value) {
  6. return SafeMath.tryAdd(a, b);
  7. }
  8. function trySub(uint256 a, uint256 b) public pure returns (bool flag, uint256 value) {
  9. return SafeMath.trySub(a, b);
  10. }
  11. function tryMul(uint256 a, uint256 b) public pure returns (bool flag, uint256 value) {
  12. return SafeMath.tryMul(a, b);
  13. }
  14. function tryDiv(uint256 a, uint256 b) public pure returns (bool flag, uint256 value) {
  15. return SafeMath.tryDiv(a, b);
  16. }
  17. function tryMod(uint256 a, uint256 b) public pure returns (bool flag, uint256 value) {
  18. return SafeMath.tryMod(a, b);
  19. }
  20. function add(uint256 a, uint256 b) public pure returns (uint256) {
  21. return SafeMath.add(a, b);
  22. }
  23. function sub(uint256 a, uint256 b) public pure returns (uint256) {
  24. return SafeMath.sub(a, b);
  25. }
  26. function mul(uint256 a, uint256 b) public pure returns (uint256) {
  27. return SafeMath.mul(a, b);
  28. }
  29. function div(uint256 a, uint256 b) public pure returns (uint256) {
  30. return SafeMath.div(a, b);
  31. }
  32. function mod(uint256 a, uint256 b) public pure returns (uint256) {
  33. return SafeMath.mod(a, b);
  34. }
  35. function subWithMessage(uint256 a, uint256 b, string memory errorMessage) public pure returns (uint256) {
  36. return SafeMath.sub(a, b, errorMessage);
  37. }
  38. function divWithMessage(uint256 a, uint256 b, string memory errorMessage) public pure returns (uint256) {
  39. return SafeMath.div(a, b, errorMessage);
  40. }
  41. function modWithMessage(uint256 a, uint256 b, string memory errorMessage) public pure returns (uint256) {
  42. return SafeMath.mod(a, b, errorMessage);
  43. }
  44. function addMemoryCheck() public pure returns (uint256 mem) {
  45. uint256 length = 32;
  46. // solhint-disable-next-line no-inline-assembly
  47. assembly { mem := mload(0x40) }
  48. for (uint256 i = 0; i < length; ++i) { SafeMath.add(1, 1); }
  49. // solhint-disable-next-line no-inline-assembly
  50. assembly { mem := sub(mload(0x40), mem) }
  51. }
  52. function subMemoryCheck() public pure returns (uint256 mem) {
  53. uint256 length = 32;
  54. // solhint-disable-next-line no-inline-assembly
  55. assembly { mem := mload(0x40) }
  56. for (uint256 i = 0; i < length; ++i) { SafeMath.sub(1, 1); }
  57. // solhint-disable-next-line no-inline-assembly
  58. assembly { mem := sub(mload(0x40), mem) }
  59. }
  60. function mulMemoryCheck() public pure returns (uint256 mem) {
  61. uint256 length = 32;
  62. // solhint-disable-next-line no-inline-assembly
  63. assembly { mem := mload(0x40) }
  64. for (uint256 i = 0; i < length; ++i) { SafeMath.mul(1, 1); }
  65. // solhint-disable-next-line no-inline-assembly
  66. assembly { mem := sub(mload(0x40), mem) }
  67. }
  68. function divMemoryCheck() public pure returns (uint256 mem) {
  69. uint256 length = 32;
  70. // solhint-disable-next-line no-inline-assembly
  71. assembly { mem := mload(0x40) }
  72. for (uint256 i = 0; i < length; ++i) { SafeMath.div(1, 1); }
  73. // solhint-disable-next-line no-inline-assembly
  74. assembly { mem := sub(mload(0x40), mem) }
  75. }
  76. function modMemoryCheck() public pure returns (uint256 mem) {
  77. uint256 length = 32;
  78. // solhint-disable-next-line no-inline-assembly
  79. assembly { mem := mload(0x40) }
  80. for (uint256 i = 0; i < length; ++i) { SafeMath.mod(1, 1); }
  81. // solhint-disable-next-line no-inline-assembly
  82. assembly { mem := sub(mload(0x40), mem) }
  83. }
  84. }