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

RigoBlock / v3-contracts / 13268348478

11 Feb 2025 05:02PM UTC coverage: 87.539%. First build
13268348478

Pull #622

github

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

785 of 964 branches covered (81.43%)

Branch coverage included in aggregate %.

588 of 745 new or added lines in 28 files covered. (78.93%)

1758 of 1941 relevant lines covered (90.57%)

48.43 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);
61✔
8
        uint256[3] memory required = parseVersion(requiredVersion);
61✔
9

10
        // Compare each part
11
        for (uint256 i = 0; i < 3; i++) {
61✔
12
            if (given[i] < required[i]) {
183!
NEW
13
                return false;
×
14
            }
15
            if (given[i] > required[i]) {
183!
NEW
16
                return true;
×
17
            }
18
        }
19
        // If all parts are equal, versions are not higher
20
        return true;
61✔
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);
122✔
26
        
27
        uint256 partIndex = 0;
122✔
28
        uint256 currentNumber = 0;
122✔
29

30
        for (uint256 i = 0; i < b.length; i++) {
122✔
31
            if (b[i] == ".") {
610✔
32
                versionParts[partIndex] = currentNumber;
244✔
33
                partIndex++;
244✔
34
                currentNumber = 0;
244✔
35
            } else {
36
                currentNumber = currentNumber * 10 + charToUint(b[i]);
366✔
37
            }
38
        }
39
        versionParts[partIndex] = currentNumber;
122✔
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;
366✔
45
        require(digit < 10, "Not a digit");
366!
46
        return digit;
366✔
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

© 2026 Coveralls, Inc