@@ -184,3 +184,45 @@ TEST(basictests, coerce) {
184
184
}
185
185
}
186
186
}
187
+
188
+ using IncTestData = std::tuple<
189
+ version_weaver::version,
190
+ version_weaver::release_type,
191
+ std::expected<version_weaver::version, version_weaver::inc_error>
192
+ >;
193
+
194
+ 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" }},
209
+ };
210
+
211
+ 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 ()) {
217
+ ASSERT_EQ (incremented->major , expected->major );
218
+ ASSERT_EQ (incremented->minor , expected->minor );
219
+ ASSERT_EQ (incremented->patch , expected->patch );
220
+ ASSERT_EQ (incremented->pre_release , expected->pre_release );
221
+ ASSERT_EQ (incremented->build , expected->build );
222
+ } else {
223
+ ASSERT_EQ (incremented.error (), expected.error ());
224
+ }
225
+ }
226
+
227
+ SUCCEED ();
228
+ }
0 commit comments