summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Src/.StringTools.cpp.swpbin0 -> 16384 bytes
-rw-r--r--Src/StringTools.cpp23
-rw-r--r--Src/StringTools.h6
-rw-r--r--Test/.String__PadRight.cpp.swpbin0 -> 12288 bytes
-rw-r--r--Test/CMakeLists.txt1
-rw-r--r--Test/String__PadLeft.cpp44
-rw-r--r--Test/String__PadRight.cpp44
7 files changed, 117 insertions, 1 deletions
diff --git a/Src/.StringTools.cpp.swp b/Src/.StringTools.cpp.swp
new file mode 100644
index 0000000..47abbdc
--- /dev/null
+++ b/Src/.StringTools.cpp.swp
Binary files differ
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
new file mode 100644
index 0000000..de26dae
--- /dev/null
+++ b/Test/.String__PadRight.cpp.swp
Binary files differ
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;
+}