InitializableBasicHarness.sol 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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(uint256 _val, uint256 _a, uint256 _b) public initializer {
  17. a = _a;
  18. b = _b;
  19. val = _val;
  20. }
  21. function reinitialize(uint256 _val, uint256 _a, uint256 _b, uint8 n) public reinitializer(n) {
  22. a = _a;
  23. b = _b;
  24. val = _val;
  25. }
  26. // Versioned return functions for testing
  27. function returnsV1() public view version1 returns(uint256) {
  28. return val;
  29. }
  30. function returnsVN(uint8 n) public view versionN(n) returns(uint256) {
  31. return val;
  32. }
  33. function returnsAV1() public view version1 returns(uint256) {
  34. return a;
  35. }
  36. function returnsAVN(uint8 n) public view versionN(n) returns(uint256) {
  37. return a;
  38. }
  39. function returnsBV1() public view version1 returns(uint256) {
  40. return b;
  41. }
  42. function returnsBVN(uint8 n) public view versionN(n) returns(uint256) {
  43. return b;
  44. }
  45. // Harness //
  46. function initialized() public view returns(uint8) {
  47. return _initialized;
  48. }
  49. function initializing() public view returns(bool) {
  50. return _initializing;
  51. }
  52. function thisIsContract() public view returns(bool) {
  53. return !Address.isContract(address(this));
  54. }
  55. }