Просмотр исходного кода

Extended String class

- added "getByteData" method to receive non const
char pointer of actual string
- extended tests for String class
Patrick 3 лет назад
Родитель
Сommit
b62b551743
3 измененных файлов с 27 добавлено и 11 удалено
  1. 9 1
      source/boxing/String.cpp
  2. 7 5
      source/boxing/String.hpp
  3. 11 5
      test/cases/boxing/StringTest.cpp

+ 9 - 1
source/boxing/String.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-14
- * Changed:         2020-08-30
+ * Changed:         2020-09-19
  *
  * */
 
@@ -143,6 +143,14 @@ bool ls_std::String::equalsIgnoreCase(std::string _text) {
   return this->toLowerCase() == ls_std::String{std::move(_text)}.toLowerCase();
 }
 
+std::vector<ls_std::byte> ls_std::String::getByteData()
+{
+  std::vector<ls_std::byte> byteData(this->value.begin(), this->value.end());
+  byteData.push_back('\0');
+
+  return byteData;
+}
+
 std::string ls_std::String::padLeft(size_t _width, const char _fillCharacter) {
   return ls_std::String::_createFillContent(this->value, _width, _fillCharacter) + this->value;
 }

+ 7 - 5
source/boxing/String.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-14
- * Changed:         2020-09-04
+ * Changed:         2020-09-19
  *
  * */
 
@@ -16,6 +16,7 @@
 #include "../io/IStorable.hpp"
 #include <string>
 #include <memory>
+#include <vector>
 
 namespace ls_std {
   class String : public Class, public IBoxing, public ISerializable, public IStorable {
@@ -70,8 +71,9 @@ namespace ls_std {
       bool endsWith(const std::string& _text);
       bool equalsIgnoreCase(String _string);
       bool equalsIgnoreCase(std::string _text);
-      std::string padLeft(size_t _width, const char _fillCharacter);
-      std::string padRight(size_t _width, const char _fillCharacter);
+      std::vector<ls_std::byte> getByteData();
+      std::string padLeft(size_t _width, char _fillCharacter);
+      std::string padRight(size_t _width, char _fillCharacter);
       std::string reverse();
       void setSerializable(std::shared_ptr<ISerializable> _serializable);
       void setStorable(std::shared_ptr<IStorable> _storable);
@@ -85,8 +87,8 @@ namespace ls_std {
       std::shared_ptr<IStorable> storable {};
       std::string value {};
 
-      static std::string _buildCharacterChain(size_t _amount, const char _fillCharacter);
-      static std::string _createFillContent(const std::string& _text, size_t _width, const char _fillCharacter);
+      static std::string _buildCharacterChain(size_t _amount, char _fillCharacter);
+      static std::string _createFillContent(const std::string& _text, size_t _width, char _fillCharacter);
   };
 }
 

+ 11 - 5
test/cases/boxing/StringTest.cpp

@@ -187,6 +187,14 @@ namespace {
     ASSERT_TRUE(text.endsWith("ef"));
   }
 
+  TEST_F(StringTest, endsWithNegative)
+  {
+    ls_std::String text {};
+    text = "abcdef";
+
+    ASSERT_FALSE(text.endsWith("efg"));
+  }
+
   TEST_F(StringTest, equalsIgnoreCase)
   {
     ls_std::String text {"Hello!"};
@@ -196,12 +204,10 @@ namespace {
     ASSERT_TRUE(text.equalsIgnoreCase("HeLLO!"));
   }
 
-  TEST_F(StringTest, endsWithNegative)
+  TEST_F(StringTest, getByteData)
   {
-    ls_std::String text {};
-    text = "abcdef";
-
-    ASSERT_FALSE(text.endsWith("efg"));
+    ls_std::String text {"Hallo!"};
+    ASSERT_STREQ("Hallo!", text.getByteData().data());
   }
 
   TEST_F(StringTest, padLeft)