Test Coverage
The tables below provides a summary and detailed information in relation to the number of tests performed, the count of passing tests and the count of failing tests.
To summarize, VeChain achieves a pass rate of 99%, when taking into consideration that 1346 of the 1355 failing tests are classified as being either justifiable or passable, given some modifications to the tests.
You can find detailed analysis of the coverage categories in the pages to follow.
Summary Table (Oz4)
Category | Short Description | Failures |
---|---|---|
Justifiable | Failures that result from the inherent design differences between VeChain and Ethereum. | 73 |
Contract Address Prediction | See here. | 14 |
Failures in Constructor | Contract fails in constructor resulting in failure to be deployed. | 7 |
Full, with eth_sign implementation | See here. | 4 |
Full, with test changes | Some test modifications had to be added for the tests to pass. | 3 |
BadBeaconProxy Address 0x1 | See here. | 1 |
Summary Table (Oz5 Shanghai)
Category | Short Description | Failures |
---|---|---|
Justifiable | Failures that result from the inherent design differences between VeChain and Ethereum. | 83 |
Custom Error | Failures due to custom errors specific to the implementation. | 928 |
Hardhat Specific | Issues specific to Hardhat Network. | 335 |
Max code size limit | Failures due to exceeding the maximum contract code size limit. | 4 |
BadBeaconProxy Address 0x1 | See here | 1 |
eth_sign | See here. | 4 |
Detailed Table (Oz4)
Contract Name | Test Coverage | Pass | Fail | Total |
---|---|---|---|---|
Total | 2324 | 102 | 2426 | |
ERC1967Proxy | 25 | 3 | 28 | |
TransparentUpgradeableProxy | 58 | 3 | 61 | |
BeaconProxy | 7 | 2 | 9 | |
GovernorTimelockCompound | 7 | 12 | 19 | |
GovernorCompatibilityBravo | 7 | 2 | 9 | |
TimelockController | 27 | 15 | 42 | |
CrossChainEnabled | 4 | 9 | 13 | |
GovernorTimelockControl | 12 | 9 | 21 | |
AccessControl | 50 | 4 | 54 | |
MinimalForwarder | 12 | 4 | 16 | |
TokenTimelock | 3 | 4 | 7 | |
VestingWallet | 2 | 4 | 6 | |
ERC721Enumerable | 233 | 3 | 236 | |
DoubleEndedQueue | 7 | 2 | 9 | |
ERC2771Context | 5 | 2 | 7 | |
ERC721 | 211 | 2 | 213 | |
Governor | 42 | 2 | 44 | |
Checkpoints | 22 | 1 | 23 | |
ERC1155 | 83 | 1 | 84 | |
ERC1155Holder | 4 | 1 | 5 | |
ERC1155PresetMinterPauser | 16 | 1 | 17 | |
ERC165 | 2 | 1 | 3 | |
ERC165Storage | 4 | 1 | 5 | |
ERC20Votes | 28 | 1 | 29 | |
ERC20VotesComp | 27 | 1 | 28 | |
ERC721PresetMinterPauserAutoId | 15 | 1 | 16 | |
ERC721Royalty | 13 | 1 | 14 | |
GovernorWithParams | 3 | 1 | 4 | |
MerkleProof | 8 | 1 | 9 | |
TimersTimestamp | 4 | 1 | 5 | |
ECDSA | 14 | 3 | 17 | |
SignatureChecker (ERC1271) | 1 | 1 | 1 | |
ERC1820Implementer | 1 | 1 | 1 | |
ERC777 | 1 | 1 | 1 | |
ERC777PresetFixedSupply | 1 | 1 | 1 | |
Address | 29 | 0 | 29 | |
Arrays | 15 | 0 | 15 | |
BitMap | 10 | 0 | 10 | |
Clones | 30 | 0 | 30 | |
ConditionalEscrow | 11 | 0 | 11 | |
Context | 4 | 0 | 4 | |
Counters | 8 | 0 | 8 | |
Create2 | 8 | 0 | 8 | |
EIP712 | 2 | 0 | 2 | |
EnumerableMap | 70 | 0 | 70 | |
EnumerableSet | 20 | 0 | 24 | |
ERC1155Burnable | 6 | 0 | 6 | |
ERC1155Pausable | 11 | 0 | 11 | |
ERC1155Supply | 10 | 0 | 10 | |
ERC1155URIStorage | 4 | 0 | 4 | |
ERC165Checker | 40 | 0 | 40 | |
ERC20 | 118 | 0 | 118 | |
ERC20Burnable | 13 | 0 | 13 | |
ERC20Capped | 5 | 0 | 5 | |
ERC20FlashMint | 12 | 0 | 12 | |
ERC20Pausable | 12 | 0 | 12 | |
ERC20Permit | 6 | 0 | 6 | |
ERC20PresetFixedSupply | 4 | 0 | 4 | |
ERC20PresetMinterPauser | 12 | 0 | 12 | |
ERC20Snapshot | 14 | 0 | 14 | |
ERC4626 | 25 | 0 | 25 | |
ERC721Burnable | 4 | 0 | 4 | |
ERC721Consecutive | 13 | 0 | 13 | |
ERC721Holder | 1 | 0 | 1 | |
ERC721Pausable | 10 | 0 | 10 | |
ERC721URIStorage | 10 | 0 | 10 | |
ERC721Votes | 26 | 0 | 26 | |
Escrow | 10 | 0 | 10 | |
GovernorComp | 2 | 0 | 2 | |
GovernorERC721Mock | 2 | 0 | 2 | |
GovernorPreventLateQuorum | 5 | 0 | 5 | |
GovernorVotesQuorumFraction | 6 | 0 | 6 | |
Initializable | 29 | 0 | 29 | |
Math | 25 | 0 | 25 | |
MulticallToken | 4 | 0 | 4 | |
Ownable | 6 | 0 | 6 | |
Ownable2Step | 5 | 0 | 5 | |
Pausable | 11 | 0 | 11 | |
PaymentSplitter | 20 | 0 | 20 | |
ProxyAdmin | 12 | 0 | 12 | |
PullPayment | 4 | 0 | 4 | |
ReentrancyGuard | 6 | 0 | 6 | |
RefundEscrow | 17 | 0 | 17 | |
SafeCast | 444 | 0 | 444 | |
SafeERC20 | 35 | 0 | 35 | |
SafeMath | 48 | 0 | 48 | |
SignedMath | 12 | 0 | 12 | |
SignedSafeMath | 17 | 0 | 17 | |
StorageSlot | 12 | 0 | 12 | |
Strings | 31 | 0 | 31 | |
TimersBlockNumber | 5 | 0 | 5 | |
UpgradeableBeacon | 5 | 0 | 5 | |
UUPSUpgradeable | 6 | 0 | 6 | |
Votes | 23 | 0 | 23 |
Detailed Table (Oz5 Shanghai)
Contract Name | Test Coverage | Pass | Fail | Total | |
---|---|---|---|---|---|
AccessControl | 30 | 9 | 39 | ||
Ownable | 8 | 4 | 12 | ||
Ownable2Step | 6 | 2 | 8 | ||
AccessControlDefaultAdminRules | 94 | 67 | 161 | ||
AccessControlEnumerable | 37 | 11 | 48 | ||
AccessManaged | 11 | 6 | 17 | ||
AccessManager | 160 | 185 | 345 | ||
AuthorityUtils | 4 | 0 | 4 | ||
VestingWallet | 6 | 5 | 11 | ||
Governor | 202 | 143 | 345 | ||
TimelockController | 53 | 38 | 91 | ||
GovernorERC721 | 4 | 2 | 6 | ||
GovernorPreventLateQuorum | 10 | 7 | 17 | ||
GovernorTimelockCompound | 38 | 36 | 74 | ||
GovernorTimelockControl | 42 | 37 | 79 | ||
GovernorVotesQuorumFraction | 12 | 10 | 22 | ||
GovernorWithParams | 14 | 11 | 25 | ||
Votes | 46 | 14 | 60 | ||
ERC2771Context | 11 | 0 | 11 | ||
ERC2771Forwarder | 37 | 19 | 56 | ||
Clones | 30 | 1 | 31 | ||
ERC1967Proxy | 26 | 12 | 38 | ||
BeaconProxy | 10 | 8 | 18 | ||
UpgradeableBeacon | 6 | 3 | 9 | ||
ProxyAdmin | 7 | 4 | 11 | ||
TransparentUpgradeableProxy | 26 | 12 | 38 | ||
Initializable | 29 | 8 | 37 | ||
UUPSUpgradeable | 11 | 10 | 21 | ||
ERC1155 | 89 | 29 | 118 | ||
ERC1155Burnable | 6 | 2 | 8 | ||
ERC1155Pausable | 11 | 8 | 19 | ||
ERC1155Supply | 11 | 0 | 11 | ||
ERC1155URIStorage | 4 | 0 | 4 | ||
ERC1155Holder | 7 | 2 | 9 | ||
ERC20 | 122 | 34 | 156 | ||
ERC20Burnable | 13 | 3 | 16 | ||
ERC20Capped | 5 | 3 | 8 | ||
ERC20FlashMint | 12 | 4 | 16 | ||
ERC20Pausable | 12 | 4 | 16 | ||
ERC20Permit | 6 | 3 | 9 | ||
ERC20Votes | 92 | 30 | 122 | ||
ERC20Wrapper | 44 | 12 | 56 | ||
ERC4626 | 71 | 11 | 82 | ||
SafeERC20 | 35 | 12 | 47 | ||
ERC721 | 378 | 71 | 449 | ||
ERC721Enumerable | 400 | 80 | 480 | ||
ERC721Burnable | 5 | 4 | 9 | ||
ERC721Consecutive | 34 | 22 | 56 | ||
ERC721Pausable | 9 | 5 | 14 | ||
ERC721Royalty | 16 | 4 | 20 | ||
ERC721URIStorage | 17 | 6 | 23 | ||
ERC721Votes | 25 | 7 | 32 | ||
ERC721Wrapper | 384 | 72 | 456 | ||
ERC721Holder | 1 | 0 | 1 | ||
Address | 29 | 14 | 43 | ||
Arrays | 15 | 0 | 15 | ||
Base64 | 5 | 0 | 5 | ||
Context | 4 | 0 | 4 | ||
Create2 | 8 | 2 | 10 | ||
Multicall | 4 | 2 | 6 | ||
Nonces | 6 | 1 | 7 | ||
Pausable | 11 | 5 | 16 | ||
ReentrancyGuard | 6 | 3 | 9 | ||
ShortStrings | 14 | 6 | 20 | ||
StorageSlot | 24 | 0 | 24 | ||
Strings | 71 | 1 | 72 | ||
ECDSA | 15 | 11 | 26 | ||
EIP712 | 13 | 0 | 13 | ||
MerkleProof | 10 | 3 | 13 | ||
MessageHashUtils | 4 | 0 | 4 | ||
ERC165 | 5 | 2 | 7 | ||
ERC165Checker | 40 | 0 | 40 | ||
Math | 44 | 1 | 45 | ||
SafeCast | 444 | 190 | 634 | ||
SignedMath | 12 | 0 | 12 | ||
BitMap | 10 | 0 | 10 | ||
Checkpoints | 33 | 3 | 36 | ||
DoubleEndedQueue | 9 | 2 | 11 | ||
EnumerableMap | 60 | 5 | 65 | ||
EnumerableSet | 24 | 0 | 24 | ||
Time | 7 | 0 | 7 | ||
GovernorStorage | 0 | 2 | 2 | ||
GovernorTimelockAccess | 0 | 2 | 2 | ||
ERC1967Utils | 0 | 3 | 3 | ||
SignatureChecker | 0 | 1 | 1 |
Last updated