Test Coverage

The tables below provide 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 summarise, VeChain is fully compatible with OpenZeppelin contracts (with v5 being the latest version tested), and the main differences encountered are related to Hardhat:

  • The chainId in VeChain is the genesis block ID of each network

  • Custom Hardhat RPC methods like evm_increaseTime or evm_mine depend on the actual Hardhat VeChain plugin (so differences might be expected in this regard).

You can find detailed analysis of the coverage categories in the pages to follow.

OpenZeppelin v5

Summary

Category
Short Description
Failures

Set base URI

URI was not set in the ERC721 and ERC721Enumerable test cases, causing 6 tests to remain pending. Since these tests focus on compatibility, URI validation is not essential.

0

Detail

Contract Name
Pass
Fail
Total

Total

2611

0

2617

AccessControl

30

0

30

Ownable

8

0

8

Ownable2Step

6

0

6

AccessControlDefaultAdminRules

56

0

56

AccessControlEnumerable

36

0

36

AccessManaged

8

0

8

AccessManager

113

0

113

AuthorityUtils

4

0

4

VestingWallet

2

0

2

Governor

136

0

136

GovernorERC721

2

0

2

GovernorPreventLateQuorum

5

0

5

GovernorStorage

3

0

3

GovernorTimelockAccess

3

0

3

GovernorTimelockCompound

8

0

8

GovernorTimelockControl

12

0

12

GovernorVotesQuorumFraction

4

0

4

GovernorWithParams

7

0

7

Votes

44

0

44

ERC2771Context

11

0

11

ERC2771Forwarder

36

0

36

Clones

30

0

30

ERC1967Proxy

19

0

19

BeaconProxy

6

0

6

UpgradeableBeacon

6

0

6

ProxyAdmin

5

0

5

TransparentUpgradeableProxy

19

0

19

Initializable

29

0

29

UUPSupgradeable

8

0

8

ERC721

375

0

378

ERC721Enumerable

397

0

400

ERC721Wrapper

18

0

18

ERC721Holder

1

0

1

ERC721Burnable

5

0

5

ERC721Consecutive

34

0

34

ERC721Pausable

9

0

9

ERC721Royalty

16

0

16

ERC721URIStorage

17

0

17

ERC721Votes

23

0

23

ERC721Holder

1

0

1

ERC1155

89

0

89

ERC1155Burnable

6

0

6

ERC1155Pausable

11

0

11

ERC1155Supply

4

0

4

ERC1155URIStorage

4

0

4

ERC1155Holder

7

0

7

Address

7

0

7

Address

29

0

29

Arrays

20

0

20

Base64

5

0

5

Context

4

0

4

Create2

8

0

8

Multicall

4

0

4

Nonces

6

0

6

Pausable

11

0

11

ReentrancyGuard

6

0

6

ShortStrings

14

0

14

StorageSlot

24

0

24

Strings

71

0

71

ECDSA

14

0

14

EIP712

13

0

13

MerkleProof

10

0

10

MessageHashUtils

4

0

4

ERC165

5

0

5

ERC165Checker

40

0

40

Math

44

0

44

SafeCast

444

0

444

SignedMath

12

0

12

BitMap

10

0

10

Checkpoints

33

0

33

DoubleEndedQueue

9

0

9

EnumerableMap

60

0

60

EnumerableSet

24

0

24

Time

7

0

7

OpenZeppelin v4

Summary

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

Detail

Contract Name
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

Last updated

Was this helpful?