mirror of
https://github.com/Tencent/rapidjson.git
synced 2025-10-28 03:20:15 +01:00
Fixes #59 by adding bool return value for each event handler function
This commit is contained in:
@@ -13,10 +13,10 @@ RAPIDJSON_DIAG_OFF(effc++)
|
||||
template<bool expect>
|
||||
struct ParseBoolHandler : BaseReaderHandler<> {
|
||||
ParseBoolHandler() : step_(0) {}
|
||||
void Default() { FAIL(); }
|
||||
bool Default() { FAIL(); }
|
||||
// gcc 4.8.x generates warning in EXPECT_EQ(bool, bool) on this gtest version.
|
||||
// Workaround with EXPECT_TRUE().
|
||||
void Bool(bool b) { /*EXPECT_EQ(expect, b); */EXPECT_TRUE(expect == b); ++step_; }
|
||||
bool Bool(bool b) { /*EXPECT_EQ(expect, b); */EXPECT_TRUE(expect == b); ++step_; return true; }
|
||||
|
||||
unsigned step_;
|
||||
};
|
||||
@@ -39,8 +39,8 @@ TEST(Reader, ParseFalse) {
|
||||
|
||||
struct ParseIntHandler : BaseReaderHandler<> {
|
||||
ParseIntHandler() : step_(0), actual_() {}
|
||||
void Default() { FAIL(); }
|
||||
void Int(int i) { actual_ = i; step_++; }
|
||||
bool Default() { ADD_FAILURE(); return false; }
|
||||
bool Int(int i) { actual_ = i; step_++; return true; }
|
||||
|
||||
unsigned step_;
|
||||
int actual_;
|
||||
@@ -48,8 +48,8 @@ struct ParseIntHandler : BaseReaderHandler<> {
|
||||
|
||||
struct ParseUintHandler : BaseReaderHandler<> {
|
||||
ParseUintHandler() : step_(0), actual_() {}
|
||||
void Default() { FAIL(); }
|
||||
void Uint(unsigned i) { actual_ = i; step_++; }
|
||||
bool Default() { ADD_FAILURE(); return false; }
|
||||
bool Uint(unsigned i) { actual_ = i; step_++; return true; }
|
||||
|
||||
unsigned step_;
|
||||
unsigned actual_;
|
||||
@@ -57,8 +57,8 @@ struct ParseUintHandler : BaseReaderHandler<> {
|
||||
|
||||
struct ParseInt64Handler : BaseReaderHandler<> {
|
||||
ParseInt64Handler() : step_(0), actual_() {}
|
||||
void Default() { FAIL(); }
|
||||
void Int64(int64_t i) { actual_ = i; step_++; }
|
||||
bool Default() { ADD_FAILURE(); return false; }
|
||||
bool Int64(int64_t i) { actual_ = i; step_++; return true; }
|
||||
|
||||
unsigned step_;
|
||||
int64_t actual_;
|
||||
@@ -66,8 +66,8 @@ struct ParseInt64Handler : BaseReaderHandler<> {
|
||||
|
||||
struct ParseUint64Handler : BaseReaderHandler<> {
|
||||
ParseUint64Handler() : step_(0), actual_() {}
|
||||
void Default() { FAIL(); }
|
||||
void Uint64(uint64_t i) { actual_ = i; step_++; }
|
||||
bool Default() { ADD_FAILURE(); return false; }
|
||||
bool Uint64(uint64_t i) { actual_ = i; step_++; return true; }
|
||||
|
||||
unsigned step_;
|
||||
uint64_t actual_;
|
||||
@@ -75,8 +75,8 @@ struct ParseUint64Handler : BaseReaderHandler<> {
|
||||
|
||||
struct ParseDoubleHandler : BaseReaderHandler<> {
|
||||
ParseDoubleHandler() : step_(0), actual_() {}
|
||||
void Default() { FAIL(); }
|
||||
void Double(double d) { actual_ = d; step_++; }
|
||||
bool Default() { ADD_FAILURE(); return false; }
|
||||
bool Double(double d) { actual_ = d; step_++; return true; }
|
||||
|
||||
unsigned step_;
|
||||
double actual_;
|
||||
@@ -194,8 +194,8 @@ struct ParseStringHandler : BaseReaderHandler<Encoding> {
|
||||
ParseStringHandler(const ParseStringHandler&);
|
||||
ParseStringHandler& operator=(const ParseStringHandler&);
|
||||
|
||||
void Default() { FAIL(); }
|
||||
void String(const typename Encoding::Ch* str, size_t length, bool copy) {
|
||||
bool Default() { ADD_FAILURE(); return false; }
|
||||
bool String(const typename Encoding::Ch* str, size_t length, bool copy) {
|
||||
EXPECT_EQ(0, str_);
|
||||
if (copy) {
|
||||
str_ = (typename Encoding::Ch*)malloc((length + 1) * sizeof(typename Encoding::Ch));
|
||||
@@ -204,7 +204,8 @@ struct ParseStringHandler : BaseReaderHandler<Encoding> {
|
||||
else
|
||||
str_ = str;
|
||||
length_ = length;
|
||||
copy_ = copy;
|
||||
copy_ = copy;
|
||||
return true;
|
||||
}
|
||||
|
||||
const typename Encoding::Ch* str_;
|
||||
@@ -411,10 +412,10 @@ template <unsigned count>
|
||||
struct ParseArrayHandler : BaseReaderHandler<> {
|
||||
ParseArrayHandler() : step_(0) {}
|
||||
|
||||
void Default() { FAIL(); }
|
||||
void Uint(unsigned i) { EXPECT_EQ(step_, i); step_++; }
|
||||
void StartArray() { EXPECT_EQ(0u, step_); step_++; }
|
||||
void EndArray(SizeType) { step_++; }
|
||||
bool Default() { ADD_FAILURE(); return false; }
|
||||
bool Uint(unsigned i) { EXPECT_EQ(step_, i); step_++; return true; }
|
||||
bool StartArray() { EXPECT_EQ(0u, step_); step_++; return true; }
|
||||
bool EndArray(SizeType) { step_++; return true; }
|
||||
|
||||
unsigned step_;
|
||||
};
|
||||
@@ -462,42 +463,42 @@ TEST(Reader, ParseArray_Error) {
|
||||
struct ParseObjectHandler : BaseReaderHandler<> {
|
||||
ParseObjectHandler() : step_(0) {}
|
||||
|
||||
void Null() { EXPECT_EQ(8u, step_); step_++; }
|
||||
void Bool(bool b) {
|
||||
bool Null() { EXPECT_EQ(8u, step_); step_++; return true; }
|
||||
bool Bool(bool b) {
|
||||
switch(step_) {
|
||||
case 4: EXPECT_TRUE(b); step_++; break;
|
||||
case 6: EXPECT_FALSE(b); step_++; break;
|
||||
default: FAIL();
|
||||
case 4: EXPECT_TRUE(b); step_++; return true;
|
||||
case 6: EXPECT_FALSE(b); step_++; return true;
|
||||
default: ADD_FAILURE(); return false;
|
||||
}
|
||||
}
|
||||
void Int(int i) {
|
||||
bool Int(int i) {
|
||||
switch(step_) {
|
||||
case 10: EXPECT_EQ(123, i); step_++; break;
|
||||
case 15: EXPECT_EQ(1, i); step_++; break;
|
||||
case 16: EXPECT_EQ(2, i); step_++; break;
|
||||
case 17: EXPECT_EQ(3, i); step_++; break;
|
||||
default: FAIL();
|
||||
case 10: EXPECT_EQ(123, i); step_++; return true;
|
||||
case 15: EXPECT_EQ(1, i); step_++; return true;
|
||||
case 16: EXPECT_EQ(2, i); step_++; return true;
|
||||
case 17: EXPECT_EQ(3, i); step_++; return true;
|
||||
default: ADD_FAILURE(); return false;
|
||||
}
|
||||
}
|
||||
void Uint(unsigned i) { Int(i); }
|
||||
void Double(double d) { EXPECT_EQ(12u, step_); EXPECT_EQ(3.1416, d); step_++; }
|
||||
void String(const char* str, size_t, bool) {
|
||||
bool Uint(unsigned i) { return Int(i); }
|
||||
bool Double(double d) { EXPECT_EQ(12u, step_); EXPECT_EQ(3.1416, d); step_++; return true; }
|
||||
bool String(const char* str, size_t, bool) {
|
||||
switch(step_) {
|
||||
case 1: EXPECT_STREQ("hello", str); step_++; break;
|
||||
case 2: EXPECT_STREQ("world", str); step_++; break;
|
||||
case 3: EXPECT_STREQ("t", str); step_++; break;
|
||||
case 5: EXPECT_STREQ("f", str); step_++; break;
|
||||
case 7: EXPECT_STREQ("n", str); step_++; break;
|
||||
case 9: EXPECT_STREQ("i", str); step_++; break;
|
||||
case 11: EXPECT_STREQ("pi", str); step_++; break;
|
||||
case 13: EXPECT_STREQ("a", str); step_++; break;
|
||||
default: FAIL();
|
||||
case 1: EXPECT_STREQ("hello", str); step_++; return true;
|
||||
case 2: EXPECT_STREQ("world", str); step_++; return true;
|
||||
case 3: EXPECT_STREQ("t", str); step_++; return true;
|
||||
case 5: EXPECT_STREQ("f", str); step_++; return true;
|
||||
case 7: EXPECT_STREQ("n", str); step_++; return true;
|
||||
case 9: EXPECT_STREQ("i", str); step_++; return true;
|
||||
case 11: EXPECT_STREQ("pi", str); step_++; return true;
|
||||
case 13: EXPECT_STREQ("a", str); step_++; return true;
|
||||
default: ADD_FAILURE(); return false;
|
||||
}
|
||||
}
|
||||
void StartObject() { EXPECT_EQ(0u, step_); step_++; }
|
||||
void EndObject(SizeType memberCount) { EXPECT_EQ(19u, step_); EXPECT_EQ(7u, memberCount); step_++;}
|
||||
void StartArray() { EXPECT_EQ(14u, step_); step_++; }
|
||||
void EndArray(SizeType elementCount) { EXPECT_EQ(18u, step_); EXPECT_EQ(3u, elementCount); step_++;}
|
||||
bool StartObject() { EXPECT_EQ(0u, step_); step_++; return true; }
|
||||
bool EndObject(SizeType memberCount) { EXPECT_EQ(19u, step_); EXPECT_EQ(7u, memberCount); step_++; return true; }
|
||||
bool StartArray() { EXPECT_EQ(14u, step_); step_++; return true; }
|
||||
bool EndArray(SizeType elementCount) { EXPECT_EQ(18u, step_); EXPECT_EQ(3u, elementCount); step_++; return true; }
|
||||
|
||||
unsigned step_;
|
||||
};
|
||||
@@ -529,9 +530,9 @@ TEST(Reader, ParseObject) {
|
||||
struct ParseEmptyObjectHandler : BaseReaderHandler<> {
|
||||
ParseEmptyObjectHandler() : step_(0) {}
|
||||
|
||||
void Default() { FAIL(); }
|
||||
void StartObject() { EXPECT_EQ(0u, step_); step_++; }
|
||||
void EndObject(SizeType) { EXPECT_EQ(1u, step_); step_++; }
|
||||
bool Default() { ADD_FAILURE(); return false; }
|
||||
bool StartObject() { EXPECT_EQ(0u, step_); step_++; return true; }
|
||||
bool EndObject(SizeType) { EXPECT_EQ(1u, step_); step_++; return true; }
|
||||
|
||||
unsigned step_;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user