SafeMathMockUpgradeable.sol 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  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. }
  8. function __SafeMathMock_init_unchained() internal onlyInitializing {
  9. }
  10. function tryAdd(uint256 a, uint256 b) public pure returns (bool flag, uint256 value) {
  11. return SafeMathUpgradeable.tryAdd(a, b);
  12. }
  13. function trySub(uint256 a, uint256 b) public pure returns (bool flag, uint256 value) {
  14. return SafeMathUpgradeable.trySub(a, b);
  15. }
  16. function tryMul(uint256 a, uint256 b) public pure returns (bool flag, uint256 value) {
  17. return SafeMathUpgradeable.tryMul(a, b);
  18. }
  19. function tryDiv(uint256 a, uint256 b) public pure returns (bool flag, uint256 value) {
  20. return SafeMathUpgradeable.tryDiv(a, b);
  21. }
  22. function tryMod(uint256 a, uint256 b) public pure returns (bool flag, uint256 value) {
  23. return SafeMathUpgradeable.tryMod(a, b);
  24. }
  25. // using the do* naming convention to avoid warnings due to clashing opcode names
  26. function doAdd(uint256 a, uint256 b) public pure returns (uint256) {
  27. return SafeMathUpgradeable.add(a, b);
  28. }
  29. function doSub(uint256 a, uint256 b) public pure returns (uint256) {
  30. return SafeMathUpgradeable.sub(a, b);
  31. }
  32. function doMul(uint256 a, uint256 b) public pure returns (uint256) {
  33. return SafeMathUpgradeable.mul(a, b);
  34. }
  35. function doDiv(uint256 a, uint256 b) public pure returns (uint256) {
  36. return SafeMathUpgradeable.div(a, b);
  37. }
  38. function doMod(uint256 a, uint256 b) public pure returns (uint256) {
  39. return SafeMathUpgradeable.mod(a, b);
  40. }
  41. function subWithMessage(
  42. uint256 a,
  43. uint256 b,
  44. string memory errorMessage
  45. ) public pure returns (uint256) {
  46. return SafeMathUpgradeable.sub(a, b, errorMessage);
  47. }
  48. function divWithMessage(
  49. uint256 a,
  50. uint256 b,
  51. string memory errorMessage
  52. ) public pure returns (uint256) {
  53. return SafeMathUpgradeable.div(a, b, errorMessage);
  54. }
  55. function modWithMessage(
  56. uint256 a,
  57. uint256 b,
  58. string memory errorMessage
  59. ) public pure returns (uint256) {
  60. return SafeMathUpgradeable.mod(a, b, errorMessage);
  61. }
  62. function addMemoryCheck() public pure returns (uint256 mem) {
  63. uint256 length = 32;
  64. assembly {
  65. mem := mload(0x40)
  66. }
  67. for (uint256 i = 0; i < length; ++i) {
  68. SafeMathUpgradeable.add(1, 1);
  69. }
  70. assembly {
  71. mem := sub(mload(0x40), mem)
  72. }
  73. }
  74. function subMemoryCheck() public pure returns (uint256 mem) {
  75. uint256 length = 32;
  76. assembly {
  77. mem := mload(0x40)
  78. }
  79. for (uint256 i = 0; i < length; ++i) {
  80. SafeMathUpgradeable.sub(1, 1);
  81. }
  82. assembly {
  83. mem := sub(mload(0x40), mem)
  84. }
  85. }
  86. function mulMemoryCheck() public pure returns (uint256 mem) {
  87. uint256 length = 32;
  88. assembly {
  89. mem := mload(0x40)
  90. }
  91. for (uint256 i = 0; i < length; ++i) {
  92. SafeMathUpgradeable.mul(1, 1);
  93. }
  94. assembly {
  95. mem := sub(mload(0x40), mem)
  96. }
  97. }
  98. function divMemoryCheck() public pure returns (uint256 mem) {
  99. uint256 length = 32;
  100. assembly {
  101. mem := mload(0x40)
  102. }
  103. for (uint256 i = 0; i < length; ++i) {
  104. SafeMathUpgradeable.div(1, 1);
  105. }
  106. assembly {
  107. mem := sub(mload(0x40), mem)
  108. }
  109. }
  110. function modMemoryCheck() public pure returns (uint256 mem) {
  111. uint256 length = 32;
  112. assembly {
  113. mem := mload(0x40)
  114. }
  115. for (uint256 i = 0; i < length; ++i) {
  116. SafeMathUpgradeable.mod(1, 1);
  117. }
  118. assembly {
  119. mem := sub(mload(0x40), mem)
  120. }
  121. }
  122. /**
  123. * @dev This empty reserved space is put in place to allow future versions to add new
  124. * variables without shifting down storage in the inheritance chain.
  125. * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps
  126. */
  127. uint256[50] private __gap;
  128. }