summaryrefslogtreecommitdiff
path: root/test/str.cc
diff options
context:
space:
mode:
authorJoel Klinghed <the_jk@spawned.biz>2026-01-02 22:42:31 +0100
committerJoel Klinghed <the_jk@spawned.biz>2026-01-02 22:42:31 +0100
commit6ed8f5151719fbc14ec0ac6d28a346d1f74cf2ca (patch)
treeebe7588e89e1aa2ae5376acf85f3a3a7b2ec7e10 /test/str.cc
Initial commitHEADmain
Diffstat (limited to 'test/str.cc')
-rw-r--r--test/str.cc164
1 files changed, 164 insertions, 0 deletions
diff --git a/test/str.cc b/test/str.cc
new file mode 100644
index 0000000..0184ad5
--- /dev/null
+++ b/test/str.cc
@@ -0,0 +1,164 @@
+#include "str.hh"
+
+#include <gtest/gtest.h>
+
+TEST(str, split) {
+ auto ret = str::split("");
+ EXPECT_EQ(0, ret.size());
+
+ ret = str::split("", ' ', true);
+ ASSERT_EQ(1, ret.size());
+ EXPECT_EQ("", ret[0]);
+
+ ret = str::split(" ");
+ EXPECT_EQ(0, ret.size());
+
+ ret = str::split(" ", ' ', true);
+ ASSERT_EQ(2, ret.size());
+ EXPECT_EQ("", ret[0]);
+ EXPECT_EQ("", ret[1]);
+
+ ret = str::split(" a b ");
+ ASSERT_EQ(2, ret.size());
+ EXPECT_EQ("a", ret[0]);
+ EXPECT_EQ("b", ret[1]);
+
+ ret = str::split(" a b ", ' ', true);
+ ASSERT_EQ(4, ret.size());
+ EXPECT_EQ("", ret[0]);
+ EXPECT_EQ("a", ret[1]);
+ EXPECT_EQ("b", ret[2]);
+ EXPECT_EQ("", ret[3]);
+
+ ret = str::split(" a b", ' ', true);
+ ASSERT_EQ(3, ret.size());
+ EXPECT_EQ("", ret[0]);
+ EXPECT_EQ("a", ret[1]);
+ EXPECT_EQ("b", ret[2]);
+}
+
+TEST(str, split2) {
+ auto ret = str::split("", "\r\n");
+ EXPECT_EQ(0, ret.size());
+
+ ret = str::split("", "\r\n", true);
+ ASSERT_EQ(1, ret.size());
+ EXPECT_EQ("", ret[0]);
+
+ ret = str::split("\r\n", "\r\n");
+ EXPECT_EQ(0, ret.size());
+
+ ret = str::split("\r\n", "\r\n", true);
+ ASSERT_EQ(2, ret.size());
+ EXPECT_EQ("", ret[0]);
+ EXPECT_EQ("", ret[1]);
+
+ ret = str::split("\r\na\r\nb\r\n", "\r\n");
+ ASSERT_EQ(2, ret.size());
+ EXPECT_EQ("a", ret[0]);
+ EXPECT_EQ("b", ret[1]);
+
+ ret = str::split("\r\na\r\nb\r\n", "\r\n", true);
+ ASSERT_EQ(4, ret.size());
+ EXPECT_EQ("", ret[0]);
+ EXPECT_EQ("a", ret[1]);
+ EXPECT_EQ("b", ret[2]);
+ EXPECT_EQ("", ret[3]);
+
+ ret = str::split("\r\na\r\nb", "\r\n", true);
+ ASSERT_EQ(3, ret.size());
+ EXPECT_EQ("", ret[0]);
+ EXPECT_EQ("a", ret[1]);
+ EXPECT_EQ("b", ret[2]);
+
+ ret = str::split("\ra\nb", "\r\n");
+ ASSERT_EQ(1, ret.size());
+ EXPECT_EQ("\ra\nb", ret[0]);
+}
+
+TEST(str, trim) {
+ auto ret = str::trim("");
+ EXPECT_EQ("", ret);
+
+ ret = str::trim(" ");
+ EXPECT_EQ("", ret);
+
+ ret = str::trim(" ");
+ EXPECT_EQ("", ret);
+
+ ret = str::trim("foo");
+ EXPECT_EQ("foo", ret);
+
+ ret = str::trim(" foo");
+ EXPECT_EQ("foo", ret);
+
+ ret = str::trim(" foo ");
+ EXPECT_EQ("foo", ret);
+
+ ret = str::trim("foo ");
+ EXPECT_EQ("foo", ret);
+
+ ret = str::trim(" foo bar ");
+ EXPECT_EQ("foo bar", ret);
+
+ ret = str::trim("\tfoo bar\r\n");
+ EXPECT_EQ("foo bar", ret);
+}
+
+TEST(str, ltrim) {
+ auto ret = str::ltrim("");
+ EXPECT_EQ("", ret);
+
+ ret = str::ltrim(" ");
+ EXPECT_EQ("", ret);
+
+ ret = str::ltrim(" ");
+ EXPECT_EQ("", ret);
+
+ ret = str::ltrim("foo");
+ EXPECT_EQ("foo", ret);
+
+ ret = str::ltrim(" foo");
+ EXPECT_EQ("foo", ret);
+
+ ret = str::ltrim(" foo ");
+ EXPECT_EQ("foo ", ret);
+
+ ret = str::ltrim("foo ");
+ EXPECT_EQ("foo ", ret);
+
+ ret = str::ltrim(" foo bar ");
+ EXPECT_EQ("foo bar ", ret);
+
+ ret = str::ltrim("\tfoo bar\r\n");
+ EXPECT_EQ("foo bar\r\n", ret);
+}
+
+TEST(str, rtrim) {
+ auto ret = str::rtrim("");
+ EXPECT_EQ("", ret);
+
+ ret = str::rtrim(" ");
+ EXPECT_EQ("", ret);
+
+ ret = str::rtrim(" ");
+ EXPECT_EQ("", ret);
+
+ ret = str::rtrim("foo");
+ EXPECT_EQ("foo", ret);
+
+ ret = str::rtrim(" foo");
+ EXPECT_EQ(" foo", ret);
+
+ ret = str::rtrim(" foo ");
+ EXPECT_EQ(" foo", ret);
+
+ ret = str::rtrim("foo ");
+ EXPECT_EQ("foo", ret);
+
+ ret = str::rtrim(" foo bar ");
+ EXPECT_EQ(" foo bar", ret);
+
+ ret = str::rtrim("\tfoo bar\r\n");
+ EXPECT_EQ("\tfoo bar", ret);
+}