aboutsummaryrefslogtreecommitdiff
path: root/tests/src/versionTest.cpp
blob: d5a492c2cda5a31fd690ee6c9289fc8779206f1b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#include <catch.hpp>
#include "../../include/VersionParser.hpp"

using namespace sibs;

TEST_CASE("parse package version")
{
    VersionParser parser;
    {
        Result<PackageVersionRange> parseResult = parser.parse("2.3.4", 5);
        if(!parseResult)
            FAIL(parseResult.getErrMsg());
        PackageVersionRange versionRange = parseResult.unwrap();
        REQUIRE(versionRange.startDefined);
        REQUIRE(!versionRange.endDefined);
        REQUIRE(versionRange.startOperation == VersionOperation::GREATER_EQUAL);
        REQUIRE(versionRange.start.major == 2);
        REQUIRE(versionRange.start.minor == 3);
        REQUIRE(versionRange.start.patch == 4);
    }
    {
        Result<PackageVersionRange> parseResult = parser.parse("2.3", 3);
        if(!parseResult)
            FAIL(parseResult.getErrMsg());
        PackageVersionRange versionRange = parseResult.unwrap();
        REQUIRE(versionRange.startDefined);
        REQUIRE(!versionRange.endDefined);
        REQUIRE(versionRange.startOperation == VersionOperation::GREATER_EQUAL);
        REQUIRE(versionRange.start.major == 2);
        REQUIRE(versionRange.start.minor == 3);
        REQUIRE(versionRange.start.patch == 0);
    }
    {
        Result<PackageVersionRange> parseResult = parser.parse("2", 1);
        if(!parseResult)
            FAIL(parseResult.getErrMsg());
        PackageVersionRange versionRange = parseResult.unwrap();
        REQUIRE(versionRange.startDefined);
        REQUIRE(!versionRange.endDefined);
        REQUIRE(versionRange.startOperation == VersionOperation::GREATER_EQUAL);
        REQUIRE(versionRange.start.major == 2);
        REQUIRE(versionRange.start.minor == 0);
        REQUIRE(versionRange.start.patch == 0);
    }
    {
        Result<PackageVersionRange> parseResult = parser.parse(">=2.3.4 and <5.6.7", 18);
        if(!parseResult)
            FAIL(parseResult.getErrMsg());
        PackageVersionRange versionRange = parseResult.unwrap();
        REQUIRE(versionRange.startDefined);
        REQUIRE(versionRange.endDefined);
        REQUIRE(versionRange.startOperation == VersionOperation::GREATER_EQUAL);
        REQUIRE(versionRange.start.major == 2);
        REQUIRE(versionRange.start.minor == 3);
        REQUIRE(versionRange.start.patch == 4);
        REQUIRE(versionRange.endOperation == VersionOperation::LESS);
        REQUIRE(versionRange.end.major == 5);
        REQUIRE(versionRange.end.minor == 6);
        REQUIRE(versionRange.end.patch == 7);
    }
    {
        Result<PackageVersionRange> parseResult = parser.parse(">2.3.4 and <=5.6.7", 18);
        if(!parseResult)
            FAIL(parseResult.getErrMsg());
        PackageVersionRange versionRange = parseResult.unwrap();
        REQUIRE(versionRange.startDefined);
        REQUIRE(versionRange.endDefined);
        REQUIRE(versionRange.startOperation == VersionOperation::GREATER);
        REQUIRE(versionRange.start.major == 2);
        REQUIRE(versionRange.start.minor == 3);
        REQUIRE(versionRange.start.patch == 4);
        REQUIRE(versionRange.endOperation == VersionOperation::LESS_EQUAL);
        REQUIRE(versionRange.end.major == 5);
        REQUIRE(versionRange.end.minor == 6);
        REQUIRE(versionRange.end.patch == 7);
    }
    {
        Result<PackageVersionRange> parseResult = parser.parse(">2.3.4 and <=5", 14);
        if(!parseResult)
            FAIL(parseResult.getErrMsg());
        PackageVersionRange versionRange = parseResult.unwrap();
        REQUIRE(versionRange.startDefined);
        REQUIRE(versionRange.endDefined);
        REQUIRE(versionRange.startOperation == VersionOperation::GREATER);
        REQUIRE(versionRange.start.major == 2);
        REQUIRE(versionRange.start.minor == 3);
        REQUIRE(versionRange.start.patch == 4);
        REQUIRE(versionRange.endOperation == VersionOperation::LESS_EQUAL);
        REQUIRE(versionRange.end.major == 5);
        REQUIRE(versionRange.end.minor == 0);
        REQUIRE(versionRange.end.patch == 0);
    }
    {
        REQUIRE(!parser.parse("", 0));
        REQUIRE(!parser.parse(" ", 1));
        REQUIRE(!parser.parse("2", 2));
        REQUIRE(!parser.parse(".", 1));
        REQUIRE(!parser.parse(".2", 2));
        REQUIRE(!parser.parse("<", 1));
        REQUIRE(!parser.parse("and", 3));
        REQUIRE(!parser.parse("2 and", 5));
        REQUIRE(!parser.parse("2 and 3", 7));
        REQUIRE(!parser.parse("2 and =3", 8));
        REQUIRE(!parser.parse("2 and >3", 8));
        REQUIRE(!parser.parse(">=1.0.0 and 2.0.0", 17));
        REQUIRE(!parser.parse("1.0.0 < 2.0.0", 13));
        REQUIRE(!parser.parse("1.0.0 and <0.9.3", 16));
        REQUIRE(!parser.parse("=1.0.0 and <2.0.0", 17));
        REQUIRE(!parser.parse("1.0.0 and <2.0.0", 16));
        REQUIRE(!parser.parse(">=1.0.0 and =2.0.0", 18));
    }
}