Sfoglia il codice sorgente

Improve Version class

- add empty version string check to improve performance
- extend Version class tests
Patrick-Christopher Mattulat 3 anni fa
parent
commit
4108027acc

+ 2 - 2
include/ls_std/base/Version.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-09-27
- * Changed:         2021-04-23
+ * Changed:         2021-04-24
  *
  * */
 
@@ -16,7 +16,7 @@
 
 namespace ls_std
 {
-  class Version : public ISerializable
+  class Version : public ls_std::ISerializable
   {
     public:
 

+ 11 - 6
source/ls_std/base/Version.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-09-28
- * Changed:         2021-04-23
+ * Changed:         2021-04-24
  *
  * */
 
@@ -30,13 +30,11 @@ ls_std::byte_field ls_std::Version::marshal()
 void ls_std::Version::unmarshal(const ls_std::byte_field &_data)
 {
   std::string field = _data;
-  std::string subSequence{};
-  size_t position;
 
   if (ls_std::Version::_isValid(_data))
   {
-    position = field.find('.');
-    subSequence = field.substr(0, position);
+    size_t position = field.find('.');
+    std::string subSequence = field.substr(0, position);
     this->majorVersion = std::stoi(subSequence);
     field.erase(0, position + 1);
 
@@ -86,6 +84,13 @@ void ls_std::Version::setPatchVersion(ls_std::version_type _patch)
 
 bool ls_std::Version::_isValid(const std::string &_versionString)
 {
+  bool isValidVersionString{};
   static std::regex versionRegex{R"(\d+[.]\d+[.]\d+)"};
-  return std::regex_match(_versionString.begin(), _versionString.end(), versionRegex);
+
+  if (!_versionString.empty())
+  {
+    isValidVersionString = std::regex_match(_versionString.begin(), _versionString.end(), versionRegex);
+  }
+
+  return isValidVersionString;
 }

+ 7 - 2
test/cases/base/VersionTest.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-09-28
- * Changed:         2021-04-23
+ * Changed:         2021-04-24
  *
  * */
 
@@ -70,7 +70,12 @@ namespace
     ASSERT_TRUE(ls_std::Version::isValid("2.5.1"));
   }
 
-  TEST_F(VersionTest, isValidNegative)
+  TEST_F(VersionTest, isValid_emptyString)
+  {
+    ASSERT_FALSE(ls_std::Version::isValid(""));
+  }
+
+  TEST_F(VersionTest, isValid_noValidVersionString)
   {
     ASSERT_FALSE(ls_std::Version::isValid("v2020.1.2"));
     ASSERT_FALSE(ls_std::Version::isValid("2.5"));