SingleInheritanceInitializableMocks.sol 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // SPDX-License-Identifier: MIT
  2. pragma solidity ^0.6.0;
  3. import "../proxy/Initializable.sol";
  4. /**
  5. * @title MigratableMockV1
  6. * @dev This contract is a mock to test initializable functionality through migrations
  7. */
  8. contract MigratableMockV1 is Initializable {
  9. uint256 public x;
  10. function initialize(uint256 value) public payable initializer {
  11. x = value;
  12. }
  13. }
  14. /**
  15. * @title MigratableMockV2
  16. * @dev This contract is a mock to test migratable functionality with params
  17. */
  18. contract MigratableMockV2 is MigratableMockV1 {
  19. bool internal _migratedV2;
  20. uint256 public y;
  21. function migrate(uint256 value, uint256 anotherValue) public payable {
  22. require(!_migratedV2);
  23. x = value;
  24. y = anotherValue;
  25. _migratedV2 = true;
  26. }
  27. }
  28. /**
  29. * @title MigratableMockV3
  30. * @dev This contract is a mock to test migratable functionality without params
  31. */
  32. contract MigratableMockV3 is MigratableMockV2 {
  33. bool internal _migratedV3;
  34. function migrate() public payable {
  35. require(!_migratedV3);
  36. uint256 oldX = x;
  37. x = y;
  38. y = oldX;
  39. _migratedV3 = true;
  40. }
  41. }