mirror of openzeppelin-contracts
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
openzeppelin-contracts/certora/harnesses/InitializableBasicHarness.sol

73 lines
1.6 KiB

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.2;
import "../munged/proxy/utils/Initializable.sol";
contract InitializableBasicHarness is Initializable {
uint256 public val;
uint256 public a;
uint256 public b;
modifier version1() {
require(_initialized == 1);
_;
}
modifier versionN(uint8 n) {
require(_initialized == n);
_;
}
function initialize(uint256 _val, uint256 _a, uint256 _b) public initializer {
a = _a;
b = _b;
val = _val;
}
function reinitialize(uint256 _val, uint256 _a, uint256 _b, uint8 n) public reinitializer(n) {
a = _a;
b = _b;
val = _val;
}
// Versioned return functions for testing
function returnsV1() public view version1 returns(uint256) {
return val;
}
function returnsVN(uint8 n) public view versionN(n) returns(uint256) {
return val;
}
function returnsAV1() public view version1 returns(uint256) {
return a;
}
function returnsAVN(uint8 n) public view versionN(n) returns(uint256) {
return a;
}
function returnsBV1() public view version1 returns(uint256) {
return b;
}
function returnsBVN(uint8 n) public view versionN(n) returns(uint256) {
return b;
}
// Harness //
function initialized() public view returns(uint8) {
return _initialized;
}
function initializing() public view returns(bool) {
return _initializing;
}
function thisIsContract() public view returns(bool) {
return !Address.isContract(address(this));
}
}