summaryrefslogtreecommitdiff
path: root/src/common/strings_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/strings_test.cpp')
-rw-r--r--src/common/strings_test.cpp162
1 files changed, 147 insertions, 15 deletions
diff --git a/src/common/strings_test.cpp b/src/common/strings_test.cpp
index b6a6f67..fa04f1c 100644
--- a/src/common/strings_test.cpp
+++ b/src/common/strings_test.cpp
@@ -1,4 +1,6 @@
-#include "../../src/common/strings.hpp"
+#include "strings.hpp"
+
+#include <algorithm>
#include <gtest/gtest.h>
@@ -22,6 +24,118 @@ TYPED_TEST_P(StringTest, basic)
const FString *base = hi.base();
}
+TYPED_TEST_P(StringTest, order)
+{
+ TypeParam a;
+ TypeParam b("Hello");
+ TypeParam c("Hello,");
+ TypeParam d("World!");
+
+ // not using EXPECT_LT, etc. for better visibility
+
+ EXPECT_FALSE(a < a);
+ EXPECT_TRUE(a < b);
+ EXPECT_TRUE(a < c);
+ EXPECT_TRUE(a < d);
+ EXPECT_FALSE(b < a);
+ EXPECT_FALSE(b < b);
+ EXPECT_TRUE(b < c);
+ EXPECT_TRUE(b < d);
+ EXPECT_FALSE(c < a);
+ EXPECT_FALSE(c < b);
+ EXPECT_FALSE(c < c);
+ EXPECT_TRUE(c < d);
+ EXPECT_FALSE(d < a);
+ EXPECT_FALSE(d < b);
+ EXPECT_FALSE(d < c);
+ EXPECT_FALSE(d < d);
+
+ EXPECT_TRUE(a <= a);
+ EXPECT_TRUE(a <= b);
+ EXPECT_TRUE(a <= c);
+ EXPECT_TRUE(a <= d);
+ EXPECT_FALSE(b <= a);
+ EXPECT_TRUE(b <= b);
+ EXPECT_TRUE(b <= c);
+ EXPECT_TRUE(b <= d);
+ EXPECT_FALSE(c <= a);
+ EXPECT_FALSE(c <= b);
+ EXPECT_TRUE(c <= c);
+ EXPECT_TRUE(c <= d);
+ EXPECT_FALSE(d <= a);
+ EXPECT_FALSE(d <= b);
+ EXPECT_FALSE(d <= c);
+ EXPECT_TRUE(d <= d);
+
+ EXPECT_TRUE(a >= a);
+ EXPECT_FALSE(a >= b);
+ EXPECT_FALSE(a >= c);
+ EXPECT_FALSE(a >= d);
+ EXPECT_TRUE(b >= a);
+ EXPECT_TRUE(b >= b);
+ EXPECT_FALSE(b >= c);
+ EXPECT_FALSE(b >= d);
+ EXPECT_TRUE(c >= a);
+ EXPECT_TRUE(c >= b);
+ EXPECT_TRUE(c >= c);
+ EXPECT_FALSE(c >= d);
+ EXPECT_TRUE(d >= a);
+ EXPECT_TRUE(d >= b);
+ EXPECT_TRUE(d >= c);
+ EXPECT_TRUE(d >= d);
+
+ EXPECT_FALSE(a > a);
+ EXPECT_FALSE(a > b);
+ EXPECT_FALSE(a > c);
+ EXPECT_FALSE(a > d);
+ EXPECT_TRUE(b > a);
+ EXPECT_FALSE(b > b);
+ EXPECT_FALSE(b > c);
+ EXPECT_FALSE(b > d);
+ EXPECT_TRUE(c > a);
+ EXPECT_TRUE(c > b);
+ EXPECT_FALSE(c > c);
+ EXPECT_FALSE(c > d);
+ EXPECT_TRUE(d > a);
+ EXPECT_TRUE(d > b);
+ EXPECT_TRUE(d > c);
+ EXPECT_FALSE(d > d);
+
+ EXPECT_TRUE(a == a);
+ EXPECT_FALSE(a == b);
+ EXPECT_FALSE(a == c);
+ EXPECT_FALSE(a == d);
+ EXPECT_FALSE(b == a);
+ EXPECT_TRUE(b == b);
+ EXPECT_FALSE(b == c);
+ EXPECT_FALSE(b == d);
+ EXPECT_FALSE(c == a);
+ EXPECT_FALSE(c == b);
+ EXPECT_TRUE(c == c);
+ EXPECT_FALSE(c == d);
+ EXPECT_FALSE(d == a);
+ EXPECT_FALSE(d == b);
+ EXPECT_FALSE(d == c);
+ EXPECT_TRUE(d == d);
+
+ EXPECT_FALSE(a != a);
+ EXPECT_TRUE(a != b);
+ EXPECT_TRUE(a != c);
+ EXPECT_TRUE(a != d);
+ EXPECT_TRUE(b != a);
+ EXPECT_FALSE(b != b);
+ EXPECT_TRUE(b != c);
+ EXPECT_TRUE(b != d);
+ EXPECT_TRUE(c != a);
+ EXPECT_TRUE(c != b);
+ EXPECT_FALSE(c != c);
+ EXPECT_TRUE(c != d);
+ EXPECT_TRUE(d != a);
+ EXPECT_TRUE(d != b);
+ EXPECT_TRUE(d != c);
+ EXPECT_FALSE(d != d);
+}
+
TYPED_TEST_P(StringTest, iterators)
{
TypeParam hi("Hello");
@@ -39,8 +153,12 @@ TYPED_TEST_P(StringTest, xslice)
EXPECT_EQ("Hello,", hi.xslice_h(6));
EXPECT_EQ("World!", hi.xrslice_t(6));
EXPECT_EQ("Hello, ", hi.xrslice_h(6));
+ typename TypeParam::iterator it = std::find(hi.begin(), hi.end(), ' ');
+ EXPECT_EQ(" World!", hi.xislice_t(it));
+ EXPECT_EQ("Hello,", hi.xislice_h(it));
EXPECT_EQ("World", hi.xlslice(7, 5));
EXPECT_EQ("World", hi.xpslice(7, 12));
+ EXPECT_EQ("World", hi.xislice(hi.begin() + 7, hi.begin() + 12));
EXPECT_TRUE(hi.startswith("Hello"));
EXPECT_TRUE(hi.endswith("World!"));
}
@@ -52,8 +170,12 @@ TYPED_TEST_P(StringTest, oslice)
EXPECT_EQ("Hello,", hi.oslice_h(6));
EXPECT_EQ("World!", hi.orslice_t(6));
EXPECT_EQ("Hello, ", hi.orslice_h(6));
+ typename TypeParam::iterator it = std::find(hi.begin(), hi.end(), ' ');
+ EXPECT_EQ(" World!", hi.oislice_t(it));
+ EXPECT_EQ("Hello,", hi.oislice_h(it));
EXPECT_EQ("World", hi.olslice(7, 5));
EXPECT_EQ("World", hi.opslice(7, 12));
+ EXPECT_EQ("World", hi.oislice(hi.begin() + 7, hi.begin() + 12));
}
TYPED_TEST_P(StringTest, convert)
@@ -67,6 +189,8 @@ TYPED_TEST_P(StringTest, convert)
ZString z = "z";
Xstring x = "x";
VString<255> v = "v";
+ const char l[] = "l";
+ VString<5> hi = "hello";
TypeParam f2 = f;
TypeParam t2 = t;
@@ -74,32 +198,40 @@ TYPED_TEST_P(StringTest, convert)
TypeParam z2 = z;
TypeParam x2 = x;
TypeParam v2 = v;
+ TypeParam l2 = l;
+ TypeParam hi2 = hi;
- EXPECT_EQ(f2, f);
- EXPECT_EQ(t2, t);
- EXPECT_EQ(s2, s);
- EXPECT_EQ(z2, z);
- EXPECT_EQ(x2, x);
- EXPECT_EQ(v2, v);
+ EXPECT_EQ(f, f2);
+ EXPECT_EQ(t, t2);
+ EXPECT_EQ(s, s2);
+ EXPECT_EQ(z, z2);
+ EXPECT_EQ(x, x2);
+ EXPECT_EQ(v, v2);
+ EXPECT_EQ(l, l2);
+ EXPECT_EQ(hi, hi2);
- TypeParam f3, t3, s3, z3, x3, v3;
+ TypeParam f3, t3, s3, z3, x3, v3, l3, hi3;
f3 = f;
t3 = t;
s3 = s;
z3 = z;
x3 = x;
v3 = v;
+ l3 = l;
+ hi3 = hi;
- EXPECT_EQ(f3, f);
- EXPECT_EQ(t3, t);
- EXPECT_EQ(s3, s);
- EXPECT_EQ(z3, z);
- EXPECT_EQ(x3, x);
- EXPECT_EQ(v3, v);
+ EXPECT_EQ(f, f3);
+ EXPECT_EQ(t, t3);
+ EXPECT_EQ(s, s3);
+ EXPECT_EQ(z, z3);
+ EXPECT_EQ(x, x3);
+ EXPECT_EQ(v, v3);
+ EXPECT_EQ(l, l3);
+ EXPECT_EQ(hi, hi3);
}
REGISTER_TYPED_TEST_CASE_P(StringTest,
- basic, iterators, xslice, oslice, convert);
+ basic, order, iterators, xslice, oslice, convert);
typedef ::testing::Types<
FString, TString, SString, ZString, XString, VString<255>