Commit 8bbf41f7 authored by Philipp A. Hartmann's avatar Philipp A. Hartmann

update string API tests

parent db8f4557
...@@ -23,6 +23,25 @@ TEST(Value, assignment_operator) { ...@@ -23,6 +23,25 @@ TEST(Value, assignment_operator) {
y = x; y = x;
EXPECT_TRUE(x.IsNull()); // move semantic EXPECT_TRUE(x.IsNull()); // move semantic
EXPECT_EQ(1234, y.GetInt()); EXPECT_EQ(1234, y.GetInt());
y = 5678;
EXPECT_TRUE(y.IsInt());
EXPECT_EQ(5678, y.GetInt());
x = "Hello";
EXPECT_TRUE(x.IsString());
EXPECT_STREQ(x.GetString(),"Hello");
y = StringRef(x.GetString(),x.GetStringLength());
EXPECT_TRUE(y.IsString());
EXPECT_EQ(y.GetString(),x.GetString());
EXPECT_EQ(y.GetStringLength(),x.GetStringLength());
static char mstr[] = "mutable";
// y = mstr; // should not compile
y = StringRef(mstr);
EXPECT_TRUE(y.IsString());
EXPECT_EQ(y.GetString(),mstr);
} }
template <typename Value> template <typename Value>
...@@ -350,8 +369,8 @@ TEST(Value, Double) { ...@@ -350,8 +369,8 @@ TEST(Value, Double) {
} }
TEST(Value, String) { TEST(Value, String) {
// Constructor with const string // Construction with const string
Value x("Hello", 5); Value x("Hello", 5); // literal
EXPECT_EQ(kStringType, x.GetType()); EXPECT_EQ(kStringType, x.GetType());
EXPECT_TRUE(x.IsString()); EXPECT_TRUE(x.IsString());
EXPECT_STREQ("Hello", x.GetString()); EXPECT_STREQ("Hello", x.GetString());
...@@ -365,9 +384,41 @@ TEST(Value, String) { ...@@ -365,9 +384,41 @@ TEST(Value, String) {
EXPECT_FALSE(x.IsObject()); EXPECT_FALSE(x.IsObject());
EXPECT_FALSE(x.IsArray()); EXPECT_FALSE(x.IsArray());
static const char cstr[] = "World"; // const array
Value(cstr).Swap(x);
EXPECT_TRUE(x.IsString());
EXPECT_EQ(x.GetString(), cstr);
EXPECT_EQ(x.GetStringLength(), sizeof(cstr)-1);
static char mstr[] = "Howdy"; // non-const array
// Value(mstr).Swap(x); // should not compile
Value(StringRef(mstr)).Swap(x);
EXPECT_TRUE(x.IsString());
EXPECT_EQ(x.GetString(), mstr);
EXPECT_EQ(x.GetStringLength(), sizeof(mstr)-1);
strncpy(mstr,"Hello", sizeof(mstr));
EXPECT_STREQ(x.GetString(), "Hello");
const char* pstr = cstr;
//Value(pstr).Swap(x); // should not compile
Value(StringRef(pstr)).Swap(x);
EXPECT_TRUE(x.IsString());
EXPECT_EQ(x.GetString(), cstr);
EXPECT_EQ(x.GetStringLength(), sizeof(cstr)-1);
char* mpstr = mstr;
Value(StringRef(mpstr,sizeof(mstr)-1)).Swap(x);
EXPECT_TRUE(x.IsString());
EXPECT_EQ(x.GetString(), mstr);
EXPECT_EQ(x.GetStringLength(), 5u);
EXPECT_STREQ(x.GetString(), "Hello");
// Constructor with copy string // Constructor with copy string
MemoryPoolAllocator<> allocator; MemoryPoolAllocator<> allocator;
Value c(x.GetString(), x.GetStringLength(), allocator); Value c(x.GetString(), x.GetStringLength(), allocator);
EXPECT_NE(x.GetString(), c.GetString());
EXPECT_EQ(x.GetStringLength(), c.GetStringLength());
EXPECT_STREQ(x.GetString(), c.GetString());
//x.SetString("World"); //x.SetString("World");
x.SetString("World", 5); x.SetString("World", 5);
EXPECT_STREQ("Hello", c.GetString()); EXPECT_STREQ("Hello", c.GetString());
...@@ -381,11 +432,31 @@ TEST(Value, String) { ...@@ -381,11 +432,31 @@ TEST(Value, String) {
// SetConsttring() // SetConsttring()
Value z; Value z;
//z.SetString("Hello"); z.SetString("Hello");
EXPECT_TRUE(x.IsString());
z.SetString("Hello", 5); z.SetString("Hello", 5);
EXPECT_STREQ("Hello", z.GetString()); EXPECT_STREQ("Hello", z.GetString());
EXPECT_STREQ("Hello", z.GetString());
EXPECT_EQ(5u, z.GetStringLength()); EXPECT_EQ(5u, z.GetStringLength());
z.SetString("Hello");
EXPECT_TRUE(z.IsString());
EXPECT_STREQ("Hello", z.GetString());
//z.SetString(mstr); // should not compile
//z.SetString(pstr); // should not compile
z.SetString(StringRef(mstr));
EXPECT_TRUE(z.IsString());
EXPECT_STREQ(z.GetString(), mstr);
z.SetString(cstr);
EXPECT_TRUE(z.IsString());
EXPECT_EQ(cstr, z.GetString());
z = cstr;
EXPECT_TRUE(z.IsString());
EXPECT_EQ(cstr, z.GetString());
// SetString() // SetString()
char s[] = "World"; char s[] = "World";
Value w; Value w;
...@@ -424,11 +495,13 @@ TEST(Value, Array) { ...@@ -424,11 +495,13 @@ TEST(Value, Array) {
x.PushBack(v, allocator); x.PushBack(v, allocator);
v.SetInt(123); v.SetInt(123);
x.PushBack(v, allocator); x.PushBack(v, allocator);
//x.PushBack((const char*)"foo", allocator); // should not compile
x.PushBack("foo", allocator);
EXPECT_FALSE(x.Empty()); EXPECT_FALSE(x.Empty());
EXPECT_EQ(4u, x.Size()); EXPECT_EQ(5u, x.Size());
EXPECT_FALSE(y.Empty()); EXPECT_FALSE(y.Empty());
EXPECT_EQ(4u, y.Size()); EXPECT_EQ(5u, y.Size());
EXPECT_TRUE(x[SizeType(0)].IsNull()); EXPECT_TRUE(x[SizeType(0)].IsNull());
EXPECT_TRUE(x[1u].IsTrue()); EXPECT_TRUE(x[1u].IsTrue());
EXPECT_TRUE(x[2u].IsFalse()); EXPECT_TRUE(x[2u].IsFalse());
...@@ -439,6 +512,8 @@ TEST(Value, Array) { ...@@ -439,6 +512,8 @@ TEST(Value, Array) {
EXPECT_TRUE(y[2u].IsFalse()); EXPECT_TRUE(y[2u].IsFalse());
EXPECT_TRUE(y[3u].IsInt()); EXPECT_TRUE(y[3u].IsInt());
EXPECT_EQ(123, y[3u].GetInt()); EXPECT_EQ(123, y[3u].GetInt());
EXPECT_TRUE(y[4u].IsString());
EXPECT_STREQ("foo", y[4u].GetString());
// iterator // iterator
Value::ValueIterator itr = x.Begin(); Value::ValueIterator itr = x.Begin();
...@@ -454,6 +529,10 @@ TEST(Value, Array) { ...@@ -454,6 +529,10 @@ TEST(Value, Array) {
EXPECT_TRUE(itr != x.End()); EXPECT_TRUE(itr != x.End());
EXPECT_TRUE(itr->IsInt()); EXPECT_TRUE(itr->IsInt());
EXPECT_EQ(123, itr->GetInt()); EXPECT_EQ(123, itr->GetInt());
++itr;
EXPECT_TRUE(itr != x.End());
EXPECT_TRUE(itr->IsString());
EXPECT_STREQ("foo", itr->GetString());
// const iterator // const iterator
Value::ConstValueIterator citr = y.Begin(); Value::ConstValueIterator citr = y.Begin();
...@@ -469,13 +548,18 @@ TEST(Value, Array) { ...@@ -469,13 +548,18 @@ TEST(Value, Array) {
EXPECT_TRUE(citr != y.End()); EXPECT_TRUE(citr != y.End());
EXPECT_TRUE(citr->IsInt()); EXPECT_TRUE(citr->IsInt());
EXPECT_EQ(123, citr->GetInt()); EXPECT_EQ(123, citr->GetInt());
++citr;
EXPECT_TRUE(citr != y.End());
EXPECT_TRUE(citr->IsString());
EXPECT_STREQ("foo", citr->GetString());
// PopBack() // PopBack()
x.PopBack(); x.PopBack();
EXPECT_EQ(3u, x.Size()); EXPECT_EQ(4u, x.Size());
EXPECT_TRUE(y[SizeType(0)].IsNull()); EXPECT_TRUE(y[SizeType(0)].IsNull());
EXPECT_TRUE(y[1].IsTrue()); EXPECT_TRUE(y[1u].IsTrue());
EXPECT_TRUE(y[2].IsFalse()); EXPECT_TRUE(y[2u].IsFalse());
EXPECT_TRUE(y[3u].IsInt());
// Clear() // Clear()
x.Clear(); x.Clear();
...@@ -502,16 +586,13 @@ TEST(Value, Object) { ...@@ -502,16 +586,13 @@ TEST(Value, Object) {
EXPECT_TRUE(y.IsObject()); EXPECT_TRUE(y.IsObject());
// AddMember() // AddMember()
Value name("A", 1); x.AddMember("A", "Apple", allocator);
Value value("Apple", 5);
x.AddMember(name, value, allocator); Value value("Banana", 6);
//name.SetString("B"); x.AddMember("B", "Banana", allocator);
name.SetString("B", 1);
//value.SetString("Banana");
value.SetString("Banana", 6);
x.AddMember(name, value, allocator);
// Tests a member with null character // Tests a member with null character
Value name;
const Value C0D("C\0D", 3); const Value C0D("C\0D", 3);
name.SetString(C0D.GetString(), 3); name.SetString(C0D.GetString(), 3);
value.SetString("CherryD", 7); value.SetString("CherryD", 7);
...@@ -523,7 +604,7 @@ TEST(Value, Object) { ...@@ -523,7 +604,7 @@ TEST(Value, Object) {
EXPECT_TRUE(y.HasMember("A")); EXPECT_TRUE(y.HasMember("A"));
EXPECT_TRUE(y.HasMember("B")); EXPECT_TRUE(y.HasMember("B"));
name.SetString("C\0D", 3); name.SetString("C\0D");
EXPECT_TRUE(x.HasMember(name)); EXPECT_TRUE(x.HasMember(name));
EXPECT_TRUE(y.HasMember(name)); EXPECT_TRUE(y.HasMember(name));
...@@ -617,6 +698,7 @@ TEST(Value, BigNestedObject) { ...@@ -617,6 +698,7 @@ TEST(Value, BigNestedObject) {
char name1[10]; char name1[10];
sprintf(name1, "%d", i); sprintf(name1, "%d", i);
// Value name(name1); // should not compile
Value name(name1, (SizeType)strlen(name1), allocator); Value name(name1, (SizeType)strlen(name1), allocator);
Value object(kObjectType); Value object(kObjectType);
...@@ -629,6 +711,7 @@ TEST(Value, BigNestedObject) { ...@@ -629,6 +711,7 @@ TEST(Value, BigNestedObject) {
object.AddMember(name, number, allocator); object.AddMember(name, number, allocator);
} }
// x.AddMember(name1, object, allocator); // should not compile
x.AddMember(name, object, allocator); x.AddMember(name, object, allocator);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment