SafeMathMockUpgradeable.sol 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. // SPDX-License-Identifier: MIT
  2. pragma solidity ^0.8.0;
  3. import "../utils/math/SafeMathUpgradeable.sol";
  4. import "../proxy/utils/Initializable.sol";
  5. contract SafeMathMockUpgradeable is Initializable {
  6. function __SafeMathMock_init() internal onlyInitializing {
  7. __SafeMathMock_init_unchained();
  8. }
  9. function __SafeMathMock_init_unchained() internal onlyInitializing {
  10. }
  11. function tryAdd(uint256 a, uint256 b) public pure returns (bool flag, uint256 value) {
  12. return SafeMathUpgradeable.tryAdd(a, b);
  13. }
  14. function trySub(uint256 a, uint256 b) public pure returns (bool flag, uint256 value) {
  15. return SafeMathUpgradeable.trySub(a, b);
  16. }
  17. function tryMul(uint256 a, uint256 b) public pure returns (bool flag, uint256 value) {
  18. return SafeMathUpgradeable.tryMul(a, b);
  19. }
  20. function tryDiv(uint256 a, uint256 b) public pure returns (bool flag, uint256 value) {
  21. return SafeMathUpgradeable.tryDiv(a, b);
  22. }
  23. function tryMod(uint256 a, uint256 b) public pure returns (bool flag, uint256 value) {
  24. return SafeMathUpgradeable.tryMod(a, b);
  25. }
  26. // using the do* naming convention to avoid warnings due to clashing opcode names
  27. function doAdd(uint256 a, uint256 b) public pure returns (uint256) {
  28. return SafeMathUpgradeable.add(a, b);
  29. }
  30. function doSub(uint256 a, uint256 b) public pure returns (uint256) {
  31. return SafeMathUpgradeable.sub(a, b);
  32. }
  33. function doMul(uint256 a, uint256 b) public pure returns (uint256) {
  34. return SafeMathUpgradeable.mul(a, b);
  35. }
  36. function doDiv(uint256 a, uint256 b) public pure returns (uint256) {
  37. return SafeMathUpgradeable.div(a, b);
  38. }
  39. function doMod(uint256 a, uint256 b) public pure returns (uint256) {
  40. return SafeMathUpgradeable.mod(a, b);
  41. }
  42. function subWithMessage(
  43. uint256 a,
  44. uint256 b,
  45. string memory errorMessage
  46. ) public pure returns (uint256) {
  47. return SafeMathUpgradeable.sub(a, b, errorMessage);
  48. }
  49. function divWithMessage(
  50. uint256 a,
  51. uint256 b,
  52. string memory errorMessage
  53. ) public pure returns (uint256) {
  54. return SafeMathUpgradeable.div(a, b, errorMessage);
  55. }
  56. function modWithMessage(
  57. uint256 a,
  58. uint256 b,
  59. string memory errorMessage
  60. ) public pure returns (uint256) {
  61. return SafeMathUpgradeable.mod(a, b, errorMessage);
  62. }
  63. function addMemoryCheck() public pure returns (uint256 mem) {
  64. uint256 length = 32;
  65. assembly {
  66. mem := mload(0x40)
  67. }
  68. for (uint256 i = 0; i < length; ++i) {
  69. SafeMathUpgradeable.add(1, 1);
  70. }
  71. assembly {
  72. mem := sub(mload(0x40), mem)
  73. }
  74. }
  75. function subMemoryCheck() public pure returns (uint256 mem) {
  76. uint256 length = 32;
  77. assembly {
  78. mem := mload(0x40)
  79. }
  80. for (uint256 i = 0; i < length; ++i) {
  81. SafeMathUpgradeable.sub(1, 1);
  82. }
  83. assembly {
  84. mem := sub(mload(0x40), mem)
  85. }
  86. }
  87. function mulMemoryCheck() public pure returns (uint256 mem) {
  88. uint256 length = 32;
  89. assembly {
  90. mem := mload(0x40)
  91. }
  92. for (uint256 i = 0; i < length; ++i) {
  93. SafeMathUpgradeable.mul(1, 1);
  94. }
  95. assembly {
  96. mem := sub(mload(0x40), mem)
  97. }
  98. }
  99. function divMemoryCheck() public pure returns (uint256 mem) {
  100. uint256 length = 32;
  101. assembly {
  102. mem := mload(0x40)
  103. }
  104. for (uint256 i = 0; i < length; ++i) {
  105. SafeMathUpgradeable.div(1, 1);
  106. }
  107. assembly {
  108. mem := sub(mload(0x40), mem)
  109. }
  110. }
  111. function modMemoryCheck() public pure returns (uint256 mem) {
  112. uint256 length = 32;
  113. assembly {
  114. mem := mload(0x40)
  115. }
  116. for (uint256 i = 0; i < length; ++i) {
  117. SafeMathUpgradeable.mod(1, 1);
  118. }
  119. assembly {
  120. mem := sub(mload(0x40), mem)
  121. }
  122. }
  123. uint256[50] private __gap;
  124. }