@@ -184,3 +184,45 @@ TEST(basictests, coerce) {
184184 }
185185 }
186186}
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