summaryrefslogtreecommitdiff
path: root/src/common/strings_test.cpp
diff options
context:
space:
mode:
authorBen Longbons <b.r.longbons@gmail.com>2013-09-26 23:55:29 -0700
committerBen Longbons <b.r.longbons@gmail.com>2013-10-05 13:42:45 -0700
commitcaae1e38d0d239f4f7088a64526fe1d2f6587999 (patch)
tree42ba875885f7593c070da93f828b7ae38ea2dc7c /src/common/strings_test.cpp
parent06c411ef291e1f608487989b0da63aefbbdfefc1 (diff)
downloadtmwa-caae1e38d0d239f4f7088a64526fe1d2f6587999.tar.gz
tmwa-caae1e38d0d239f4f7088a64526fe1d2f6587999.tar.bz2
tmwa-caae1e38d0d239f4f7088a64526fe1d2f6587999.tar.xz
tmwa-caae1e38d0d239f4f7088a64526fe1d2f6587999.zip
Split string header into pieces
Diffstat (limited to 'src/common/strings_test.cpp')
-rw-r--r--src/common/strings_test.cpp276
1 files changed, 0 insertions, 276 deletions
diff --git a/src/common/strings_test.cpp b/src/common/strings_test.cpp
deleted file mode 100644
index fa04f1c..0000000
--- a/src/common/strings_test.cpp
+++ /dev/null
@@ -1,276 +0,0 @@
-#include "strings.hpp"
-
-#include <algorithm>
-
-#include <gtest/gtest.h>
-
-template<typename T>
-class StringTest : public ::testing::Test
-{
-};
-TYPED_TEST_CASE_P(StringTest);
-
-TYPED_TEST_P(StringTest, basic)
-{
- TypeParam hi("Hello");
- EXPECT_EQ(5, hi.size());
- EXPECT_EQ(hi, hi);
- const char hi2[] = "Hello\0random garbage";
- EXPECT_EQ(hi, hi2);
- TypeParam hi0;
- EXPECT_EQ(0, hi0.size());
-
- __attribute__((unused))
- 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");
- EXPECT_EQ(hi.begin(), hi.begin());
- EXPECT_NE(hi.begin(), hi.end());
- EXPECT_EQ(5, std::distance(hi.begin(), hi.end()));
- const char *hi2 = "Hello";
- EXPECT_TRUE(std::equal(hi.begin(), hi.end(), hi2));
-}
-
-TYPED_TEST_P(StringTest, xslice)
-{
- TypeParam hi("Hello, World!");
- EXPECT_EQ(" World!", hi.xslice_t(6));
- 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!"));
-}
-
-TYPED_TEST_P(StringTest, oslice)
-{
- TypeParam hi("Hello, World!");
- EXPECT_EQ(" World!", hi.oslice_t(6));
- 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)
-{
- constexpr bool is_zstring = std::is_same<TypeParam, ZString>::value;
- typedef typename std::conditional<is_zstring, TString, SString>::type Sstring;
- typedef typename std::conditional<is_zstring, ZString, XString>::type Xstring;
- FString f = "f";
- TString t = "t";
- Sstring s = "s";
- ZString z = "z";
- Xstring x = "x";
- VString<255> v = "v";
- const char l[] = "l";
- VString<5> hi = "hello";
-
- TypeParam f2 = f;
- TypeParam t2 = t;
- TypeParam s2 = s;
- TypeParam z2 = z;
- TypeParam x2 = x;
- TypeParam v2 = v;
- TypeParam l2 = l;
- TypeParam hi2 = hi;
-
- 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, l3, hi3;
- f3 = f;
- t3 = t;
- s3 = s;
- z3 = z;
- x3 = x;
- v3 = v;
- l3 = l;
- hi3 = hi;
-
- 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, order, iterators, xslice, oslice, convert);
-
-typedef ::testing::Types<
- FString, TString, SString, ZString, XString, VString<255>
-> MostStringTypes;
-INSTANTIATE_TYPED_TEST_CASE_P(StringStuff, StringTest, MostStringTypes);
-
-TEST(VStringTest, basic)
-{
- VString<5> hi = "Hello";
- EXPECT_EQ(5, hi.size());
- EXPECT_EQ(hi, hi);
- // truncation
- VString<5> hi2(ZString::really_construct_from_a_pointer, "Hello, world!");
- EXPECT_EQ(5, hi2.size());
- EXPECT_EQ(hi, hi2);
- // short
- hi = "hi";
- EXPECT_EQ(2, hi.size());
- VString<5> hi0;
- EXPECT_EQ(0, hi0.size());
-}
-
-template<typename T>
-class NulStringTest : public ::testing::Test
-{
-};
-TYPED_TEST_CASE_P(NulStringTest);
-
-TYPED_TEST_P(NulStringTest, basic)
-{
- TypeParam hi("hello");
- EXPECT_EQ(hi.size(), strlen(hi.c_str()));
- EXPECT_STREQ("hello", hi.c_str());
-}
-
-REGISTER_TYPED_TEST_CASE_P(NulStringTest,
- basic);
-
-typedef ::testing::Types<
- FString, TString, ZString, VString<255>
-> NulStringTypes;
-INSTANTIATE_TYPED_TEST_CASE_P(NulStringStuff, NulStringTest, NulStringTypes);