InitializableBasicHarness.sol 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. // SPDX-License-Identifier: MIT
  2. pragma solidity ^0.8.2;
  3. import "../munged/proxy/utils/Initializable.sol";
  4. contract InitializableBasicHarness is Initializable {
  5. uint256 public val;
  6. uint256 public a;
  7. uint256 public b;
  8. modifier version1() {
  9. require(_initialized == 1);
  10. _;
  11. }
  12. modifier versionN(uint8 n) {
  13. require(_initialized == n);
  14. _;
  15. }
  16. function initialize(
  17. uint256 _val,
  18. uint256 _a,
  19. uint256 _b
  20. ) public initializer {
  21. a = _a;
  22. b = _b;
  23. val = _val;
  24. }
  25. function reinitialize(
  26. uint256 _val,
  27. uint256 _a,
  28. uint256 _b,
  29. uint8 n
  30. ) public reinitializer(n) {
  31. a = _a;
  32. b = _b;
  33. val = _val;
  34. }
  35. // Versioned return functions for testing
  36. function returnsV1() public view version1 returns (uint256) {
  37. return val;
  38. }
  39. function returnsVN(uint8 n) public view versionN(n) returns (uint256) {
  40. return val;
  41. }
  42. function returnsAV1() public view version1 returns (uint256) {
  43. return a;
  44. }
  45. function returnsAVN(uint8 n) public view versionN(n) returns (uint256) {
  46. return a;
  47. }
  48. function returnsBV1() public view version1 returns (uint256) {
  49. return b;
  50. }
  51. function returnsBVN(uint8 n) public view versionN(n) returns (uint256) {
  52. return b;
  53. }
  54. // Harness //
  55. function initialized() public view returns (uint8) {
  56. return _initialized;
  57. }
  58. function initializing() public view returns (bool) {
  59. return _initializing;
  60. }
  61. function thisIsContract() public view returns (bool) {
  62. return !Address.isContract(address(this));
  63. }
  64. }