jaulib v1.3.6
Jau Support Library (C++, Java, ..)
Loading...
Searching...
No Matches
test_versionnumber01.cpp
Go to the documentation of this file.
1/*
2 * Author: Sven Gothel <sgothel@jausoft.com>
3 * Copyright (c) 2012-2024 Gothel Software e.K.
4 *
5 * Permission is hereby granted, free of charge, to any person obtaining
6 * a copy of this software and associated documentation files (the
7 * "Software"), to deal in the Software without restriction, including
8 * without limitation the rights to use, copy, modify, merge, publish,
9 * distribute, sublicense, and/or sell copies of the Software, and to
10 * permit persons to whom the Software is furnished to do so, subject to
11 * the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be
14 * included in all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 */
24#include <cassert>
25#include <cstring>
26#include <iostream>
27
28#include <jau/test/catch2_ext.hpp>
29
30#include <jau/version.hpp>
32
33using namespace jau::util;
34
35TEST_CASE( "VersionNumber Test 00", "[version][util]" ) {
36 std::cout << "jaulib version: " << jau::VERSION << std::endl;
37 REQUIRE(true == jau::VERSION.hasMajor());
38 REQUIRE(true == jau::VERSION.hasMinor());
39 REQUIRE(true == jau::VERSION.hasSub());
40 REQUIRE(true == jau::VERSION.hasString());
41}
42
43TEST_CASE( "VersionNumber Test 01a", "[version][util]" ) {
44 std::string vs00 = "1.0.16";
45 std::string vs01 = "OpenGL ES GLSL ES 1.0.16";
46 std::string vs02 = "1.0.16 OpenGL ES GLSL ES";
47
48 VersionNumber vn0(1, 0, 16);
49 std::cout << "vn0: " << vn0 << std::endl;
50 REQUIRE(true == vn0.hasMajor());
51 REQUIRE(true == vn0.hasMinor());
52 REQUIRE(true == vn0.hasSub());
53 REQUIRE(false == vn0.hasGitInfo());
54
55 VersionNumberString vn(vs00);
56 std::cout << "vn.00: " << vn << std::endl;
57 REQUIRE(true == vn.hasMajor());
58 REQUIRE(true == vn.hasMinor());
59 REQUIRE(true == vn.hasSub());
60 REQUIRE(false == vn.hasGitInfo());
61 REQUIRE(true == vn.hasString());
62 REQUIRE(vn0 == vn);
63
64 vn = VersionNumberString(vs01);
65 std::cout << "vn.01: " << vn << std::endl;
66 REQUIRE(true == vn.hasMajor());
67 REQUIRE(true == vn.hasMinor());
68 REQUIRE(true == vn.hasSub());
69 REQUIRE(false == vn.hasGitInfo());
70 REQUIRE(vn0 == vn);
71
72 vn = VersionNumberString(vs02);
73 std::cout << "vn.02: " << vn << std::endl;
74 REQUIRE(true == vn.hasMajor());
75 REQUIRE(true == vn.hasMinor());
76 REQUIRE(true == vn.hasSub());
77 REQUIRE(false == vn.hasGitInfo());
78 REQUIRE(vn0 == vn);
79}
80
81TEST_CASE( "VersionNumber Test 01b", "[version][util]" ) {
82 const std::string delim = ",";
83
84 const std::string vs00 = "1,0,16";
85 const std::string vs01 = "OpenGL ES GLSL ES 1,0,16";
86 const std::string vs02 = "1,0,16 OpenGL ES GLSL ES";
87 const VersionNumber vn0 = VersionNumber(1, 0, 16);
88 std::cout << "vn0: " << vn0 << std::endl;
89 REQUIRE(true == vn0.hasMajor());
90 REQUIRE(true == vn0.hasMinor());
91 REQUIRE(true == vn0.hasSub());
92 REQUIRE(false == vn0.hasGitInfo());
93
95 vn = VersionNumberString(vs00, delim);
96 std::cout << "vn.00: " << vn << std::endl;
97 REQUIRE(true == vn.hasMajor());
98 REQUIRE(true == vn.hasMinor());
99 REQUIRE(true == vn.hasSub());
100 REQUIRE(false == vn.hasGitInfo());
101 REQUIRE(vn0 == vn);
102
103 vn = VersionNumberString(vs01, delim);
104 std::cout << "vn.01: " << vn << std::endl;
105 REQUIRE(true == vn.hasMajor());
106 REQUIRE(true == vn.hasMinor());
107 REQUIRE(true == vn.hasSub());
108 REQUIRE(false == vn.hasGitInfo());
109 REQUIRE(vn0 == vn);
110
111 vn = VersionNumberString(vs02, delim);
112 std::cout << "vn.02: " << vn << std::endl;
113 REQUIRE(true == vn.hasMajor());
114 REQUIRE(true == vn.hasMinor());
115 REQUIRE(true == vn.hasSub());
116 REQUIRE(false == vn.hasGitInfo());
117 REQUIRE(vn0 == vn);
118}
119
120TEST_CASE( "VersionNumber Test 02a", "[version][util]" ) {
121 const std::string vs00 = "4.20";
122 const std::string vs01 = "COMPANY via Stupid tool 4.20";
123 const std::string vs02 = "4.20 COMPANY via Stupid tool";
124 const VersionNumber vn0 = VersionNumber(4, 20, 0);
125 std::cout << "vn0: " << vn0 << std::endl;
126 REQUIRE(true == vn0.hasMajor());
127 REQUIRE(true == vn0.hasMinor());
128 REQUIRE(true == vn0.hasSub());
129 REQUIRE(false == vn0.hasGitInfo());
130
132 vn = VersionNumberString(vs00);
133 std::cout << "vn.00: " << vn << std::endl;
134 REQUIRE(true == vn.hasMajor());
135 REQUIRE(true == vn.hasMinor());
136 REQUIRE(true == !vn.hasSub());
137 REQUIRE(false == vn.hasGitInfo());
138 REQUIRE(vn0 == vn);
139
140 vn = VersionNumberString(vs01);
141 std::cout << "vn.01: " << vn << std::endl;
142 REQUIRE(true == vn.hasMajor());
143 REQUIRE(true == vn.hasMinor());
144 REQUIRE(true == !vn.hasSub());
145 REQUIRE(false == vn.hasGitInfo());
146 REQUIRE(vn0 == vn);
147
148 vn = VersionNumberString(vs02);
149 std::cout << "vn.02: " << vn << std::endl;
150 REQUIRE(true == vn.hasMajor());
151 REQUIRE(true == vn.hasMinor());
152 REQUIRE(true == !vn.hasSub());
153 REQUIRE(false == vn.hasGitInfo());
154 REQUIRE(vn0 == vn);
155}
156
157TEST_CASE( "VersionNumber Test 02b", "[version][util]" ) {
158 const std::string delim = ",";
159
160 const std::string vs00 = "4,20";
161 const std::string vs01 = "COMPANY via Stupid tool 4,20";
162 const std::string vs02 = "4,20 COMPANY via Stupid tool";
163 const VersionNumber vn0 = VersionNumber(4, 20, 0);
164 REQUIRE(true == vn0.hasMajor());
165 REQUIRE(true == vn0.hasMinor());
166 REQUIRE(true == vn0.hasSub());
167 REQUIRE(false == vn0.hasGitInfo());
168
170
171 vn = VersionNumberString(vs00, delim);
172 REQUIRE(true == vn.hasMajor());
173 REQUIRE(true == vn.hasMinor());
174 REQUIRE(true == !vn.hasSub());
175 REQUIRE(false == vn.hasGitInfo());
176 REQUIRE(vn0 == vn);
177
178 vn = VersionNumberString(vs01, delim);
179 REQUIRE(true == vn.hasMajor());
180 REQUIRE(true == vn.hasMinor());
181 REQUIRE(true == !vn.hasSub());
182 REQUIRE(false == vn.hasGitInfo());
183 REQUIRE(vn0 == vn);
184
185 vn = VersionNumberString(vs02, delim);
186 REQUIRE(true == vn.hasMajor());
187 REQUIRE(true == vn.hasMinor());
188 REQUIRE(true == !vn.hasSub());
189 REQUIRE(false == vn.hasGitInfo());
190 REQUIRE(vn0 == vn);
191}
192
193TEST_CASE( "VersionNumber Test 03a", "[version][util]" ) {
194 const std::string vs00 = "A10.11.12b";
195 const std::string vs01 = "Prelim Text 10.Funny11.Weird12 Something is odd";
196 const std::string vs02 = "Prelim Text 10.Funny11l1.Weird12 2 Something is odd";
197 const VersionNumber vn0 = VersionNumber(10, 11, 12);
198 REQUIRE(true == vn0.hasMajor());
199 REQUIRE(true == vn0.hasMinor());
200 REQUIRE(true == vn0.hasSub());
201 REQUIRE(false == vn0.hasGitInfo());
202
204
205 vn = VersionNumberString(vs00);
206 REQUIRE(true == vn.hasMajor());
207 REQUIRE(true == vn.hasMinor());
208 REQUIRE(true == vn.hasSub());
209 REQUIRE(false == vn.hasGitInfo());
210 REQUIRE(vn0 == vn);
211
212 vn = VersionNumberString(vs01);
213 REQUIRE(true == vn.hasMajor());
214 REQUIRE(true == vn.hasMinor());
215 REQUIRE(true == vn.hasSub());
216 REQUIRE(false == vn.hasGitInfo());
217 REQUIRE(vn0 == vn);
218
219 vn = VersionNumberString(vs02);
220 REQUIRE(true == vn.hasMajor());
221 REQUIRE(true == vn.hasMinor());
222 REQUIRE(true == vn.hasSub());
223 REQUIRE(false == vn.hasGitInfo());
224 REQUIRE(vn0 == vn);
225}
226
227TEST_CASE( "VersionNumber Test 03b", "[version][util]" ) {
228 const std::string delim = ",";
229
230 const std::string vs00 = "A10,11,12b";
231 const std::string vs01 = "Prelim Text 10,Funny11,Weird12 Something is odd";
232 const std::string vs02 = "Prelim Text 10,Funny11l1,Weird12 2 Something is odd";
233 const VersionNumber vn0 = VersionNumber(10, 11, 12);
234 REQUIRE(true == vn0.hasMajor());
235 REQUIRE(true == vn0.hasMinor());
236 REQUIRE(true == vn0.hasSub());
237 REQUIRE(false == vn0.hasGitInfo());
238
240
241 vn = VersionNumberString(vs00, delim);
242 REQUIRE(true == vn.hasMajor());
243 REQUIRE(true == vn.hasMinor());
244 REQUIRE(true == vn.hasSub());
245 REQUIRE(false == vn.hasGitInfo());
246 REQUIRE(vn0 == vn);
247
248 vn = VersionNumberString(vs01, delim);
249 REQUIRE(true == vn.hasMajor());
250 REQUIRE(true == vn.hasMinor());
251 REQUIRE(true == vn.hasSub());
252 REQUIRE(false == vn.hasGitInfo());
253 REQUIRE(vn0 == vn);
254
255 vn = VersionNumberString(vs02, delim);
256 REQUIRE(true == vn.hasMajor());
257 REQUIRE(true == vn.hasMinor());
258 REQUIRE(true == vn.hasSub());
259 REQUIRE(false == vn.hasGitInfo());
260 REQUIRE(vn0 == vn);
261}
262
263TEST_CASE( "VersionNumber Test 04a", "[version][util]" ) {
264 const std::string vs00 = "v1.2.3-10-gabcdef-dirty";
265 const std::string vs01 = "v1.2.3-11-g1abcdef";
266 const VersionNumber vn0 = VersionNumber(1, 2, 3, 10, 0xabcdef, true);
267 const VersionNumber vn1 = VersionNumber(1, 2, 3, 11, 0x1abcdef, false);
268 std::cout << "vn0: " << vn0 << std::endl;
269 std::cout << "vn1: " << vn1 << std::endl;
270 REQUIRE(vn1 > vn0);
271 REQUIRE(vn1.hash() != vn0.hash());
272 REQUIRE(true == vn0.hasMajor());
273 REQUIRE(true == vn0.hasMinor());
274 REQUIRE(true == vn0.hasSub());
275 REQUIRE(true == vn0.hasGitInfo());
276 REQUIRE(true == vn1.hasMajor());
277 REQUIRE(true == vn1.hasMinor());
278 REQUIRE(true == vn1.hasSub());
279 REQUIRE(true == vn1.hasGitInfo());
280
282
283 vn = VersionNumberString(vs00);
284 std::cout << "vn.00: " << vn << std::endl;
285 REQUIRE(true == vn.hasMajor());
286 REQUIRE(true == vn.hasMinor());
287 REQUIRE(true == vn.hasSub());
288 REQUIRE(true == vn.hasGitInfo());
289 REQUIRE(vn0 == vn);
290
291 vn = VersionNumberString(vs01);
292 std::cout << "vn.01: " << vn << std::endl;
293 REQUIRE(true == vn.hasMajor());
294 REQUIRE(true == vn.hasMinor());
295 REQUIRE(true == vn.hasSub());
296 REQUIRE(true == vn.hasGitInfo());
297 REQUIRE(vn1 == vn);
298}
299
Simple version number class containing a version number either being defined explicit or derived from...
constexpr bool hasString() const noexcept
Returns true if constructed with a version-string, otherwise false.
Simple version number class containing a version number either being defined explicit or derived from...
constexpr bool hasMajor() const noexcept
Returns true, if the major component is defined explicitly, otherwise false.
constexpr std::size_t hash() const noexcept
constexpr bool hasMinor() const noexcept
Returns true, if the optional minor component is defined explicitly, otherwise false.
constexpr bool hasGitInfo() const noexcept
Returns true, if the optional git information is defined explicitly, otherwise false.
constexpr bool hasSub() const noexcept
Returns true, if the optional sub component is defined explicitly, otherwise false.
const jau::util::VersionNumberString VERSION
TEST_CASE("VersionNumber Test 00", "[version][util]")