1
0
mirror of https://github.com/nlohmann/json synced 2024-12-24 17:41:05 +00:00

Fix the arithmetic mistakes in reverse iterator

This commit is contained in:
HenryLee 2017-05-29 18:52:53 +10:00
parent ed62129f8e
commit adc73d6d5f
2 changed files with 17 additions and 17 deletions

View File

@ -8672,7 +8672,7 @@ class basic_json
json_reverse_iterator operator+(difference_type i) const
{
auto result = *this;
result += i;
result -= i;
return result;
}
@ -8680,14 +8680,14 @@ class basic_json
json_reverse_iterator operator-(difference_type i) const
{
auto result = *this;
result -= i;
result += i;
return result;
}
/// return difference
difference_type operator-(const json_reverse_iterator& other) const
{
return this->base() - other.base();
return other.base() - this->base();
}
/// access to successor

View File

@ -747,7 +747,7 @@ TEST_CASE("iterators 2")
it += 3;
CHECK((j_array.rbegin() + 3) == it);
CHECK((it - 3) == j_array.rbegin());
CHECK((j_array.rbegin() - it) == 3);
CHECK((it - j_array.rbegin()) == 3);
CHECK(*it == json(3));
it -= 2;
CHECK(*it == json(5));
@ -757,7 +757,7 @@ TEST_CASE("iterators 2")
it += 3;
CHECK((j_array.crbegin() + 3) == it);
CHECK((it - 3) == j_array.crbegin());
CHECK((j_array.crbegin() - it) == 3);
CHECK((it - j_array.crbegin()) == 3);
CHECK(*it == json(3));
it -= 2;
CHECK(*it == json(5));
@ -769,9 +769,9 @@ TEST_CASE("iterators 2")
{
auto it = j_null.rbegin();
it += 3;
CHECK((j_null.rbegin() + 3) == it);
CHECK((it - 3) == j_null.rbegin());
CHECK((j_null.rbegin() - it) == 3);
CHECK((j_null.rbegin() - 3) == it);
CHECK((it + 3) == j_null.rbegin());
CHECK((it - j_null.rbegin()) == 3);
CHECK(it != j_null.rend());
it -= 3;
CHECK(it == j_null.rend());
@ -779,9 +779,9 @@ TEST_CASE("iterators 2")
{
auto it = j_null.crbegin();
it += 3;
CHECK((j_null.crbegin() + 3) == it);
CHECK((it - 3) == j_null.crbegin());
CHECK((j_null.crbegin() - it) == 3);
CHECK((j_null.crbegin() - 3) == it);
CHECK((it + 3) == j_null.crbegin());
CHECK((it - j_null.crbegin()) == 3);
CHECK(it != j_null.crend());
it -= 3;
CHECK(it == j_null.crend());
@ -793,9 +793,9 @@ TEST_CASE("iterators 2")
{
auto it = j_value.rbegin();
it += 3;
CHECK((j_value.rbegin() + 3) == it);
CHECK((it - 3) == j_value.rbegin());
CHECK((j_value.rbegin() - it) == 3);
CHECK((j_value.rbegin() - 3) == it);
CHECK((it + 3) == j_value.rbegin());
CHECK((it - j_value.rbegin()) == 3);
CHECK(it != j_value.rend());
it -= 3;
CHECK(*it == json(42));
@ -803,9 +803,9 @@ TEST_CASE("iterators 2")
{
auto it = j_value.crbegin();
it += 3;
CHECK((j_value.crbegin() + 3) == it);
CHECK((it - 3) == j_value.crbegin());
CHECK((j_value.crbegin() - it) == 3);
CHECK((j_value.crbegin() - 3) == it);
CHECK((it + 3) == j_value.crbegin());
CHECK((it - j_value.crbegin()) == 3);
CHECK(it != j_value.crend());
it -= 3;
CHECK(*it == json(42));