Add missing relational operators to VarIterator (#4714)

* Add missing relational operators to VarIterator

* Add tests for relational operators of VarIterator
This commit is contained in:
vfjpl 2024-10-03 10:52:45 +02:00 committed by GitHub
parent f3975eba96
commit 64c751f3a3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 43 additions and 2 deletions

View File

@ -69,6 +69,18 @@ public:
bool operator != (const VarIterator& other) const;
/// Inequality operator.
bool operator < (const VarIterator& other) const;
/// Less than operator.
bool operator > (const VarIterator& other) const;
/// Greater than operator.
bool operator <= (const VarIterator& other) const;
/// Less than or equal to operator.
bool operator >= (const VarIterator& other) const;
/// Greater than or equal to operator.
Var& operator * () const;
/// Returns value at the current position.
@ -138,6 +150,30 @@ inline bool VarIterator::operator != (const VarIterator& other) const
}
inline bool VarIterator::operator < (const VarIterator& other) const
{
return _position < other._position;
}
inline bool VarIterator::operator > (const VarIterator& other) const
{
return _position > other._position;
}
inline bool VarIterator::operator <= (const VarIterator& other) const
{
return _position <= other._position;
}
inline bool VarIterator::operator >= (const VarIterator& other) const
{
return _position >= other._position;
}
} } // namespace Poco::Dynamic

View File

@ -83,8 +83,7 @@ void VarIterator::increment() const
{
if (POSITION_END == _position)
throw RangeException("End of iterator reached.");
if (_position < _pVar->size() - 1)
else if (_position < _pVar->size() - 1)
++_position;
else
_position = POSITION_END;

View File

@ -3161,6 +3161,8 @@ void VarTest::testIterator()
da = Poco::Dynamic::Array();
assertTrue(da.begin() == da.end());
assertTrue(da.begin() <= da.end());
assertTrue(da.begin() >= da.end());
da = 1;
assertTrue (!da.isEmpty());
@ -3172,6 +3174,10 @@ void VarTest::testIterator()
}
catch (RangeException&) {}
assertTrue (da.begin() != da.end());
assertTrue (da.begin() <= da.end());
assertTrue (da.begin() < da.end());
assertTrue (da.end() >= da.begin());
assertTrue (da.end() > da.begin());
Var::Iterator it = da.begin();
Var::Iterator end = da.end();