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)

CategoryShort DescriptionFailures

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)

CategoryShort DescriptionFailures

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 NameTest CoveragePassFailTotal

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 NameTest CoveragePassFailTotal

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