• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

RigoBlock / v3-contracts / 13261352678

11 Feb 2025 10:59AM UTC coverage: 84.94% (+2.6%) from 82.368%
13261352678

Pull #622

github

web-flow
Merge f22d260e3 into 08bd3b51b
Pull Request #622: feat: automated nav

761 of 962 branches covered (79.11%)

Branch coverage included in aggregate %.

523 of 711 new or added lines in 28 files covered. (73.56%)

18 existing lines in 5 files now uncovered.

1698 of 1933 relevant lines covered (87.84%)

44.05 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

82.76
/contracts/protocol/libraries/VersionLib.sol
1
// SPDX-License-Identifier: MIT
2
pragma solidity ^0.8.0;
3

4
library VersionLib {
5
    // Compare versions
6
    function isVersionHigherOrEqual(string memory givenVersion, string memory requiredVersion) internal pure returns (bool) {
7
        uint256[3] memory given = parseVersion(givenVersion);
9✔
8
        uint256[3] memory required = parseVersion(requiredVersion);
9✔
9

10
        // Compare each part
11
        for (uint256 i = 0; i < 3; i++) {
9✔
12
            if (given[i] < required[i]) {
27!
NEW
13
                return false;
×
14
            }
15
            if (given[i] > required[i]) {
27!
NEW
16
                return true;
×
17
            }
18
        }
19
        // If all parts are equal, versions are not higher
20
        return true;
9✔
21
    }
22

23
    // Convert version string to an array of numbers
24
    function parseVersion(string memory _version) private pure returns (uint256[3] memory versionParts) {
25
        bytes memory b = bytes(_version);
18✔
26
        
27
        uint256 partIndex = 0;
18✔
28
        uint256 currentNumber = 0;
18✔
29

30
        for (uint256 i = 0; i < b.length; i++) {
18✔
31
            if (b[i] == ".") {
90✔
32
                versionParts[partIndex] = currentNumber;
36✔
33
                partIndex++;
36✔
34
                currentNumber = 0;
36✔
35
            } else {
36
                currentNumber = currentNumber * 10 + charToUint(b[i]);
54✔
37
            }
38
        }
39
        versionParts[partIndex] = currentNumber;
18✔
40
    }
41

42
    // Helper function to convert a single character to an integer
43
    function charToUint(bytes1 char) private pure returns (uint256) {
44
        uint256 digit = uint256(uint8(char)) - 48;
54✔
45
        require(digit < 10, "Not a digit");
54!
46
        return digit;
54✔
47
    }
48
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc