@@ -71,7 +71,6 @@ std::vector<TestData> clean_values = {
71
71
TEST (basictests, clean) {
72
72
for (const auto & [input, expected] : clean_values) {
73
73
auto cleaned_result = version_weaver::clean (input);
74
- std::printf (" input: %s\n " , input.c_str ());
75
74
ASSERT_EQ (cleaned_result.has_value (), expected.has_value ());
76
75
if (cleaned_result.has_value ()) {
77
76
ASSERT_EQ (cleaned_result->major , expected->major );
@@ -186,43 +185,83 @@ TEST(basictests, coerce) {
186
185
}
187
186
188
187
using IncTestData = std::tuple<
189
- version_weaver::version,
190
- version_weaver::release_type,
191
- std::expected<version_weaver::version, version_weaver::inc_error>
192
- >;
188
+ version_weaver::version, std::string, version_weaver::release_type,
189
+ std::string,
190
+ std::expected<version_weaver::version, version_weaver::parse_error>>;
193
191
194
192
std::vector<IncTestData> inc_values = {
195
- {version_weaver::version{" 1" , " 2" , " 3" }, version_weaver::release_type::MAJOR, version_weaver::version{" 2" , " 0" , " 0" }},
196
- {version_weaver::version{" 1" , " 2" , " 3" }, version_weaver::release_type::MINOR, version_weaver::version{" 1" , " 3" , " 0" }},
197
- {version_weaver::version{" 1" , " 2" , " 3" }, version_weaver::release_type::PATCH, version_weaver::version{" 1" , " 2" , " 4" }},
198
- {version_weaver::version{" 1" , " 2" , " 3tag" }, version_weaver::release_type::MAJOR, version_weaver::version{" 2" , " 0" , " 0" }},
199
- {version_weaver::version{" 1" , " 2" , " 3-tag" }, version_weaver::release_type::MAJOR, version_weaver::version{" 2" , " 0" , " 0" }},
200
- {version_weaver::version{" 1" , " 2" , " 3" }, static_cast <version_weaver::release_type>(-1 ), std::unexpected (version_weaver::inc_error::INVALID_RELEASE_TYPE)},
201
- {version_weaver::version{" 1" , " 2" , " 0-0" }, version_weaver::release_type::PATCH, version_weaver::version{" 1" , " 2" , " 0" }},
202
- {version_weaver::version{" fake" }, version_weaver::release_type::MAJOR, std::unexpected (version_weaver::inc_error::INVALID_MAJOR)},
203
- {version_weaver::version{" 1" , " 2" , " 3-4" }, version_weaver::release_type::MAJOR, version_weaver::version{" 2" , " 0" , " 0" }},
204
- {version_weaver::version{" 1" , " 2" , " 3-4" }, version_weaver::release_type::MINOR, version_weaver::version{" 1" , " 3" , " 0" }},
205
- {version_weaver::version{" 1" , " 2" , " 3-4" }, version_weaver::release_type::PATCH, version_weaver::version{" 1" , " 2" , " 3" }},
206
- {version_weaver::version{" 1" , " 2" , " 3-alpha.0.beta" }, version_weaver::release_type::MAJOR, version_weaver::version{" 2" , " 0" , " 0" }},
207
- {version_weaver::version{" 1" , " 2" , " 3-alpha.0.beta" }, version_weaver::release_type::MINOR, version_weaver::version{" 1" , " 3" , " 0" }},
208
- {version_weaver::version{" 1" , " 2" , " 3-alpha.0.beta" }, version_weaver::release_type::PATCH, version_weaver::version{" 1" , " 2" , " 3" }},
193
+ {version_weaver::version{" 1" , " 2" , " 3" }, " 1.2.3" ,
194
+ version_weaver::release_type::MAJOR, " 2.0.0" ,
195
+ version_weaver::version{" 2" , " 0" , " 0" }},
196
+ {version_weaver::version{" 1" , " 2" , " 3" }, " 1.2.3" ,
197
+ version_weaver::release_type::MINOR, " 1.3.0" ,
198
+ version_weaver::version{" 1" , " 3" , " 0" }},
199
+ {version_weaver::version{" 1" , " 2" , " 3" }, " 1.2.3" ,
200
+ version_weaver::release_type::PATCH, " 1.2.4" ,
201
+ version_weaver::version{" 1" , " 2" , " 4" }},
202
+ {version_weaver::version{" 1" , " 2" , " 3" , " tag" }, " 1.2.3-tag" ,
203
+ version_weaver::release_type::MAJOR, " 2.0.0" ,
204
+ version_weaver::version{" 2" , " 0" , " 0" }},
205
+ {version_weaver::version{" 1" , " 2" , " 3" }, " 1.2.3" ,
206
+ static_cast <version_weaver::release_type>(-1 ), " " ,
207
+ std::unexpected (version_weaver::parse_error::INVALID_RELEASE_TYPE)},
208
+ {version_weaver::version{" 1" , " 2" , " 0" , " 0" }, " 1.2.0-0" ,
209
+ version_weaver::release_type::PATCH, " 1.2.0" ,
210
+ version_weaver::version{" 1" , " 2" , " 0" }},
211
+ {version_weaver::version{" fake" }, " fake" ,
212
+ version_weaver::release_type::MAJOR, " " ,
213
+ std::unexpected (version_weaver::parse_error::INVALID_MAJOR)},
214
+ {version_weaver::version{" 1" , " 2" , " 3" , " 4" }, " 1.2.3-4" ,
215
+ version_weaver::release_type::MAJOR, " 2.0.0" ,
216
+ version_weaver::version{" 2" , " 0" , " 0" }},
217
+ {version_weaver::version{" 1" , " 2" , " 3" , " 4" }, " 1.2.3-4" ,
218
+ version_weaver::release_type::MINOR, " 1.3.0" ,
219
+ version_weaver::version{" 1" , " 3" , " 0" }},
220
+ {version_weaver::version{" 1" , " 2" , " 3" , " 4" }, " 1.2.3-4" ,
221
+ version_weaver::release_type::PATCH, " 1.2.3" ,
222
+ version_weaver::version{" 1" , " 2" , " 3" }},
223
+ {version_weaver::version{" 1" , " 2" , " 3" , " alpha.0.beta" },
224
+ " 1.2.3-alpha.0.beta" , version_weaver::release_type::MAJOR, " 2.0.0" ,
225
+ version_weaver::version{" 2" , " 0" , " 0" }},
226
+ {version_weaver::version{" 1" , " 2" , " 3" , " alpha.0.beta" },
227
+ " 1.2.3-alpha.0.beta" , version_weaver::release_type::MINOR, " 1.3.0" ,
228
+ version_weaver::version{" 1" , " 3" , " 0" }},
229
+ {version_weaver::version{" 1" , " 2" , " 3" , " alpha.0.beta" },
230
+ " 1.2.3-alpha.0.beta" , version_weaver::release_type::PATCH, " 1.2.3" ,
231
+ version_weaver::version{" 1" , " 2" , " 3" }},
209
232
};
210
233
211
234
TEST (basictests, inc) {
212
- for (const auto & [input, release_type, expected] : inc_values) {
213
- auto incremented = version_weaver::inc (input, release_type);
214
-
215
- ASSERT_EQ (incremented.has_value (), expected.has_value ());
216
- if (incremented.has_value ()) {
235
+ for (const auto & [input, inputstr, release_type, str, expected] :
236
+ inc_values) {
237
+ auto incremented_str = version_weaver::inc (input, release_type);
238
+ ASSERT_EQ (incremented_str.has_value (), expected.has_value ());
239
+ if (incremented_str.has_value ()) {
240
+ ASSERT_EQ (*incremented_str, str);
241
+ auto incremented = version_weaver::parse (*incremented_str);
242
+ ASSERT_TRUE (incremented.has_value ());
217
243
ASSERT_EQ (incremented->major , expected->major );
218
244
ASSERT_EQ (incremented->minor , expected->minor );
219
245
ASSERT_EQ (incremented->patch , expected->patch );
220
246
ASSERT_EQ (incremented->pre_release , expected->pre_release );
221
247
ASSERT_EQ (incremented->build , expected->build );
222
248
} else {
223
- ASSERT_EQ (incremented .error (), expected.error ());
249
+ ASSERT_EQ (incremented_str .error (), expected.error ());
224
250
}
225
251
}
226
252
227
253
SUCCEED ();
228
254
}
255
+
256
+ TEST (basictests, plus) {
257
+ for (const auto & [input, inputstr, release_type, str, expected] :
258
+ inc_values) {
259
+ auto incremented_str = inputstr + release_type;
260
+ ASSERT_EQ (incremented_str.has_value (), expected.has_value ());
261
+ if (incremented_str.has_value ()) {
262
+ ASSERT_EQ (*incremented_str, str);
263
+ }
264
+ }
265
+
266
+ SUCCEED ();
267
+ }
0 commit comments