@@ -9,31 +9,26 @@ namespace exploy::control::metadata {
99// ========== Version::toString ==========
1010
1111TEST (VersionTest, ToString) {
12- EXPECT_EQ ((Version{1 , 2 , 3 }.toString ()), " 1.2.3 " );
13- EXPECT_EQ ((Version{0 , 0 , 0 }.toString ()), " 0. 0.0" );
14- EXPECT_EQ ((Version{10 , 20 , 30 }.toString ()), " 10.20.30 " );
12+ EXPECT_EQ ((Version{1 , 2 }.toString ()), " 1.2" );
13+ EXPECT_EQ ((Version{0 , 0 }.toString ()), " 0.0" );
14+ EXPECT_EQ ((Version{10 , 20 }.toString ()), " 10.20" );
1515}
1616
1717// ========== Version::operator<= ==========
1818
1919TEST (VersionTest, ComparisonEqualVersions) {
20- EXPECT_TRUE ((Version{1 , 2 , 3 } <= Version{1 , 2 , 3 }));
21- EXPECT_TRUE ((Version{0 , 0 , 0 } <= Version{0 , 0 , 0 }));
20+ EXPECT_TRUE ((Version{1 , 2 } <= Version{1 , 2 }));
21+ EXPECT_TRUE ((Version{0 , 0 } <= Version{0 , 0 }));
2222}
2323
2424TEST (VersionTest, ComparisonMajorDiffers) {
25- EXPECT_TRUE ((Version{0 , 9 , 9 } <= Version{1 , 0 , 0 }));
26- EXPECT_FALSE ((Version{2 , 0 , 0 } <= Version{1 , 9 , 9 }));
25+ EXPECT_TRUE ((Version{0 , 9 } <= Version{1 , 0 }));
26+ EXPECT_FALSE ((Version{2 , 0 } <= Version{1 , 9 }));
2727}
2828
2929TEST (VersionTest, ComparisonMinorDiffers) {
30- EXPECT_TRUE ((Version{1 , 1 , 9 } <= Version{1 , 2 , 0 }));
31- EXPECT_FALSE ((Version{1 , 3 , 0 } <= Version{1 , 2 , 9 }));
32- }
33-
34- TEST (VersionTest, ComparisonPatchDiffers) {
35- EXPECT_TRUE ((Version{1 , 2 , 2 } <= Version{1 , 2 , 3 }));
36- EXPECT_FALSE ((Version{1 , 2 , 4 } <= Version{1 , 2 , 3 }));
30+ EXPECT_TRUE ((Version{1 , 1 } <= Version{1 , 2 }));
31+ EXPECT_FALSE ((Version{1 , 3 } <= Version{1 , 2 }));
3732}
3833
3934// ========== parseVersion ==========
@@ -43,43 +38,57 @@ TEST(ParseVersionTest, ValidVersion) {
4338 ASSERT_TRUE (v.has_value ());
4439 EXPECT_EQ (v->major , 1 );
4540 EXPECT_EQ (v->minor , 2 );
46- EXPECT_EQ (v->patch , 3 );
4741}
4842
4943TEST (ParseVersionTest, ZeroVersion) {
5044 auto v = parseVersion (" 0.0.0" );
5145 ASSERT_TRUE (v.has_value ());
5246 EXPECT_EQ (v->major , 0 );
5347 EXPECT_EQ (v->minor , 0 );
54- EXPECT_EQ (v->patch , 0 );
5548}
5649
5750TEST (ParseVersionTest, LargeNumbers) {
5851 auto v = parseVersion (" 10.20.30" );
5952 ASSERT_TRUE (v.has_value ());
6053 EXPECT_EQ (v->major , 10 );
6154 EXPECT_EQ (v->minor , 20 );
62- EXPECT_EQ (v->patch , 30 );
6355}
6456
6557TEST (ParseVersionTest, EmptyString) {
6658 EXPECT_FALSE (parseVersion (" " ).has_value ());
6759}
6860
6961TEST (ParseVersionTest, MissingPatch) {
70- EXPECT_FALSE (parseVersion (" 1.2" ).has_value ());
62+ auto v = parseVersion (" 1.2" );
63+ ASSERT_TRUE (v.has_value ());
64+ EXPECT_EQ (v->major , 1 );
65+ EXPECT_EQ (v->minor , 2 );
7166}
7267
7368TEST (ParseVersionTest, ExtraComponent) {
74- EXPECT_FALSE (parseVersion (" 1.2.3.4" ).has_value ());
69+ auto v = parseVersion (" 1.2.3.4" );
70+ ASSERT_TRUE (v.has_value ());
71+ EXPECT_EQ (v->major , 1 );
72+ EXPECT_EQ (v->minor , 2 );
73+ }
74+
75+ TEST (ParseVersionTest, PythonDevVersion) {
76+ auto v = parseVersion (" 0.0.post1.dev96+g1cdbae3db" );
77+ ASSERT_TRUE (v.has_value ());
78+ EXPECT_EQ (v->major , 0 );
79+ EXPECT_EQ (v->minor , 0 );
7580}
7681
7782TEST (ParseVersionTest, NonNumericComponents) {
7883 EXPECT_FALSE (parseVersion (" a.b.c" ).has_value ());
7984}
8085
8186TEST (ParseVersionTest, NegativeComponent) {
82- EXPECT_FALSE (parseVersion (" 1.2.-3" ).has_value ());
87+ // "1.2.-3" — trailing content after MAJOR.MINOR is ignored
88+ auto v = parseVersion (" 1.2.-3" );
89+ ASSERT_TRUE (v.has_value ());
90+ EXPECT_EQ (v->major , 1 );
91+ EXPECT_EQ (v->minor , 2 );
8392}
8493
8594TEST (ParseVersionTest, WithVPrefix) {
@@ -107,18 +116,18 @@ TEST(CheckExployVersionTest, InvalidSemver) {
107116}
108117
109118TEST (CheckExployVersionTest, VersionBelowMinimum) {
110- // kMinSupportedExployVersion is 0.1.0, so 0.0.9 is below the minimum
111- EXPECT_FALSE (checkExployVersion (" \" 0.0 .9\" " ));
119+ constexpr Version min{ 1 , 2 };
120+ EXPECT_FALSE (checkExployVersion (" \" 1.1 .9\" " , min ));
112121}
113122
114- TEST (CheckExployVersionTest, VersionAboveMaximum ) {
115- // kMaxSupportedExployVersion is 0.1.0, so 0.2.0 is above the maximum
116- EXPECT_FALSE (checkExployVersion (" \" 0 .2.0\" " ));
123+ TEST (CheckExployVersionTest, SupportedVersion ) {
124+ constexpr Version min{ 1 , 2 };
125+ EXPECT_TRUE (checkExployVersion (" \" 1 .2.0\" " , min ));
117126}
118127
119- TEST (CheckExployVersionTest, SupportedVersion ) {
120- // kMinSupportedExployVersion == kMaxSupportedExployVersion == 0.1.0
121- EXPECT_TRUE (checkExployVersion (" \" 0.1. 0\" " ));
128+ TEST (CheckExployVersionTest, VersionAboveMinimum ) {
129+ constexpr Version min{ 1 , 2 };
130+ EXPECT_TRUE (checkExployVersion (" \" 1.3. 0\" " , min ));
122131}
123132
124133} // namespace exploy::control::metadata
0 commit comments