Fix bug in difference() for rapidjson

This commit is contained in:
Tristan Penman 2024-08-28 13:02:35 +10:00
parent a0e05907ae
commit fc9ddf14db
2 changed files with 28 additions and 2 deletions

View File

@ -723,7 +723,7 @@ public:
std::ptrdiff_t difference(const GenericRapidJsonArrayValueIterator<ValueType> &other)
{
return std::distance(m_itr, other.itr);
return std::distance(m_itr, other.m_itr);
}
private:
@ -820,7 +820,7 @@ public:
std::ptrdiff_t difference(const GenericRapidJsonObjectMemberIterator &other)
{
return std::distance(m_itr, other.itr);
return std::distance(m_itr, other.m_itr);
}
private:

View File

@ -45,6 +45,23 @@ void testBasicArrayIteration()
expectedValue++;
}
// Check that plain iterators work too
expectedValue = 0;
for (auto itr = adapter.getArray().begin(); itr != adapter.getArray().end(); itr++) {
ASSERT_TRUE( itr->isNumber() );
EXPECT_EQ( double(expectedValue), itr->getDouble() );
expectedValue++;
}
// Check difference
auto a = adapter.getArray().begin();
auto b = a;
const auto c = b.difference(a);
EXPECT_EQ( 0, c );
b++;
const auto d = a.difference(b);
EXPECT_EQ( 1, d );
// Ensure that the correct number of elements were iterated over
EXPECT_EQ(numElements, expectedValue);
}
@ -88,6 +105,15 @@ void testBasicObjectIteration()
expectedValue++;
}
// Check difference
auto a = adapter.getObject().begin();
auto b = a;
const auto c = b.difference(a);
EXPECT_EQ( 0, c );
b++;
const auto d = a.difference(b);
EXPECT_EQ( 1, d );
// Ensure that the correct number of elements were iterated over
EXPECT_EQ( numElements, expectedValue );
}