Skip to content

Commit fc9ddf1

Browse files
committed
Fix bug in difference() for rapidjson
1 parent a0e0590 commit fc9ddf1

File tree

2 files changed

+28
-2
lines changed

2 files changed

+28
-2
lines changed

include/valijson/adapters/rapidjson_adapter.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -723,7 +723,7 @@ class GenericRapidJsonArrayValueIterator
723723

724724
std::ptrdiff_t difference(const GenericRapidJsonArrayValueIterator<ValueType> &other)
725725
{
726-
return std::distance(m_itr, other.itr);
726+
return std::distance(m_itr, other.m_itr);
727727
}
728728

729729
private:
@@ -820,7 +820,7 @@ class GenericRapidJsonObjectMemberIterator
820820

821821
std::ptrdiff_t difference(const GenericRapidJsonObjectMemberIterator &other)
822822
{
823-
return std::distance(m_itr, other.itr);
823+
return std::distance(m_itr, other.m_itr);
824824
}
825825

826826
private:

tests/test_rapidjson_adapter.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,23 @@ void testBasicArrayIteration()
4545
expectedValue++;
4646
}
4747

48+
// Check that plain iterators work too
49+
expectedValue = 0;
50+
for (auto itr = adapter.getArray().begin(); itr != adapter.getArray().end(); itr++) {
51+
ASSERT_TRUE( itr->isNumber() );
52+
EXPECT_EQ( double(expectedValue), itr->getDouble() );
53+
expectedValue++;
54+
}
55+
56+
// Check difference
57+
auto a = adapter.getArray().begin();
58+
auto b = a;
59+
const auto c = b.difference(a);
60+
EXPECT_EQ( 0, c );
61+
b++;
62+
const auto d = a.difference(b);
63+
EXPECT_EQ( 1, d );
64+
4865
// Ensure that the correct number of elements were iterated over
4966
EXPECT_EQ(numElements, expectedValue);
5067
}
@@ -88,6 +105,15 @@ void testBasicObjectIteration()
88105
expectedValue++;
89106
}
90107

108+
// Check difference
109+
auto a = adapter.getObject().begin();
110+
auto b = a;
111+
const auto c = b.difference(a);
112+
EXPECT_EQ( 0, c );
113+
b++;
114+
const auto d = a.difference(b);
115+
EXPECT_EQ( 1, d );
116+
91117
// Ensure that the correct number of elements were iterated over
92118
EXPECT_EQ( numElements, expectedValue );
93119
}

0 commit comments

Comments
 (0)