mirror of
https://github.com/Tencent/rapidjson.git
synced 2025-10-27 11:06:53 +01:00
Add Pointer default/copy constructor, assignment operator. Test constructor with tokens
This commit is contained in:
@@ -166,6 +166,82 @@ TEST(Pointer, Stringify) {
|
||||
}
|
||||
}
|
||||
|
||||
// Construct a Pointer with static tokens, no dynamic allocation involved.
|
||||
#define NAME(s) { s, sizeof(s) / sizeof(s[0]) - 1, Pointer::kInvalidIndex }
|
||||
#define INDEX(i) { #i, sizeof(#i) - 1, i }
|
||||
|
||||
static const Pointer::Token kTokens[] = { NAME("foo"), INDEX(0) }; // equivalent to "/foo/0"
|
||||
|
||||
#undef NAME
|
||||
#undef INDEX
|
||||
|
||||
TEST(Pointer, ConstructorWithToken) {
|
||||
Pointer p(kTokens, sizeof(kTokens) / sizeof(kTokens[0]));
|
||||
EXPECT_TRUE(p.IsValid());
|
||||
EXPECT_EQ(2, p.GetTokenCount());
|
||||
EXPECT_EQ(3, p.GetTokens()[0].length);
|
||||
EXPECT_STREQ("foo", p.GetTokens()[0].name);
|
||||
EXPECT_EQ(1, p.GetTokens()[1].length);
|
||||
EXPECT_STREQ("0", p.GetTokens()[1].name);
|
||||
EXPECT_EQ(0, p.GetTokens()[1].index);
|
||||
}
|
||||
|
||||
TEST(Pointer, CopyConstructor) {
|
||||
{
|
||||
Pointer p("/foo/0");
|
||||
Pointer q(p);
|
||||
EXPECT_TRUE(q.IsValid());
|
||||
EXPECT_EQ(2, q.GetTokenCount());
|
||||
EXPECT_EQ(3, q.GetTokens()[0].length);
|
||||
EXPECT_STREQ("foo", q.GetTokens()[0].name);
|
||||
EXPECT_EQ(1, q.GetTokens()[1].length);
|
||||
EXPECT_STREQ("0", q.GetTokens()[1].name);
|
||||
EXPECT_EQ(0, q.GetTokens()[1].index);
|
||||
}
|
||||
|
||||
// Static tokens
|
||||
{
|
||||
Pointer p(kTokens, sizeof(kTokens) / sizeof(kTokens[0]));
|
||||
Pointer q(p);
|
||||
EXPECT_TRUE(q.IsValid());
|
||||
EXPECT_EQ(2, q.GetTokenCount());
|
||||
EXPECT_EQ(3, q.GetTokens()[0].length);
|
||||
EXPECT_STREQ("foo", q.GetTokens()[0].name);
|
||||
EXPECT_EQ(1, q.GetTokens()[1].length);
|
||||
EXPECT_STREQ("0", q.GetTokens()[1].name);
|
||||
EXPECT_EQ(0, q.GetTokens()[1].index);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(Pointer, Assignment) {
|
||||
{
|
||||
Pointer p("/foo/0");
|
||||
Pointer q;
|
||||
q = p;
|
||||
EXPECT_TRUE(q.IsValid());
|
||||
EXPECT_EQ(2, q.GetTokenCount());
|
||||
EXPECT_EQ(3, q.GetTokens()[0].length);
|
||||
EXPECT_STREQ("foo", q.GetTokens()[0].name);
|
||||
EXPECT_EQ(1, q.GetTokens()[1].length);
|
||||
EXPECT_STREQ("0", q.GetTokens()[1].name);
|
||||
EXPECT_EQ(0, q.GetTokens()[1].index);
|
||||
}
|
||||
|
||||
// Static tokens
|
||||
{
|
||||
Pointer p(kTokens, sizeof(kTokens) / sizeof(kTokens[0]));
|
||||
Pointer q;
|
||||
q = p;
|
||||
EXPECT_TRUE(q.IsValid());
|
||||
EXPECT_EQ(2, q.GetTokenCount());
|
||||
EXPECT_EQ(3, q.GetTokens()[0].length);
|
||||
EXPECT_STREQ("foo", q.GetTokens()[0].name);
|
||||
EXPECT_EQ(1, q.GetTokens()[1].length);
|
||||
EXPECT_STREQ("0", q.GetTokens()[1].name);
|
||||
EXPECT_EQ(0, q.GetTokens()[1].index);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(Pointer, Create) {
|
||||
Document d;
|
||||
EXPECT_EQ(&d, &Pointer("").Create(d, d.GetAllocator()));
|
||||
|
||||
Reference in New Issue
Block a user