Add selftests for range_contains and insert_into_bit_range_vector

Add some selftests for these two functions.  To to make it easier to
compare sequences of ranges, add operator== and operator!= to compare
two gdb::array_view, and add operator== in struct range.

gdb/ChangeLog:

	* value.c: Include "selftest.h" and "common/array-view.h".
	(struct range) <operator ==>: New.
	(test_ranges_contain): New.
	(check_ranges_vector): New.
	(test_insert_into_bit_range_vector): New.
	(_initialize_values): Register selftests.
	* common/array-view.h (operator==, operator!=): New.
This commit is contained in:
Simon Marchi
2018-04-09 15:45:39 -04:00
committed by Simon Marchi
parent b24531ed17
commit d5f4488f09
3 changed files with 193 additions and 0 deletions

View File

@ -174,6 +174,33 @@ private:
size_type m_size;
};
/* Compare LHS and RHS for (deep) equality. That is, whether LHS and
RHS have the same sizes, and whether each pair of elements of LHS
and RHS at the same position compares equal. */
template <typename T>
bool
operator== (const gdb::array_view<T> &lhs, const gdb::array_view<T> &rhs)
{
if (lhs.size () != rhs.size ())
return false;
for (size_t i = 0; i < lhs.size (); i++)
if (!(lhs[i] == rhs[i]))
return false;
return true;
}
/* Compare two array_views for inequality. */
template <typename T>
bool
operator!= (const gdb::array_view<T> &lhs, const gdb::array_view<T> &rhs)
{
return !(lhs == rhs);
}
} /* namespace gdb */
#endif