diff options
| -rw-r--r-- | Src/.StringTools.cpp.swp | bin | 0 -> 16384 bytes | |||
| -rw-r--r-- | Src/StringTools.cpp | 23 | ||||
| -rw-r--r-- | Src/StringTools.h | 6 | ||||
| -rw-r--r-- | Test/.String__PadRight.cpp.swp | bin | 0 -> 12288 bytes | |||
| -rw-r--r-- | Test/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | Test/String__PadLeft.cpp | 44 | ||||
| -rw-r--r-- | Test/String__PadRight.cpp | 44 |
7 files changed, 117 insertions, 1 deletions
diff --git a/Src/.StringTools.cpp.swp b/Src/.StringTools.cpp.swp Binary files differnew file mode 100644 index 0000000..47abbdc --- /dev/null +++ b/Src/.StringTools.cpp.swp diff --git a/Src/StringTools.cpp b/Src/StringTools.cpp index 346e1bd..fe16c93 100644 --- a/Src/StringTools.cpp +++ b/Src/StringTools.cpp @@ -95,7 +95,6 @@ std::string StringTools::Upper(const std::string& str) { std::vector<std::string> StringTools::Split(const std::string& str, const std::string& seperator) {
std::vector<std::string> toRet;
-
// Quick-accept: str length is 0
if (str.length() == 0)
toRet.push_back("");
@@ -132,3 +131,25 @@ std::vector<std::string> StringTools::Split(const std::string& str, const std::s return toRet;
}
+
+std::string StringTools::PadLeft(const std::string& str, const char pad, const std::size_t len) {
+ std::stringstream ss;
+
+ for (std::size_t i = str.length(); i < len; i++)
+ ss << pad;
+
+ ss << str;
+
+ return ss.str();
+}
+
+std::string StringTools::PadRight(const std::string& str, const char pad, const std::size_t len) {
+ std::stringstream ss;
+
+ ss << str;
+
+ for (std::size_t i = str.length(); i < len; i++)
+ ss << pad;
+
+ return ss.str();
+}
diff --git a/Src/StringTools.h b/Src/StringTools.h index d65772a..e8de59d 100644 --- a/Src/StringTools.h +++ b/Src/StringTools.h @@ -29,6 +29,12 @@ public: //! Will split a string by a string seperator
static std::vector<std::string> Split(const std::string& str, const std::string& seperator);
+ //! Will pad a string to the left to length l
+ static std::string PadLeft(const std::string& str, const char pad, const std::size_t len);
+
+ //! Will pad a string to the right to length l
+ static std::string PadRight(const std::string& str, const char pad, const std::size_t len);
+
private:
// No instanciation! >:(
StringTools();
diff --git a/Test/.String__PadRight.cpp.swp b/Test/.String__PadRight.cpp.swp Binary files differnew file mode 100644 index 0000000..de26dae --- /dev/null +++ b/Test/.String__PadRight.cpp.swp diff --git a/Test/CMakeLists.txt b/Test/CMakeLists.txt index 41ad3c9..dca5870 100644 --- a/Test/CMakeLists.txt +++ b/Test/CMakeLists.txt @@ -16,6 +16,7 @@ add_executable(Test String__Replace_Char.cpp String__Replace_String.cpp String__Split.cpp + String__PadLeft.cpp # CharTools-Tests Char__IsVowel.cpp diff --git a/Test/String__PadLeft.cpp b/Test/String__PadLeft.cpp new file mode 100644 index 0000000..e424e42 --- /dev/null +++ b/Test/String__PadLeft.cpp @@ -0,0 +1,44 @@ +#include <StringTools.h>
+#include "Catch2.h"
+
+// Tests that padding to a length shorter adds no padding
+TEST_CASE(__FILE__"/PadToShorterLength", "[Strings][PadLeft]")
+{
+ // Setup
+ const std::string in = "hello";
+
+ // Exercise
+ const std::string out = StringTools::PadLeft(in, '0', 3);
+
+ // Verify
+ REQUIRE(out == "hello");
+ return;
+}
+
+// Tests that padding to a length equal adds no padding
+TEST_CASE(__FILE__"/PadToEqualLength", "[Strings][PadLeft]")
+{
+ // Setup
+ const std::string in = "hello";
+
+ // Exercise
+ const std::string out = StringTools::PadLeft(in, '0', 5);
+
+ // Verify
+ REQUIRE(out == "hello");
+ return;
+}
+
+// Tests that adding padding works
+TEST_CASE(__FILE__"/Padding", "[Strings][PadLeft]")
+{
+ // Setup
+ const std::string in = "hello";
+
+ // Exercise
+ const std::string out = StringTools::PadLeft(in, '0', 7);
+
+ // Verify
+ REQUIRE(out == "00hello");
+ return;
+}
diff --git a/Test/String__PadRight.cpp b/Test/String__PadRight.cpp new file mode 100644 index 0000000..6846454 --- /dev/null +++ b/Test/String__PadRight.cpp @@ -0,0 +1,44 @@ +#include <StringTools.h>
+#include "Catch2.h"
+
+// Tests that padding to a length shorter adds no padding
+TEST_CASE(__FILE__"/PadToShorterLength", "[Strings][PadRight]")
+{
+ // Setup
+ const std::string in = "hello";
+
+ // Exercise
+ const std::string out = StringTools::PadRight(in, '0', 3);
+
+ // Verify
+ REQUIRE(out == "hello");
+ return;
+}
+
+// Tests that padding to a length equal adds no padding
+TEST_CASE(__FILE__"/PadToEqualLength", "[Strings][PadRight]")
+{
+ // Setup
+ const std::string in = "hello";
+
+ // Exercise
+ const std::string out = StringTools::PadRight(in, '0', 5);
+
+ // Verify
+ REQUIRE(out == "hello");
+ return;
+}
+
+// Tests that adding padding works
+TEST_CASE(__FILE__"/Padding", "[Strings][PadRight]")
+{
+ // Setup
+ const std::string in = "hello";
+
+ // Exercise
+ const std::string out = StringTools::PadRight(in, '0', 7);
+
+ // Verify
+ REQUIRE(out == "hello00");
+ return;
+}
|
