mirror of
https://github.com/ETLCPP/etl.git
synced 2026-04-30 19:09:10 +08:00
Merge branch 'master' into feature/constexpr-for-string_view
# Conflicts: # include/etl/array.h # include/etl/deque.h # include/etl/forward_list.h # include/etl/generators/type_traits_generator.h # include/etl/list.h # include/etl/platform.h # include/etl/vector.h # meson.build # test/test_array.cpp # test/test_deque.cpp # test/test_flat_map.cpp # test/test_flat_multimap.cpp # test/test_flat_multiset.cpp # test/test_flat_set.cpp # test/test_forward_list.cpp # test/test_list.cpp # test/test_map.cpp # test/test_multimap.cpp # test/test_multiset.cpp # test/test_set.cpp # test/vs2019/etl.vcxproj.filters
This commit is contained in:
commit
5fa7ee22ab
@ -1,12 +0,0 @@
|
||||
{
|
||||
"ExpandedNodes": [
|
||||
"",
|
||||
"\\arduino",
|
||||
"\\include",
|
||||
"\\include\\etl",
|
||||
"\\include\\etl\\private",
|
||||
"\\test"
|
||||
],
|
||||
"SelectedNode": "\\test\\test_unordered_map.cpp",
|
||||
"PreviewInSolutionExplorer": false
|
||||
}
|
||||
BIN
.vs/slnx.sqlite
BIN
.vs/slnx.sqlite
Binary file not shown.
@ -403,7 +403,7 @@ namespace etl
|
||||
//*************************************************************************
|
||||
iterator insert(const_iterator position, parameter_t value)
|
||||
{
|
||||
iterator p = const_cast<iterator>(position);
|
||||
iterator p = to_iterator(position);
|
||||
|
||||
etl::move_backward(p, end() - 1, end());
|
||||
*p = value;
|
||||
@ -432,7 +432,7 @@ namespace etl
|
||||
template <typename TIterator>
|
||||
iterator insert(const_iterator position, TIterator first, const TIterator last)
|
||||
{
|
||||
iterator p = const_cast<iterator>(position);
|
||||
iterator p = to_iterator(position);
|
||||
iterator result(p);
|
||||
|
||||
size_t source_size = etl::distance(first, last);
|
||||
@ -468,7 +468,7 @@ namespace etl
|
||||
//*************************************************************************
|
||||
iterator erase(const_iterator position)
|
||||
{
|
||||
iterator p = const_cast<iterator>(position);
|
||||
iterator p = to_iterator(position);
|
||||
etl::move(p + 1, end(), p);
|
||||
|
||||
return p;
|
||||
@ -493,7 +493,7 @@ namespace etl
|
||||
//*************************************************************************
|
||||
iterator erase(const_iterator first, const_iterator last)
|
||||
{
|
||||
iterator p = const_cast<iterator>(first);
|
||||
iterator p = to_iterator(first);
|
||||
etl::move(last, cend(), p);
|
||||
return p;
|
||||
}
|
||||
@ -515,7 +515,7 @@ namespace etl
|
||||
//*************************************************************************
|
||||
iterator erase(const_iterator position, parameter_t value)
|
||||
{
|
||||
iterator p = const_cast<iterator>(position);
|
||||
iterator p = to_iterator(position);
|
||||
|
||||
etl::move(p + 1, end(), p);
|
||||
back() = value;
|
||||
@ -541,16 +541,26 @@ namespace etl
|
||||
//*************************************************************************
|
||||
iterator erase(const_iterator first, const_iterator last, parameter_t value)
|
||||
{
|
||||
iterator p = const_cast<iterator>(first);
|
||||
iterator p = to_iterator(first);
|
||||
|
||||
p = etl::move(last, cend(), p);
|
||||
etl::fill(p, end(), value);
|
||||
|
||||
return const_cast<iterator>(first);
|
||||
return to_iterator(first);
|
||||
}
|
||||
|
||||
/// The array data.
|
||||
T _buffer[SIZE];
|
||||
|
||||
private:
|
||||
|
||||
//*************************************************************************
|
||||
/// Convert from const_iterator to iterator
|
||||
//*************************************************************************
|
||||
iterator to_iterator(const_iterator itr) const
|
||||
{
|
||||
return const_cast<iterator>(itr);
|
||||
}
|
||||
};
|
||||
|
||||
//*************************************************************************
|
||||
|
||||
@ -918,7 +918,7 @@ namespace etl
|
||||
iterator insert(const_iterator position, T value)
|
||||
{
|
||||
// Quick hack, as iterators are pointers.
|
||||
iterator insert_position = const_cast<iterator>(position);
|
||||
iterator insert_position = to_iterator(position);
|
||||
|
||||
if (current_size < CAPACITY)
|
||||
{
|
||||
@ -967,15 +967,17 @@ namespace etl
|
||||
///\param n The number of elements to add.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
void insert(const_iterator position, size_type n, T value)
|
||||
iterator insert(const_iterator position, size_type n, T value)
|
||||
{
|
||||
iterator position_ = to_iterator(position);
|
||||
|
||||
if (n == 0)
|
||||
{
|
||||
return;
|
||||
return position_;
|
||||
}
|
||||
|
||||
// Quick hack, as iterators are pointers.
|
||||
iterator insert_position = const_cast<iterator>(position);
|
||||
iterator insert_position = to_iterator(position);
|
||||
const size_type start = etl::distance(cbegin(), position);
|
||||
|
||||
// No effect.
|
||||
@ -988,7 +990,7 @@ namespace etl
|
||||
ETL_ALWAYS_ASSERT(ETL_ERROR(string_truncation));
|
||||
#endif
|
||||
#endif
|
||||
return;
|
||||
return to_iterator(position);;
|
||||
}
|
||||
|
||||
// Fills the string to the end?
|
||||
@ -1040,6 +1042,8 @@ namespace etl
|
||||
}
|
||||
|
||||
p_buffer[current_size] = 0;
|
||||
|
||||
return position_;
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
@ -1049,15 +1053,17 @@ namespace etl
|
||||
///\param first The first element to add.
|
||||
///\param last The last + 1 element to add.
|
||||
//*********************************************************************
|
||||
template <class TIterator>
|
||||
void insert(iterator position, TIterator first, TIterator last)
|
||||
template <typename TIterator>
|
||||
iterator insert(const_iterator position, TIterator first, TIterator last)
|
||||
{
|
||||
iterator position_ = to_iterator(position);
|
||||
|
||||
if (first == last)
|
||||
{
|
||||
return;
|
||||
return position_;
|
||||
}
|
||||
|
||||
const size_type start = etl::distance(begin(), position);
|
||||
const size_type start = etl::distance(begin(), position_);
|
||||
const size_type n = etl::distance(first, last);
|
||||
|
||||
// No effect.
|
||||
@ -1070,7 +1076,7 @@ namespace etl
|
||||
ETL_ALWAYS_ASSERT(ETL_ERROR(string_truncation));
|
||||
#endif
|
||||
#endif
|
||||
return;
|
||||
return position_;
|
||||
}
|
||||
|
||||
// Fills the string to the end?
|
||||
@ -1089,9 +1095,9 @@ namespace etl
|
||||
|
||||
current_size = CAPACITY;
|
||||
|
||||
while (position != end())
|
||||
while (position_ != end())
|
||||
{
|
||||
*position++ = *first++;
|
||||
*position_++ = *first++;
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -1121,15 +1127,17 @@ namespace etl
|
||||
current_size += shift_amount;
|
||||
}
|
||||
|
||||
etl::copy_backward(position, position + characters_to_shift, begin() + to_position + characters_to_shift);
|
||||
etl::copy_backward(position_, position_ + characters_to_shift, begin() + to_position + characters_to_shift);
|
||||
|
||||
while (first != last)
|
||||
{
|
||||
*position++ = *first++;
|
||||
*position_++ = *first++;
|
||||
}
|
||||
}
|
||||
|
||||
p_buffer[current_size] = 0;
|
||||
|
||||
return position_;
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
@ -1260,6 +1268,21 @@ namespace etl
|
||||
return i_element;
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
/// Erases an element.
|
||||
///\param i_element Iterator to the element.
|
||||
///\return An iterator pointing to the element that followed the erased element.
|
||||
//*********************************************************************
|
||||
iterator erase(const_iterator i_element)
|
||||
{
|
||||
iterator i_element_(to_iterator(i_element));
|
||||
|
||||
etl::copy(i_element_ + 1, end(), i_element_);
|
||||
p_buffer[--current_size] = 0;
|
||||
|
||||
return i_element_;
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
/// Erases a range of elements.
|
||||
/// The range includes all the elements between first and last, including the
|
||||
@ -1268,21 +1291,24 @@ namespace etl
|
||||
///\param last Iterator to the last element.
|
||||
///\return An iterator pointing to the element that followed the erased element.
|
||||
//*********************************************************************
|
||||
iterator erase(iterator first, iterator last)
|
||||
iterator erase(const_iterator first, const_iterator last)
|
||||
{
|
||||
if (first == last)
|
||||
iterator first_ = to_iterator(first);
|
||||
iterator last_ = to_iterator(last);
|
||||
|
||||
if (first_ == last_)
|
||||
{
|
||||
return first;
|
||||
return first_;
|
||||
}
|
||||
|
||||
etl::copy(last, end(), first);
|
||||
size_type n_delete = etl::distance(first, last);
|
||||
etl::copy(last_, end(), first_);
|
||||
size_type n_delete = etl::distance(first_, last_);
|
||||
|
||||
current_size -= n_delete;
|
||||
p_buffer[current_size] = 0;
|
||||
cleanup();
|
||||
|
||||
return first;
|
||||
return first_;
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
@ -1576,8 +1602,8 @@ namespace etl
|
||||
ibasic_string& replace(const_iterator first, const_iterator last, const ibasic_string& str)
|
||||
{
|
||||
// Quick hack, as iterators are pointers.
|
||||
iterator first_ = const_cast<iterator>(first);
|
||||
iterator last_ = const_cast<iterator>(last);
|
||||
iterator first_ = to_iterator(first);
|
||||
iterator last_ = to_iterator(last);
|
||||
|
||||
// Erase the bit we want to replace.
|
||||
erase(first_, last_);
|
||||
@ -1656,8 +1682,8 @@ namespace etl
|
||||
ibasic_string& replace(const_iterator first, const_iterator last, const_pointer s)
|
||||
{
|
||||
// Quick hack, as iterators are pointers.
|
||||
iterator first_ = const_cast<iterator>(first);
|
||||
iterator last_ = const_cast<iterator>(last);
|
||||
iterator first_ = to_iterator(first);
|
||||
iterator last_ = to_iterator(last);
|
||||
|
||||
// Erase the bit we want to replace.
|
||||
erase(first_, last_);
|
||||
@ -1693,8 +1719,8 @@ namespace etl
|
||||
ibasic_string& replace(const_iterator first, const_iterator last, const_pointer s, size_type n)
|
||||
{
|
||||
// Quick hack, as iterators are pointers.
|
||||
iterator first_ = const_cast<iterator>(first);
|
||||
iterator last_ = const_cast<iterator>(last);
|
||||
iterator first_ = to_iterator(first);
|
||||
iterator last_ = to_iterator(last);
|
||||
|
||||
// Erase the bit we want to replace.
|
||||
erase(first_, last_);
|
||||
@ -1730,8 +1756,8 @@ namespace etl
|
||||
ibasic_string& replace(const_iterator first, const_iterator last, size_type n, value_type c)
|
||||
{
|
||||
// Quick hack, as iterators are pointers.
|
||||
iterator first_ = const_cast<iterator>(first);
|
||||
iterator last_ = const_cast<iterator>(last);
|
||||
iterator first_ = to_iterator(first);
|
||||
iterator last_ = to_iterator(last);
|
||||
|
||||
// Erase the bit we want to replace.
|
||||
erase(first_, last_);
|
||||
@ -1749,8 +1775,8 @@ namespace etl
|
||||
ibasic_string& replace(const_iterator first, const_iterator last, TIterator first_replace, TIterator last_replace)
|
||||
{
|
||||
// Quick hack, as iterators are pointers.
|
||||
iterator first_ = const_cast<iterator>(first);
|
||||
iterator last_ = const_cast<iterator>(last);
|
||||
iterator first_ = to_iterator(first);
|
||||
iterator last_ = to_iterator(last);
|
||||
|
||||
// Erase the bit we want to replace.
|
||||
erase(first_, last_);
|
||||
@ -2352,6 +2378,16 @@ namespace etl
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
protected:
|
||||
|
||||
//*************************************************************************
|
||||
/// Convert from const_iterator to iterator
|
||||
//*************************************************************************
|
||||
iterator to_iterator(const_iterator itr) const
|
||||
{
|
||||
return const_cast<iterator>(itr);
|
||||
}
|
||||
};
|
||||
|
||||
//***************************************************************************
|
||||
@ -2393,7 +2429,6 @@ namespace etl
|
||||
return (rhs.size() == etl::strlen(lhs)) && etl::equal(rhs.begin(), rhs.end(), lhs);
|
||||
}
|
||||
|
||||
|
||||
//***************************************************************************
|
||||
/// Not equal operator.
|
||||
///\param lhs Reference to the first string.
|
||||
|
||||
@ -1281,7 +1281,7 @@ namespace etl
|
||||
//*************************************************************************
|
||||
/// Template deduction guides.
|
||||
//*************************************************************************
|
||||
#if ETL_CPP17_SUPPORTED
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST
|
||||
template <typename T, typename... Ts>
|
||||
circular_buffer(T, Ts...)
|
||||
->circular_buffer<etl::enable_if_t<(etl::is_same_v<T, Ts> && ...), T>, 1U + sizeof...(Ts)>;
|
||||
|
||||
@ -111,10 +111,7 @@ namespace etl
|
||||
//*************************************************************************
|
||||
// Copy constructor.
|
||||
//*************************************************************************
|
||||
ETL_CONSTEXPR14 delegate(const delegate& other)
|
||||
: invocation(other.invocation)
|
||||
{
|
||||
}
|
||||
ETL_CONSTEXPR14 delegate(const delegate& other) = default;
|
||||
|
||||
//*************************************************************************
|
||||
// Construct from lambda or functor.
|
||||
|
||||
@ -241,18 +241,6 @@ namespace etl
|
||||
typedef const T* const_pointer;
|
||||
typedef typename etl::iterator_traits<pointer>::difference_type difference_type;
|
||||
|
||||
protected:
|
||||
|
||||
//*************************************************************************
|
||||
/// Test for an iterator.
|
||||
//*************************************************************************
|
||||
template <typename TIterator>
|
||||
struct is_iterator : public etl::integral_constant<bool, !etl::is_integral<TIterator>::value && !etl::is_floating_point<TIterator>::value>
|
||||
{
|
||||
};
|
||||
|
||||
public:
|
||||
|
||||
//*************************************************************************
|
||||
/// Iterator
|
||||
//*************************************************************************
|
||||
@ -730,7 +718,7 @@ namespace etl
|
||||
/// Assigns a range to the deque.
|
||||
//*************************************************************************
|
||||
template<typename TIterator>
|
||||
typename etl::enable_if<is_iterator<TIterator>::value, void>::type
|
||||
typename etl::enable_if<!etl::is_integral<TIterator>::value, void>::type
|
||||
assign(TIterator range_begin, TIterator range_end)
|
||||
{
|
||||
initialise();
|
||||
@ -962,7 +950,7 @@ namespace etl
|
||||
//*************************************************************************
|
||||
iterator insert(const_iterator insert_position, const value_type& value)
|
||||
{
|
||||
iterator position(insert_position.index, *this, p_buffer);
|
||||
iterator position(to_iterator(insert_position));
|
||||
|
||||
ETL_ASSERT(!full(), ETL_ERROR(deque_full));
|
||||
|
||||
@ -1504,7 +1492,7 @@ namespace etl
|
||||
///\param range_end The end of the range to insert.
|
||||
//*************************************************************************
|
||||
template<typename TIterator>
|
||||
typename enable_if<is_iterator<TIterator>::value, iterator>::type
|
||||
typename enable_if<!etl::is_integral<TIterator>::value, iterator>::type
|
||||
insert(const_iterator insert_position, TIterator range_begin, TIterator range_end)
|
||||
{
|
||||
iterator position;
|
||||
@ -1608,7 +1596,8 @@ namespace etl
|
||||
//*************************************************************************
|
||||
iterator erase(const_iterator erase_position)
|
||||
{
|
||||
iterator position(erase_position.index, *this, p_buffer);
|
||||
iterator position(to_iterator(erase_position));
|
||||
//iterator position(erase_position.index, *this, p_buffer);
|
||||
|
||||
ETL_ASSERT(distance(position) <= difference_type(current_size), ETL_ERROR(deque_out_of_bounds));
|
||||
|
||||
@ -1649,7 +1638,7 @@ namespace etl
|
||||
//*************************************************************************
|
||||
iterator erase(const_iterator range_begin, const_iterator range_end)
|
||||
{
|
||||
iterator position(range_begin.index, *this, p_buffer);
|
||||
iterator position(to_iterator(range_begin));
|
||||
|
||||
ETL_ASSERT((distance(range_begin) <= difference_type(current_size)) && (distance(range_end) <= difference_type(current_size)), ETL_ERROR(deque_out_of_bounds));
|
||||
|
||||
@ -2265,6 +2254,14 @@ namespace etl
|
||||
}
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/// Converts from const_iterator to iterator.
|
||||
//*************************************************************************
|
||||
iterator to_iterator(const_iterator itr) const
|
||||
{
|
||||
return iterator(itr.index, const_cast<ideque&>(*this), p_buffer);
|
||||
}
|
||||
|
||||
// Disable copy construction.
|
||||
ideque(const ideque&);
|
||||
|
||||
@ -2453,15 +2450,15 @@ namespace etl
|
||||
//*************************************************************************
|
||||
/// Template deduction guides.
|
||||
//*************************************************************************
|
||||
#if ETL_CPP17_SUPPORTED
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST
|
||||
template <typename... T>
|
||||
deque(T...) -> deque<typename etl::common_type<T...>::type, sizeof...(T)>;
|
||||
deque(T...) -> deque<typename etl::common_type_t<T...>, sizeof...(T)>;
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
/// Make
|
||||
//*************************************************************************
|
||||
#if ETL_USING_INITIALIZER_LIST
|
||||
#if ETL_CPP11_SUPPORTED && ETL_USING_INITIALIZER_LIST
|
||||
template <typename T, typename... TValues>
|
||||
constexpr auto make_deque(TValues&&... values) -> etl::deque<T, sizeof...(TValues)>
|
||||
{
|
||||
|
||||
@ -339,7 +339,7 @@ namespace etl
|
||||
///\param position The position to insert at.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
iterator insert(iterator position, const_reference value)
|
||||
iterator insert(const_iterator position, const_reference value)
|
||||
{
|
||||
return insert(value).first;
|
||||
}
|
||||
@ -351,7 +351,7 @@ namespace etl
|
||||
///\param position The position to insert at.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
iterator insert(iterator position, rvalue_reference value)
|
||||
iterator insert(const_iterator position, rvalue_reference value)
|
||||
{
|
||||
return insert(etl::move(value)).first;
|
||||
}
|
||||
@ -573,12 +573,24 @@ namespace etl
|
||||
/// Erases an element.
|
||||
///\param i_element Iterator to the element.
|
||||
//*********************************************************************
|
||||
void erase(iterator i_element)
|
||||
iterator erase(iterator i_element)
|
||||
{
|
||||
i_element->~value_type();
|
||||
storage.release(etl::addressof(*i_element));
|
||||
refmap_t::erase(i_element);
|
||||
ETL_DECREMENT_DEBUG_COUNT
|
||||
return refmap_t::erase(i_element);
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
/// Erases an element.
|
||||
///\ param i_element Iterator to the element.
|
||||
//*********************************************************************
|
||||
iterator erase(const_iterator i_element)
|
||||
{
|
||||
i_element->~value_type();
|
||||
storage.release(etl::addressof(*i_element));
|
||||
ETL_DECREMENT_DEBUG_COUNT
|
||||
return refmap_t::erase(i_element);
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
@ -588,9 +600,9 @@ namespace etl
|
||||
///\param first Iterator to the first element.
|
||||
///\param last Iterator to the last element.
|
||||
//*********************************************************************
|
||||
void erase(iterator first, iterator last)
|
||||
iterator erase(const_iterator first, const_iterator last)
|
||||
{
|
||||
iterator itr = first;
|
||||
const_iterator itr = first;
|
||||
|
||||
while (itr != last)
|
||||
{
|
||||
@ -600,7 +612,7 @@ namespace etl
|
||||
ETL_DECREMENT_DEBUG_COUNT
|
||||
}
|
||||
|
||||
refmap_t::erase(first, last);
|
||||
return refmap_t::erase(first, last);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
|
||||
@ -300,7 +300,7 @@ namespace etl
|
||||
///\param position The position to insert at.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
iterator insert(iterator position, const value_type& value)
|
||||
iterator insert(const_iterator position, const value_type& value)
|
||||
{
|
||||
return insert(value).first;
|
||||
}
|
||||
@ -312,7 +312,7 @@ namespace etl
|
||||
///\param position The position to insert at.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
iterator insert(iterator position, rvalue_reference value)
|
||||
iterator insert(const_iterator position, rvalue_reference value)
|
||||
{
|
||||
return insert(etl::move(value)).first;
|
||||
}
|
||||
@ -478,12 +478,24 @@ namespace etl
|
||||
/// Erases an element.
|
||||
///\param i_element Iterator to the element.
|
||||
//*********************************************************************
|
||||
void erase(iterator i_element)
|
||||
iterator erase(iterator i_element)
|
||||
{
|
||||
i_element->~value_type();
|
||||
storage.release(etl::addressof(*i_element));
|
||||
refmap_t::erase(i_element);
|
||||
ETL_DECREMENT_DEBUG_COUNT
|
||||
return refmap_t::erase(i_element);
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
/// Erases an element.
|
||||
///\param i_element Iterator to the element.
|
||||
//*********************************************************************
|
||||
iterator erase(const_iterator i_element)
|
||||
{
|
||||
i_element->~value_type();
|
||||
storage.release(etl::addressof(*i_element));
|
||||
ETL_DECREMENT_DEBUG_COUNT
|
||||
return refmap_t::erase(i_element);
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
@ -493,9 +505,9 @@ namespace etl
|
||||
///\param first Iterator to the first element.
|
||||
///\param last Iterator to the last element.
|
||||
//*********************************************************************
|
||||
void erase(iterator first, iterator last)
|
||||
iterator erase(const_iterator first, const_iterator last)
|
||||
{
|
||||
iterator itr = first;
|
||||
const_iterator itr = first;
|
||||
|
||||
while (itr != last)
|
||||
{
|
||||
@ -505,7 +517,7 @@ namespace etl
|
||||
ETL_DECREMENT_DEBUG_COUNT
|
||||
}
|
||||
|
||||
refmap_t::erase(first, last);
|
||||
return refmap_t::erase(first, last);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
|
||||
@ -269,7 +269,7 @@ namespace etl
|
||||
///\param position The position to insert at.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
iterator insert(iterator position, const_reference value)
|
||||
iterator insert(const_iterator position, const_reference value)
|
||||
{
|
||||
return insert(value).first;
|
||||
}
|
||||
@ -281,7 +281,7 @@ namespace etl
|
||||
///\param position The position to insert at.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
iterator insert(iterator position, rvalue_reference value)
|
||||
iterator insert(const_iterator position, rvalue_reference value)
|
||||
{
|
||||
return insert(etl::move(value)).first;
|
||||
}
|
||||
@ -429,12 +429,24 @@ namespace etl
|
||||
/// Erases an element.
|
||||
///\param i_element Iterator to the element.
|
||||
//*********************************************************************
|
||||
void erase(iterator i_element)
|
||||
iterator erase(iterator i_element)
|
||||
{
|
||||
etl::destroy_at(etl::addressof(*i_element));
|
||||
storage.release(etl::addressof(*i_element));
|
||||
refset_t::erase(i_element);
|
||||
ETL_DECREMENT_DEBUG_COUNT
|
||||
return refset_t::erase(i_element);
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
/// Erases an element.
|
||||
///\param i_element Iterator to the element.
|
||||
//*********************************************************************
|
||||
iterator erase(const_iterator i_element)
|
||||
{
|
||||
etl::destroy_at(etl::addressof(*i_element));
|
||||
storage.release(etl::addressof(*i_element));
|
||||
ETL_DECREMENT_DEBUG_COUNT
|
||||
return refset_t::erase(i_element);
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
@ -444,9 +456,9 @@ namespace etl
|
||||
///\param first Iterator to the first element.
|
||||
///\param last Iterator to the last element.
|
||||
//*********************************************************************
|
||||
void erase(iterator first, iterator last)
|
||||
iterator erase(const_iterator first, const_iterator last)
|
||||
{
|
||||
iterator itr = first;
|
||||
const_iterator itr = first;
|
||||
|
||||
while (itr != last)
|
||||
{
|
||||
@ -456,7 +468,7 @@ namespace etl
|
||||
ETL_DECREMENT_DEBUG_COUNT
|
||||
}
|
||||
|
||||
refset_t::erase(first, last);
|
||||
return refset_t::erase(first, last);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
|
||||
@ -277,7 +277,7 @@ namespace etl
|
||||
///\param position The position to insert at.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
iterator insert(iterator position, const_reference value)
|
||||
iterator insert(const_iterator position, const_reference value)
|
||||
{
|
||||
return insert(value).first;
|
||||
}
|
||||
@ -289,7 +289,7 @@ namespace etl
|
||||
///\param position The position to insert at.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
iterator insert(iterator position, rvalue_reference value)
|
||||
iterator insert(const_iterator position, rvalue_reference value)
|
||||
{
|
||||
return insert(etl::move(value)).first;
|
||||
}
|
||||
@ -513,12 +513,24 @@ namespace etl
|
||||
/// Erases an element.
|
||||
///\param i_element Iterator to the element.
|
||||
//*********************************************************************
|
||||
void erase(iterator i_element)
|
||||
iterator erase(iterator i_element)
|
||||
{
|
||||
etl::destroy_at(etl::addressof(*i_element));
|
||||
storage.release(etl::addressof(*i_element));
|
||||
refset_t::erase(i_element);
|
||||
ETL_DECREMENT_DEBUG_COUNT
|
||||
return refset_t::erase(i_element);
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
/// Erases an element.
|
||||
///\param i_element Iterator to the element.
|
||||
//*********************************************************************
|
||||
iterator erase(const_iterator i_element)
|
||||
{
|
||||
etl::destroy_at(etl::addressof(*i_element));
|
||||
storage.release(etl::addressof(*i_element));
|
||||
ETL_DECREMENT_DEBUG_COUNT
|
||||
return refset_t::erase(i_element);
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
@ -528,9 +540,9 @@ namespace etl
|
||||
///\param first Iterator to the first element.
|
||||
///\param last Iterator to the last element.
|
||||
//*********************************************************************
|
||||
void erase(iterator first, iterator last)
|
||||
iterator erase(const_iterator first, const_iterator last)
|
||||
{
|
||||
iterator itr = first;
|
||||
const_iterator itr = first;
|
||||
|
||||
while (itr != last)
|
||||
{
|
||||
@ -540,7 +552,7 @@ namespace etl
|
||||
ETL_DECREMENT_DEBUG_COUNT
|
||||
}
|
||||
|
||||
refset_t::erase(first, last);
|
||||
return refset_t::erase(first, last);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
|
||||
@ -647,7 +647,7 @@ namespace etl
|
||||
/// If ETL_THROW_EXCEPTIONS & ETL_DEBUG are defined throws forward_list_iterator if the iterators are reversed.
|
||||
//*************************************************************************
|
||||
template <typename TIterator>
|
||||
void assign(TIterator first, TIterator last)
|
||||
void assign(TIterator first, TIterator last, typename etl::enable_if<!etl::is_integral<TIterator>::value, int>::type = 0)
|
||||
{
|
||||
#if defined(ETL_DEBUG)
|
||||
difference_type d = etl::distance(first, last);
|
||||
@ -866,12 +866,12 @@ namespace etl
|
||||
//*************************************************************************
|
||||
/// Inserts a value to the forward_list after the specified position.
|
||||
//*************************************************************************
|
||||
iterator insert_after(iterator position, const T& value)
|
||||
iterator insert_after(const_iterator position, const T& value)
|
||||
{
|
||||
ETL_ASSERT(!full(), ETL_ERROR(forward_list_full));
|
||||
|
||||
data_node_t& data_node = allocate_data_node(value);
|
||||
insert_node_after(*position.p_node, data_node);
|
||||
insert_node_after(*to_iterator(position).p_node, data_node);
|
||||
|
||||
return iterator(&data_node);
|
||||
}
|
||||
@ -881,14 +881,14 @@ namespace etl
|
||||
/// Emplaces a value to the forward_list after the specified position.
|
||||
//*************************************************************************
|
||||
template <typename ... Args>
|
||||
iterator emplace_after(iterator position, Args && ... args)
|
||||
iterator emplace_after(const_iterator position, Args && ... args)
|
||||
{
|
||||
ETL_ASSERT(!full(), ETL_ERROR(forward_list_full));
|
||||
|
||||
data_node_t* p_data_node = create_data_node();
|
||||
::new (&(p_data_node->value)) T(etl::forward<Args>(args)...);
|
||||
ETL_INCREMENT_DEBUG_COUNT
|
||||
insert_node_after(*position.p_node, *p_data_node);
|
||||
insert_node_after(*to_iterator(position).p_node, *p_data_node);
|
||||
|
||||
return iterator(p_data_node);
|
||||
}
|
||||
@ -897,7 +897,7 @@ namespace etl
|
||||
/// Emplaces a value to the forward_list after the specified position.
|
||||
//*************************************************************************
|
||||
template <typename T1>
|
||||
iterator emplace_after(iterator position, const T1& value1)
|
||||
iterator emplace_after(const_iterator position, const T1& value1)
|
||||
{
|
||||
ETL_ASSERT(!full(), ETL_ERROR(forward_list_full));
|
||||
|
||||
@ -913,7 +913,7 @@ namespace etl
|
||||
/// Emplaces a value to the forward_list after the specified position.
|
||||
//*************************************************************************
|
||||
template <typename T1, typename T2>
|
||||
iterator emplace_after(iterator position, const T1& value1, const T2& value2)
|
||||
iterator emplace_after(const_iterator position, const T1& value1, const T2& value2)
|
||||
{
|
||||
ETL_ASSERT(!full(), ETL_ERROR(forward_list_full));
|
||||
|
||||
@ -929,7 +929,7 @@ namespace etl
|
||||
/// Emplaces a value to the forward_list after the specified position.
|
||||
//*************************************************************************
|
||||
template <typename T1, typename T2, typename T3>
|
||||
iterator emplace_after(iterator position, const T1& value1, const T2& value2, const T3& value3)
|
||||
iterator emplace_after(const_iterator position, const T1& value1, const T2& value2, const T3& value3)
|
||||
{
|
||||
ETL_ASSERT(!full(), ETL_ERROR(forward_list_full));
|
||||
|
||||
@ -945,7 +945,7 @@ namespace etl
|
||||
/// Emplaces a value to the forward_list after the specified position.
|
||||
//*************************************************************************
|
||||
template <typename T1, typename T2, typename T3, typename T4>
|
||||
iterator emplace_after(iterator position, const T1& value1, const T2& value2, const T3& value3, const T4& value4)
|
||||
iterator emplace_after(const_iterator position, const T1& value1, const T2& value2, const T3& value3, const T4& value4)
|
||||
{
|
||||
ETL_ASSERT(!full(), ETL_ERROR(forward_list_full));
|
||||
|
||||
@ -961,7 +961,7 @@ namespace etl
|
||||
//*************************************************************************
|
||||
/// Inserts 'n' copies of a value to the forward_list after the specified position.
|
||||
//*************************************************************************
|
||||
void insert_after(iterator position, size_t n, const T& value)
|
||||
iterator insert_after(const_iterator position, size_t n, const T& value)
|
||||
{
|
||||
ETL_ASSERT(!full(), ETL_ERROR(forward_list_full));
|
||||
|
||||
@ -969,15 +969,22 @@ namespace etl
|
||||
{
|
||||
// Set up the next free node.
|
||||
data_node_t& data_node = allocate_data_node(value);
|
||||
insert_node_after(*position.p_node, data_node);
|
||||
insert_node_after(*to_iterator(position).p_node, data_node);
|
||||
}
|
||||
|
||||
if (n > 0U)
|
||||
{
|
||||
++position;
|
||||
}
|
||||
|
||||
return to_iterator(position);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/// Inserts a range of values to the forward_list after the specified position.
|
||||
//*************************************************************************
|
||||
template <typename TIterator>
|
||||
void insert_after(iterator position, TIterator first, TIterator last)
|
||||
iterator insert_after(const_iterator position, TIterator first, TIterator last, typename etl::enable_if<!etl::is_integral<TIterator>::value, int>::type = 0)
|
||||
{
|
||||
#if defined(ETL_DEBUG)
|
||||
difference_type d = etl::distance(first, last);
|
||||
@ -988,9 +995,11 @@ namespace etl
|
||||
{
|
||||
// Set up the next free node.
|
||||
data_node_t& data_node = allocate_data_node(*first++);
|
||||
insert_node_after(*position.p_node, data_node);
|
||||
insert_node_after(*to_iterator(position).p_node, data_node);
|
||||
++position;
|
||||
}
|
||||
|
||||
return to_iterator(position);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
@ -1012,16 +1021,35 @@ namespace etl
|
||||
return next;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/// Erases the value at the specified position.
|
||||
//*************************************************************************
|
||||
iterator erase_after(const_iterator position)
|
||||
{
|
||||
iterator next(position);
|
||||
if (next != end())
|
||||
{
|
||||
++next;
|
||||
if (next != end())
|
||||
{
|
||||
++next;
|
||||
remove_node_after(*position.p_node);
|
||||
}
|
||||
}
|
||||
|
||||
return next;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/// Erases a range of elements.
|
||||
//*************************************************************************
|
||||
iterator erase_after(iterator first, iterator last)
|
||||
iterator erase_after(const_iterator first, const_iterator last)
|
||||
{
|
||||
if (first != end() && (first != last))
|
||||
{
|
||||
node_t* p_first = first.p_node;
|
||||
node_t* p_last = last.p_node;
|
||||
node_t* p_next = p_first->next;
|
||||
node_t* p_first = to_iterator(first).p_node;
|
||||
node_t* p_last = to_iterator(last).p_node;
|
||||
node_t* p_next = p_first->next;
|
||||
|
||||
// Join the ends.
|
||||
join(p_first, p_last);
|
||||
@ -1063,7 +1091,7 @@ namespace etl
|
||||
}
|
||||
|
||||
node_t* p_from_before = const_cast<node_t*>(from_before.p_node); // We're not changing the value, just it's position.
|
||||
node_t* p_to_before = const_cast<node_t*>(to_before.p_node); // We're not changing the value, just it's position.
|
||||
node_t* p_to_before = const_cast<node_t*>(to_before.p_node); // We're not changing the value, just it's position.
|
||||
|
||||
node_t* p_from = p_from_before->next;
|
||||
|
||||
@ -1592,6 +1620,16 @@ namespace etl
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
private:
|
||||
|
||||
//*************************************************************************
|
||||
/// Convert const_iterator to iterator.
|
||||
//*************************************************************************
|
||||
iterator to_iterator(const_iterator itr) const
|
||||
{
|
||||
return iterator(const_cast<node_t*>(itr.p_node));
|
||||
}
|
||||
};
|
||||
|
||||
//*************************************************************************
|
||||
@ -1718,7 +1756,7 @@ namespace etl
|
||||
//*************************************************************************
|
||||
/// Template deduction guides.
|
||||
//*************************************************************************
|
||||
#if ETL_CPP17_SUPPORTED
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST
|
||||
template <typename... T>
|
||||
forward_list(T...) ->forward_list<typename etl::common_type_t<T...>, sizeof...(T)>;
|
||||
#endif
|
||||
@ -1726,7 +1764,7 @@ namespace etl
|
||||
//*************************************************************************
|
||||
/// Make
|
||||
//*************************************************************************
|
||||
#if ETL_USING_INITIALIZER_LIST
|
||||
#if ETL_CPP11_SUPPORTED && ETL_USING_INITIALIZER_LIST
|
||||
template <typename... T>
|
||||
constexpr auto make_forward_list(T... t) -> etl::forward_list<typename etl::common_type_t<T...>, sizeof...(T)>
|
||||
{
|
||||
|
||||
@ -2024,60 +2024,92 @@ namespace etl
|
||||
#endif
|
||||
|
||||
#if ETL_CPP11_SUPPORTED
|
||||
// primary template (used for zero types)
|
||||
template<class...>
|
||||
struct common_type {};
|
||||
//*********************************************
|
||||
// common_type
|
||||
// Based on the sample implementation detailed on
|
||||
// https://en.cppreference.com/w/cpp/types/common_type
|
||||
//*********************************************
|
||||
#if ETL_CPP11_SUPPORTED
|
||||
//***********************************
|
||||
// Primary template
|
||||
template<typename...>
|
||||
struct common_type
|
||||
{
|
||||
};
|
||||
|
||||
//////// one type
|
||||
template <class T>
|
||||
struct common_type<T> : common_type<T, T> {};
|
||||
//***********************************
|
||||
// One type
|
||||
template <typename T>
|
||||
struct common_type<T> : common_type<T, T>
|
||||
{
|
||||
};
|
||||
|
||||
namespace detail {
|
||||
template<class...>
|
||||
namespace private_common_type
|
||||
{
|
||||
template <typename...>
|
||||
using void_t = void;
|
||||
|
||||
template<class T1, class T2>
|
||||
using conditional_result_t = decltype(false ? std::declval<T1>() : std::declval<T2>());
|
||||
template <typename T1, typename T2>
|
||||
using conditional_result_t = decltype(false ? declval<T1>() : declval<T2>());
|
||||
|
||||
template<class, class, class = void>
|
||||
struct decay_conditional_result {};
|
||||
template<class T1, class T2>
|
||||
template <typename, typename, typename = void>
|
||||
struct decay_conditional_result
|
||||
{
|
||||
};
|
||||
|
||||
template <typename T1, typename T2>
|
||||
struct decay_conditional_result<T1, T2, void_t<conditional_result_t<T1, T2>>>
|
||||
: std::decay<conditional_result_t<T1, T2>> {};
|
||||
: etl::decay<conditional_result_t<T1, T2>>
|
||||
{
|
||||
};
|
||||
|
||||
template<class T1, class T2, class = void>
|
||||
struct common_type_2_impl : decay_conditional_result<const T1&, const T2&> {};
|
||||
template <typename T1, typename T2, typename = void>
|
||||
struct common_type_2_impl : decay_conditional_result<const T1&, const T2&>
|
||||
{
|
||||
};
|
||||
|
||||
// C++11 implementation:
|
||||
// template<class, class, class = void>
|
||||
// struct common_type_2_impl {};
|
||||
|
||||
template<class T1, class T2>
|
||||
template <typename T1, typename T2>
|
||||
struct common_type_2_impl<T1, T2, void_t<conditional_result_t<T1, T2>>>
|
||||
: decay_conditional_result<T1, T2> {};
|
||||
: decay_conditional_result<T1, T2>
|
||||
{
|
||||
};
|
||||
}
|
||||
|
||||
//////// two types
|
||||
template<class T1, class T2>
|
||||
//***********************************
|
||||
// Two types
|
||||
template <typename T1, typename T2>
|
||||
struct common_type<T1, T2>
|
||||
: std::conditional<std::is_same<T1, typename std::decay<T1>::type>::value&&
|
||||
std::is_same<T2, typename std::decay<T2>::type>::value,
|
||||
detail::common_type_2_impl<T1, T2>,
|
||||
common_type<typename std::decay<T2>::type,
|
||||
typename std::decay<T2>::type>>::type{};
|
||||
: etl::conditional<etl::is_same<T1, typename etl::decay<T1>::type>::value&& etl::is_same<T2, typename etl::decay<T2>::type>::value,
|
||||
private_common_type::common_type_2_impl<T1, T2>,
|
||||
common_type<typename etl::decay<T2>::type,
|
||||
typename etl::decay<T2>::type>>::type
|
||||
{
|
||||
};
|
||||
|
||||
//////// 3+ types
|
||||
namespace detail {
|
||||
template<class AlwaysVoid, class T1, class T2, class...R>
|
||||
struct common_type_multi_impl {};
|
||||
template<class T1, class T2, class...R>
|
||||
struct common_type_multi_impl<void_t<typename common_type<T1, T2>::type>, T1, T2, R...>
|
||||
: common_type<typename common_type<T1, T2>::type, R...> {};
|
||||
//***********************************
|
||||
// Three or more types
|
||||
namespace private_common_type
|
||||
{
|
||||
template <typename AlwaysVoid, typename T1, typename T2, typename... TRest>
|
||||
struct common_type_multi_impl
|
||||
{
|
||||
};
|
||||
|
||||
template <typename T1, typename T2, typename... TRest>
|
||||
struct common_type_multi_impl<void_t<typename common_type<T1, T2>::type>, T1, T2, TRest...>
|
||||
: common_type<typename common_type<T1, T2>::type, TRest...>
|
||||
{
|
||||
};
|
||||
}
|
||||
|
||||
template<class T1, class T2, class... R>
|
||||
struct common_type<T1, T2, R...>
|
||||
: detail::common_type_multi_impl<void, T1, T2, R...> {};
|
||||
template<typename T1, typename T2, typename... TRest>
|
||||
struct common_type<T1, T2, TRest...>
|
||||
: private_common_type::common_type_multi_impl<void, T1, T2, TRest...>
|
||||
{
|
||||
};
|
||||
|
||||
template <typename... T>
|
||||
using common_type_t = typename common_type<T...>::type;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@ -854,14 +854,14 @@ namespace etl
|
||||
///\param position The position to insert before.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
iterator insert(iterator position, const_reference value)
|
||||
iterator insert(const_iterator position, const_reference value)
|
||||
{
|
||||
ETL_ASSERT(size() != capacity(), ETL_ERROR(vector_full));
|
||||
|
||||
T* p = storage.create<T>(T(value));
|
||||
position = iterator(lookup.insert(position.lookup_itr, p));
|
||||
|
||||
return position;
|
||||
return to_iterator(position);
|
||||
}
|
||||
|
||||
#if ETL_CPP11_SUPPORTED
|
||||
@ -871,14 +871,14 @@ namespace etl
|
||||
///\param position The position to insert before.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
iterator insert(iterator position, rvalue_reference value)
|
||||
iterator insert(const_iterator position, rvalue_reference value)
|
||||
{
|
||||
ETL_ASSERT(size() != capacity(), ETL_ERROR(vector_full));
|
||||
|
||||
T* p = storage.create<T>(T(etl::move(value)));
|
||||
position = iterator(lookup.insert(position.lookup_itr, p));
|
||||
|
||||
return position;
|
||||
return to_iterator(position);
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -949,12 +949,14 @@ namespace etl
|
||||
///\param n The number of elements to add.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
void insert(iterator position, size_t n, parameter_t value)
|
||||
iterator insert(const_iterator position, size_t n, parameter_t value)
|
||||
{
|
||||
ETL_ASSERT((size() + n) <= capacity(), ETL_ERROR(vector_full));
|
||||
|
||||
iterator position_ = to_iterator(position);
|
||||
|
||||
// Make space for the new lookup pointers.
|
||||
typename etl::ivector<T*>::iterator lookup_itr = position.lookup_itr;
|
||||
typename etl::ivector<T*>::iterator lookup_itr = position_.lookup_itr;
|
||||
lookup.insert(lookup_itr, n, ETL_NULLPTR);
|
||||
|
||||
while (n-- != 0U)
|
||||
@ -962,6 +964,8 @@ namespace etl
|
||||
T* p = storage.create<T>(value);
|
||||
*lookup_itr++ = p;
|
||||
}
|
||||
|
||||
return position_;
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
@ -972,14 +976,14 @@ namespace etl
|
||||
///\param last The last + 1 element to add.
|
||||
//*********************************************************************
|
||||
template <class TIterator>
|
||||
void insert(iterator position, TIterator first, TIterator last)
|
||||
iterator insert(const_iterator position, TIterator first, TIterator last)
|
||||
{
|
||||
size_t count = size_t(etl::distance(first, last));
|
||||
|
||||
ETL_ASSERT((size() + count) <= capacity(), ETL_ERROR(vector_full));
|
||||
|
||||
// Make space for the new lookup pointers.
|
||||
typename etl::ivector<T*>::iterator lookup_itr = position.lookup_itr;
|
||||
typename etl::ivector<T*>::iterator lookup_itr = to_iterator(position).lookup_itr;
|
||||
lookup.insert(lookup_itr, count, ETL_NULLPTR);
|
||||
|
||||
while (first != last)
|
||||
@ -988,6 +992,8 @@ namespace etl
|
||||
*lookup_itr++ = p;
|
||||
++first;
|
||||
}
|
||||
|
||||
return to_iterator(position);
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
@ -1002,6 +1008,18 @@ namespace etl
|
||||
return iterator(lookup.erase(i_element.lookup_itr));
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
/// Erases an element.
|
||||
///\param i_element Iterator to the element.
|
||||
///\return An iterator pointing to the element that followed the erased element.
|
||||
//*********************************************************************
|
||||
iterator erase(const_iterator i_element)
|
||||
{
|
||||
storage.destroy<T>(etl::addressof(*i_element));
|
||||
|
||||
return iterator(lookup.erase(i_element.lookup_itr));
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
/// Erases a range of elements.
|
||||
/// The range includes all the elements between first and last, including the
|
||||
@ -1010,9 +1028,9 @@ namespace etl
|
||||
///\param last Iterator to the last element.
|
||||
///\return An iterator pointing to the element that followed the erased element.
|
||||
//*********************************************************************
|
||||
iterator erase(iterator first, iterator last)
|
||||
iterator erase(const_iterator first, const_iterator last)
|
||||
{
|
||||
iterator element = first;
|
||||
iterator element = to_iterator(first);
|
||||
|
||||
while (element != last)
|
||||
{
|
||||
@ -1022,7 +1040,7 @@ namespace etl
|
||||
|
||||
lookup.erase(first.lookup_itr, last.lookup_itr);
|
||||
|
||||
return last;
|
||||
return to_iterator(last);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
@ -1186,6 +1204,16 @@ namespace etl
|
||||
{
|
||||
initialise();
|
||||
}
|
||||
|
||||
protected:
|
||||
|
||||
//*************************************************************************
|
||||
/// Convert from const_iterator to iterator.
|
||||
//*************************************************************************
|
||||
iterator to_iterator(const_iterator itr) const
|
||||
{
|
||||
return iterator(const_cast<indirect_iterator>(itr.lookup_itr));
|
||||
}
|
||||
};
|
||||
|
||||
//***************************************************************************
|
||||
@ -1394,12 +1422,23 @@ namespace etl
|
||||
//*************************************************************************
|
||||
/// Template deduction guides.
|
||||
//*************************************************************************
|
||||
#if ETL_CPP17_SUPPORTED && ETL_NOT_USING_STLPORT && ETL_USING_STL
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST
|
||||
template <typename T, typename... Ts>
|
||||
indirect_vector(T, Ts...)
|
||||
->indirect_vector<etl::enable_if_t<(etl::is_same_v<T, Ts> && ...), T>, 1U + sizeof...(Ts)>;
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
/// Make
|
||||
//*************************************************************************
|
||||
#if ETL_CPP11_SUPPORTED && ETL_USING_INITIALIZER_LIST
|
||||
template <typename... T>
|
||||
constexpr auto make_indirect_vector(T... t) -> etl::indirect_vector<typename etl::common_type_t<T...>, sizeof...(T)>
|
||||
{
|
||||
return { { etl::forward<T>(t)... } };
|
||||
}
|
||||
#endif
|
||||
|
||||
//***************************************************************************
|
||||
/// A indirect_vector implementation that uses a fixed size buffer.
|
||||
/// The buffer is supplied on construction.
|
||||
|
||||
@ -673,7 +673,7 @@ namespace etl
|
||||
//*************************************************************************
|
||||
/// Inserts a value to the intrusive_list before the specified position.
|
||||
//*************************************************************************
|
||||
iterator insert(iterator position, value_type& value)
|
||||
iterator insert(const_iterator position, value_type& value)
|
||||
{
|
||||
this->insert_link(position.p_value->link_type::etl_previous, value);
|
||||
return iterator(value);
|
||||
@ -683,7 +683,7 @@ namespace etl
|
||||
/// Inserts a range of values to the intrusive_list after the specified position.
|
||||
//*************************************************************************
|
||||
template <typename TIterator>
|
||||
void insert(iterator position, TIterator first, TIterator last)
|
||||
void insert(const_iterator position, TIterator first, TIterator last)
|
||||
{
|
||||
while (first != last)
|
||||
{
|
||||
@ -705,14 +705,30 @@ namespace etl
|
||||
return next;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/// Erases the value at the specified position.
|
||||
//*************************************************************************
|
||||
iterator erase(const_iterator position)
|
||||
{
|
||||
iterator next(position);
|
||||
++next;
|
||||
|
||||
this->remove_link(*position.p_value);
|
||||
|
||||
return next;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/// Erases a range of elements.
|
||||
/// Clears the links after erasing if AUTO or CHECKED.
|
||||
//*************************************************************************
|
||||
iterator erase(iterator first, iterator last)
|
||||
iterator erase(const_iterator first, const_iterator last)
|
||||
{
|
||||
link_type* p_first = first.p_value;
|
||||
link_type* p_last = last.p_value;
|
||||
const link_type* cp_first = first.p_value;
|
||||
const link_type* cp_last = last.p_value;
|
||||
|
||||
link_type* p_first = const_cast<link_type*>(cp_first);
|
||||
link_type* p_last = const_cast<link_type*>(cp_last);
|
||||
|
||||
// Join the ends.
|
||||
etl::link<link_type>(p_first->etl_previous, p_last);
|
||||
|
||||
@ -797,7 +797,7 @@ namespace etl
|
||||
/// If ETL_THROW_EXCEPTIONS & ETL_DEBUG are defined throws list_iterator if the iterators are reversed.
|
||||
//*************************************************************************
|
||||
template <typename TIterator>
|
||||
void assign(TIterator first, TIterator last)
|
||||
void assign(TIterator first, TIterator last, typename etl::enable_if<!etl::is_integral<TIterator>::value, int>::type = 0)
|
||||
{
|
||||
#if defined(ETL_DEBUG)
|
||||
difference_type d = etl::distance(first, last);
|
||||
@ -822,7 +822,7 @@ namespace etl
|
||||
void assign(size_t n, const T& value)
|
||||
{
|
||||
#if defined(ETL_DEBUG)
|
||||
ETL_ASSERT(n <= available(), ETL_ERROR(list_full));
|
||||
ETL_ASSERT(n <= MAX_SIZE, ETL_ERROR(list_full));
|
||||
#endif
|
||||
|
||||
initialise();
|
||||
@ -1073,12 +1073,12 @@ namespace etl
|
||||
//*************************************************************************
|
||||
/// Inserts a value to the list at the specified position.
|
||||
//*************************************************************************
|
||||
iterator insert(iterator position, const_reference value)
|
||||
iterator insert(const_iterator position, const_reference value)
|
||||
{
|
||||
ETL_ASSERT(!full(), ETL_ERROR(list_full));
|
||||
|
||||
data_node_t& data_node = allocate_data_node(value);
|
||||
insert_node(*position.p_node, data_node);
|
||||
insert_node(*to_iterator(position).p_node, data_node);
|
||||
|
||||
return iterator(data_node);
|
||||
}
|
||||
@ -1087,12 +1087,12 @@ namespace etl
|
||||
//*************************************************************************
|
||||
/// Inserts a value to the list at the specified position.
|
||||
//*************************************************************************
|
||||
iterator insert(iterator position, rvalue_reference value)
|
||||
iterator insert(const_iterator position, rvalue_reference value)
|
||||
{
|
||||
ETL_ASSERT(!full(), ETL_ERROR(list_full));
|
||||
|
||||
data_node_t& data_node = allocate_data_node(etl::move(value));
|
||||
insert_node(*position.p_node, data_node);
|
||||
insert_node(*to_iterator(position).p_node, data_node);
|
||||
|
||||
return iterator(data_node);
|
||||
}
|
||||
@ -1103,7 +1103,7 @@ namespace etl
|
||||
//*************************************************************************
|
||||
#if ETL_CPP11_SUPPORTED && ETL_NOT_USING_STLPORT
|
||||
template <typename ... Args>
|
||||
iterator emplace(iterator position, Args && ... args)
|
||||
iterator emplace(const_iterator position, Args && ... args)
|
||||
{
|
||||
ETL_ASSERT(!full(), ETL_ERROR(list_full));
|
||||
ETL_ASSERT(p_node_pool != ETL_NULLPTR, ETL_ERROR(list_no_pool));
|
||||
@ -1111,13 +1111,13 @@ namespace etl
|
||||
data_node_t* p_data_node = create_data_node();
|
||||
::new (&(p_data_node->value)) T(etl::forward<Args>(args)...);
|
||||
ETL_INCREMENT_DEBUG_COUNT
|
||||
insert_node(*position.p_node, *p_data_node);
|
||||
insert_node(*to_iterator(position).p_node, *p_data_node);
|
||||
|
||||
return iterator(*p_data_node);
|
||||
}
|
||||
#else
|
||||
template <typename T1>
|
||||
iterator emplace(iterator position, const T1& value1)
|
||||
iterator emplace(const_iterator position, const T1& value1)
|
||||
{
|
||||
ETL_ASSERT(!full(), ETL_ERROR(list_full));
|
||||
ETL_ASSERT(p_node_pool != ETL_NULLPTR, ETL_ERROR(list_no_pool));
|
||||
@ -1131,7 +1131,7 @@ namespace etl
|
||||
}
|
||||
|
||||
template <typename T1, typename T2>
|
||||
iterator emplace(iterator position, const T1& value1, const T2& value2)
|
||||
iterator emplace(const_iterator position, const T1& value1, const T2& value2)
|
||||
{
|
||||
ETL_ASSERT(!full(), ETL_ERROR(list_full));
|
||||
ETL_ASSERT(p_node_pool != ETL_NULLPTR, ETL_ERROR(list_no_pool));
|
||||
@ -1145,7 +1145,7 @@ namespace etl
|
||||
}
|
||||
|
||||
template <typename T1, typename T2, typename T3>
|
||||
iterator emplace(iterator position, const T1& value1, const T2& value2, const T3& value3)
|
||||
iterator emplace(const_iterator position, const T1& value1, const T2& value2, const T3& value3)
|
||||
{
|
||||
ETL_ASSERT(!full(), ETL_ERROR(list_full));
|
||||
ETL_ASSERT(p_node_pool != ETL_NULLPTR, ETL_ERROR(list_no_pool));
|
||||
@ -1159,7 +1159,7 @@ namespace etl
|
||||
}
|
||||
|
||||
template <typename T1, typename T2, typename T3, typename T4>
|
||||
iterator emplace(iterator position, const T1& value1, const T2& value2, const T3& value3, const T4& value4)
|
||||
iterator emplace(const_iterator position, const T1& value1, const T2& value2, const T3& value3, const T4& value4)
|
||||
{
|
||||
ETL_ASSERT(!full(), ETL_ERROR(list_full));
|
||||
ETL_ASSERT(p_node_pool != ETL_NULLPTR, ETL_ERROR(list_no_pool));
|
||||
@ -1176,14 +1176,14 @@ namespace etl
|
||||
//*************************************************************************
|
||||
/// Inserts 'n' copies of a value to the list at the specified position.
|
||||
//*************************************************************************
|
||||
void insert(iterator position, size_t n, const_reference value)
|
||||
void insert(const_iterator position, size_t n, const_reference value)
|
||||
{
|
||||
for (size_t i = 0UL; i < n; ++i)
|
||||
{
|
||||
ETL_ASSERT(!full(), ETL_ERROR(list_full));
|
||||
|
||||
// Set up the next free node and insert.
|
||||
insert_node(*position.p_node, allocate_data_node(value));
|
||||
insert_node(*to_iterator(position).p_node, allocate_data_node(value));
|
||||
}
|
||||
}
|
||||
|
||||
@ -1191,34 +1191,39 @@ namespace etl
|
||||
/// Inserts a range of values to the list at the specified position.
|
||||
//*************************************************************************
|
||||
template <typename TIterator>
|
||||
void insert(iterator position, TIterator first, TIterator last)
|
||||
void insert(const_iterator position, TIterator first, TIterator last, typename etl::enable_if<!etl::is_integral<TIterator>::value, int>::type = 0)
|
||||
{
|
||||
while (first != last)
|
||||
{
|
||||
ETL_ASSERT(!full(), ETL_ERROR(list_full));
|
||||
|
||||
// Set up the next free node and insert.
|
||||
insert_node(*position.p_node, allocate_data_node(*first++));
|
||||
insert_node(*to_iterator(position).p_node, allocate_data_node(*first++));
|
||||
}
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/// Erases the value at the specified position.
|
||||
//*************************************************************************
|
||||
iterator erase(iterator position)
|
||||
iterator erase(const_iterator position)
|
||||
{
|
||||
++position;
|
||||
remove_node(*position.p_node->previous);
|
||||
return position;
|
||||
iterator position_ = to_iterator(position);
|
||||
|
||||
++position_;
|
||||
remove_node(*position_.p_node->previous);
|
||||
return position_;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/// Erases a range of elements.
|
||||
//*************************************************************************
|
||||
iterator erase(iterator first, iterator last)
|
||||
iterator erase(const_iterator first, const_iterator last)
|
||||
{
|
||||
node_t* p_first = first.p_node;
|
||||
node_t* p_last = last.p_node;
|
||||
iterator first_ = to_iterator(first);
|
||||
iterator last_ = to_iterator(last);
|
||||
|
||||
node_t* p_first = first_.p_node;
|
||||
node_t* p_last = last_.p_node;
|
||||
node_t* p_next;
|
||||
|
||||
// Join the ends.
|
||||
@ -1227,12 +1232,12 @@ namespace etl
|
||||
// Erase the ones in between.
|
||||
while (p_first != p_last)
|
||||
{
|
||||
p_next = p_first->next; // Remember the next node.
|
||||
p_next = p_first->next; // Remember the next node.
|
||||
destroy_data_node(static_cast<data_node_t&>(*p_first)); // Destroy the current node.
|
||||
p_first = p_next; // Move to the next node.
|
||||
}
|
||||
|
||||
return last;
|
||||
return last_;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
@ -2001,6 +2006,16 @@ namespace etl
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
private:
|
||||
|
||||
//*************************************************************************
|
||||
/// Convert from const_iterator to iterator.
|
||||
//*************************************************************************
|
||||
iterator to_iterator(const_iterator itr) const
|
||||
{
|
||||
return iterator(*(const_cast<node_t*>(itr.p_node)));
|
||||
}
|
||||
};
|
||||
|
||||
//*************************************************************************
|
||||
@ -2151,7 +2166,7 @@ namespace etl
|
||||
//*************************************************************************
|
||||
/// Template deduction guides.
|
||||
//*************************************************************************
|
||||
#if ETL_CPP17_SUPPORTED
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST
|
||||
template <typename... T>
|
||||
list(T...) -> list<typename etl::common_type_t<T...>,
|
||||
sizeof...(T)>;
|
||||
@ -2160,7 +2175,7 @@ namespace etl
|
||||
//*************************************************************************
|
||||
/// Make
|
||||
//*************************************************************************
|
||||
#if ETL_USING_INITIALIZER_LIST
|
||||
#if ETL_CPP11_SUPPORTED && ETL_USING_INITIALIZER_LIST
|
||||
template <typename... T>
|
||||
constexpr auto make_list(T... t) -> etl::list<typename etl::common_type_t<T...>, sizeof...(T)>
|
||||
{
|
||||
|
||||
@ -991,15 +991,6 @@ namespace etl
|
||||
const_iterator(*this, find_upper_node(root_node, key)));
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/// Erases the value at the specified position.
|
||||
//*************************************************************************
|
||||
void erase(iterator position)
|
||||
{
|
||||
// Remove the node by its key
|
||||
erase((*position).first);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/// Erases the value at the specified position.
|
||||
//*************************************************************************
|
||||
@ -1024,20 +1015,6 @@ namespace etl
|
||||
return remove_node(root_node, key) ? 1 : 0;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/// Erases a range of elements.
|
||||
//*************************************************************************
|
||||
iterator erase(iterator first, iterator last)
|
||||
{
|
||||
iterator next;
|
||||
while (first != last)
|
||||
{
|
||||
next = erase(const_iterator(first++));
|
||||
}
|
||||
|
||||
return next;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/// Erases a range of elements.
|
||||
//*************************************************************************
|
||||
@ -1128,7 +1105,7 @@ namespace etl
|
||||
///\param position The position that would precede the value to insert.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
iterator insert(iterator, const_reference value)
|
||||
iterator insert(const_iterator /*position*/, const_reference value)
|
||||
{
|
||||
// Default to no inserted node
|
||||
Node* inserted_node = ETL_NULLPTR;
|
||||
@ -1152,55 +1129,7 @@ namespace etl
|
||||
///\param position The position that would precede the value to insert.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
iterator insert(iterator, rvalue_reference value)
|
||||
{
|
||||
// Default to no inserted node
|
||||
Node* inserted_node = ETL_NULLPTR;
|
||||
|
||||
ETL_ASSERT(!full(), ETL_ERROR(map_full));
|
||||
|
||||
// Get next available free node
|
||||
Data_Node& node = allocate_data_node(etl::move(value));
|
||||
|
||||
// Obtain the inserted node (might be ETL_NULLPTR if node was a duplicate)
|
||||
inserted_node = insert_node(root_node, node);
|
||||
|
||||
// Insert node into tree and return iterator to new node location in tree
|
||||
return iterator(*this, inserted_node);
|
||||
}
|
||||
#endif
|
||||
|
||||
//*********************************************************************
|
||||
/// Inserts a value to the map starting at the position recommended.
|
||||
/// If asserts or exceptions are enabled, emits map_full if the map is already full.
|
||||
///\param position The position that would precede the value to insert.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
iterator insert(const_iterator, const_reference value)
|
||||
{
|
||||
// Default to no inserted node
|
||||
Node* inserted_node = ETL_NULLPTR;
|
||||
|
||||
ETL_ASSERT(!full(), ETL_ERROR(map_full));
|
||||
|
||||
// Get next available free node
|
||||
Data_Node& node = allocate_data_node(value);
|
||||
|
||||
// Obtain the inserted node (might be ETL_NULLPTR if node was a duplicate)
|
||||
inserted_node = insert_node(root_node, node);
|
||||
|
||||
// Insert node into tree and return iterator to new node location in tree
|
||||
return iterator(*this, inserted_node);
|
||||
}
|
||||
|
||||
#if ETL_CPP11_SUPPORTED
|
||||
//*********************************************************************
|
||||
/// Inserts a value to the map starting at the position recommended.
|
||||
/// If asserts or exceptions are enabled, emits map_full if the map is already full.
|
||||
///\param position The position that would precede the value to insert.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
iterator insert(const_iterator, rvalue_reference value)
|
||||
iterator insert(const_iterator /*position*/, rvalue_reference value)
|
||||
{
|
||||
// Default to no inserted node
|
||||
Node* inserted_node = ETL_NULLPTR;
|
||||
|
||||
@ -1102,10 +1102,10 @@ namespace etl
|
||||
//*************************************************************************
|
||||
/// Erases the value at the specified position.
|
||||
//*************************************************************************
|
||||
void erase(iterator position)
|
||||
iterator erase(iterator position)
|
||||
{
|
||||
// Remove the node by its node specified in iterator position
|
||||
(void)erase(const_iterator(position));
|
||||
return erase(const_iterator(position));
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
@ -1147,20 +1147,6 @@ namespace etl
|
||||
return d;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/// Erases a range of elements.
|
||||
//*************************************************************************
|
||||
iterator erase(iterator first, iterator last)
|
||||
{
|
||||
iterator next;
|
||||
while (first != last)
|
||||
{
|
||||
next = erase(const_iterator(first++));
|
||||
}
|
||||
|
||||
return next;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/// Erases a range of elements.
|
||||
//*************************************************************************
|
||||
@ -1241,18 +1227,6 @@ namespace etl
|
||||
}
|
||||
#endif
|
||||
|
||||
//*********************************************************************
|
||||
/// Inserts a value to the multimap starting at the position recommended.
|
||||
/// If asserts or exceptions are enabled, emits map_full if the multimap is already full.
|
||||
///\param position The position that would precede the value to insert.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
iterator insert(iterator /*position*/, const_reference value)
|
||||
{
|
||||
// Ignore position provided and just do a normal insert
|
||||
return insert(value);
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
/// Inserts a value to the multimap starting at the position recommended.
|
||||
/// If asserts or exceptions are enabled, emits map_full if the multimap is already full.
|
||||
@ -1266,18 +1240,6 @@ namespace etl
|
||||
}
|
||||
|
||||
#if ETL_CPP11_SUPPORTED
|
||||
//*********************************************************************
|
||||
/// Inserts a value to the multimap starting at the position recommended.
|
||||
/// If asserts or exceptions are enabled, emits map_full if the multimap is already full.
|
||||
///\param position The position that would precede the value to insert.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
iterator insert(iterator /*position*/, rvalue_reference value)
|
||||
{
|
||||
// Ignore position provided and just do a normal insert
|
||||
return insert(etl::move(value));
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
/// Inserts a value to the multimap starting at the position recommended.
|
||||
/// If asserts or exceptions are enabled, emits map_full if the multimap is already full.
|
||||
|
||||
@ -1086,10 +1086,10 @@ namespace etl
|
||||
//*************************************************************************
|
||||
/// Erases the value at the specified position.
|
||||
//*************************************************************************
|
||||
void erase(iterator position)
|
||||
iterator erase(iterator position)
|
||||
{
|
||||
// Remove the node by its node specified in iterator position
|
||||
(void)erase(const_iterator(position));
|
||||
return erase(const_iterator(position));
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
@ -1131,20 +1131,6 @@ namespace etl
|
||||
return d;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/// Erases a range of elements.
|
||||
//*************************************************************************
|
||||
iterator erase(iterator first, iterator last)
|
||||
{
|
||||
iterator next;
|
||||
while (first != last)
|
||||
{
|
||||
next = erase(const_iterator(first++));
|
||||
}
|
||||
|
||||
return next;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/// Erases a range of elements.
|
||||
//*************************************************************************
|
||||
@ -1225,32 +1211,6 @@ namespace etl
|
||||
}
|
||||
#endif
|
||||
|
||||
//*********************************************************************
|
||||
/// Inserts a value to the multiset starting at the position recommended.
|
||||
/// If asserts or exceptions are enabled, emits set_full if the multiset is already full.
|
||||
///\param position The position that would precede the value to insert.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
iterator insert(iterator /*position*/, const_reference value)
|
||||
{
|
||||
// Ignore position provided and just do a normal insert
|
||||
return insert(value);
|
||||
}
|
||||
|
||||
#if ETL_CPP11_SUPPORTED
|
||||
//*********************************************************************
|
||||
/// Inserts a value to the multiset starting at the position recommended.
|
||||
/// If asserts or exceptions are enabled, emits set_full if the multiset is already full.
|
||||
///\param position The position that would precede the value to insert.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
iterator insert(iterator /*position*/, rvalue_reference value)
|
||||
{
|
||||
// Ignore position provided and just do a normal insert
|
||||
return insert(etl::move(value));
|
||||
}
|
||||
#endif
|
||||
|
||||
//*********************************************************************
|
||||
/// Inserts a value to the multiset starting at the position recommended.
|
||||
/// If asserts or exceptions are enabled, emits set_full if the multiset is already full.
|
||||
|
||||
@ -222,9 +222,6 @@ SOFTWARE.
|
||||
// Check for availability of certain builtins
|
||||
#include "profiles/determine_builtin_support.h"
|
||||
|
||||
// Check for availability of certain builtins
|
||||
#include "profiles/determine_builtin_support.h"
|
||||
|
||||
// Sort out namespaces for STL/No STL options.
|
||||
#include "private/choose_namespace.h"
|
||||
|
||||
|
||||
@ -374,7 +374,7 @@ namespace etl
|
||||
///\param position The position to insert before.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
iterator insert(iterator position, parameter_t value)
|
||||
iterator insert(const_iterator position, parameter_t value)
|
||||
{
|
||||
return iterator(base_t::insert(base_t::iterator(position), value));
|
||||
}
|
||||
@ -382,7 +382,7 @@ namespace etl
|
||||
//*************************************************************************
|
||||
/// Emplaces a value to the vector at the specified position.
|
||||
//*************************************************************************
|
||||
iterator emplace(iterator position, parameter_t value)
|
||||
iterator emplace(const_iterator position, parameter_t value)
|
||||
{
|
||||
return iterator(base_t::emplace(base_t::iterator(position), value));
|
||||
}
|
||||
@ -394,7 +394,7 @@ namespace etl
|
||||
///\param n The number of elements to add.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
void insert(iterator position, size_t n, parameter_t value)
|
||||
void insert(const_iterator position, size_t n, parameter_t value)
|
||||
{
|
||||
base_t::insert(base_t::iterator(position), n, value);
|
||||
}
|
||||
@ -407,7 +407,7 @@ namespace etl
|
||||
///\param last The last + 1 element to add.
|
||||
//*********************************************************************
|
||||
template <class TIterator>
|
||||
void insert(iterator position, TIterator first, TIterator last)
|
||||
void insert(const_iterator position, TIterator first, TIterator last)
|
||||
{
|
||||
base_t::insert(base_t::iterator(position), first, last);
|
||||
}
|
||||
@ -422,6 +422,16 @@ namespace etl
|
||||
return iterator(base_t::erase(base_t::iterator(i_element)));
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
/// Erases an element.
|
||||
///\param i_element Iterator to the element.
|
||||
///\return An iterator pointing to the element that followed the erased element.
|
||||
//*********************************************************************
|
||||
iterator erase(const_iterator i_element)
|
||||
{
|
||||
return iterator(base_t::erase(base_t::const_iterator(i_element)));
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
/// Erases a range of elements.
|
||||
/// The range includes all the elements between first and last, including the
|
||||
@ -430,9 +440,9 @@ namespace etl
|
||||
///\param last Iterator to the last element.
|
||||
///\return An iterator pointing to the element that followed the erased element.
|
||||
//*********************************************************************
|
||||
iterator erase(iterator first, iterator last)
|
||||
iterator erase(const_iterator first, const_iterator last)
|
||||
{
|
||||
return iterator(base_t::erase(base_t::iterator(first), base_t::iterator(last)));
|
||||
return iterator(base_t::erase(base_t::const_iterator(first), base_t::const_iterator(last)));
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
@ -795,7 +805,7 @@ namespace etl
|
||||
///\param position The position to insert before.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
iterator insert(iterator position, parameter_t value)
|
||||
iterator insert(const_iterator position, parameter_t value)
|
||||
{
|
||||
return iterator(base_t::insert(base_t::iterator(position), const_cast<T*>(value)));
|
||||
}
|
||||
@ -807,7 +817,7 @@ namespace etl
|
||||
///\param n The number of elements to add.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
void insert(iterator position, size_t n, parameter_t value)
|
||||
void insert(const_iterator position, size_t n, parameter_t value)
|
||||
{
|
||||
base_t::insert(base_t::iterator(position), n, const_cast<T*>(value));
|
||||
}
|
||||
@ -820,7 +830,7 @@ namespace etl
|
||||
///\param last The last + 1 element to add.
|
||||
//*********************************************************************
|
||||
template <class TIterator>
|
||||
void insert(iterator position, TIterator first, TIterator last)
|
||||
void insert(const_iterator position, TIterator first, TIterator last)
|
||||
{
|
||||
base_t::insert(base_t::iterator(position), first, last);
|
||||
}
|
||||
@ -835,6 +845,16 @@ namespace etl
|
||||
return iterator(base_t::erase(base_t::iterator(i_element)));
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
/// Erases an element.
|
||||
///\param i_element Iterator to the element.
|
||||
///\return An iterator pointing to the element that followed the erased element.
|
||||
//*********************************************************************
|
||||
iterator erase(const_iterator i_element)
|
||||
{
|
||||
return iterator(base_t::erase(base_t::iterator(i_element)));
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
/// Erases a range of elements.
|
||||
/// The range includes all the elements between first and last, including the
|
||||
@ -843,7 +863,7 @@ namespace etl
|
||||
///\param last Iterator to the last element.
|
||||
///\return An iterator pointing to the element that followed the erased element.
|
||||
//*********************************************************************
|
||||
iterator erase(iterator first, iterator last)
|
||||
iterator erase(const_iterator first, const_iterator last)
|
||||
{
|
||||
return iterator(base_t::erase(base_t::iterator(first), base_t::iterator(last)));
|
||||
}
|
||||
|
||||
@ -441,22 +441,24 @@ namespace etl
|
||||
///\param position The position to insert before.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
iterator insert(iterator position, value_type value)
|
||||
iterator insert(const_iterator position, value_type value)
|
||||
{
|
||||
iterator position_ = to_iterator(position);
|
||||
|
||||
ETL_ASSERT(size() != CAPACITY, ETL_ERROR(vector_full));
|
||||
|
||||
if (position != end())
|
||||
if (position_ != end())
|
||||
{
|
||||
++p_end;
|
||||
etl::copy_backward(position, end() - 1, end());
|
||||
*position = value;
|
||||
etl::copy_backward(position_, end() - 1, end());
|
||||
*position_ = value;
|
||||
}
|
||||
else
|
||||
{
|
||||
*p_end++ = value;
|
||||
}
|
||||
|
||||
return position;
|
||||
return position_;
|
||||
}
|
||||
|
||||
|
||||
@ -464,22 +466,24 @@ namespace etl
|
||||
/// Emplaces a value to the vector at the specified position.
|
||||
/// If asserts or exceptions are enabled, emits vector_full if the vector is already full.
|
||||
//*************************************************************************
|
||||
iterator emplace(iterator position, value_type value)
|
||||
iterator emplace(const_iterator position, value_type value)
|
||||
{
|
||||
ETL_ASSERT(size() != CAPACITY, ETL_ERROR(vector_full));
|
||||
|
||||
if (position != end())
|
||||
iterator position_ = to_iterator(position);
|
||||
|
||||
if (position_ != end())
|
||||
{
|
||||
++p_end;
|
||||
etl::copy_backward(position, end() - 1, end());
|
||||
*position = value;
|
||||
etl::copy_backward(position_, end() - 1, end());
|
||||
*position_ = value;
|
||||
}
|
||||
else
|
||||
{
|
||||
*p_end++ = value;
|
||||
}
|
||||
|
||||
return position;
|
||||
return position_;
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
@ -489,12 +493,14 @@ namespace etl
|
||||
///\param n The number of elements to add.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
void insert(iterator position, size_t n, value_type value)
|
||||
void insert(const_iterator position, size_t n, value_type value)
|
||||
{
|
||||
ETL_ASSERT((size() + n) <= CAPACITY, ETL_ERROR(vector_full));
|
||||
|
||||
etl::copy_backward(position, p_end, p_end + n);
|
||||
etl::fill_n(position, n, value);
|
||||
iterator position_ = to_iterator(position);
|
||||
|
||||
etl::copy_backward(position_, p_end, p_end + n);
|
||||
etl::fill_n(position_, n, value);
|
||||
|
||||
p_end += n;
|
||||
}
|
||||
@ -508,14 +514,16 @@ namespace etl
|
||||
///\param last The last + 1 element to add.
|
||||
//*********************************************************************
|
||||
template <typename TIterator>
|
||||
void insert(iterator position, TIterator first, TIterator last)
|
||||
void insert(const_iterator position, TIterator first, TIterator last)
|
||||
{
|
||||
size_t count = etl::distance(first, last);
|
||||
|
||||
iterator position_ = to_iterator(position);
|
||||
|
||||
ETL_ASSERT((size() + count) <= CAPACITY, ETL_ERROR(vector_full));
|
||||
|
||||
etl::copy_backward(position, p_end, p_end + count);
|
||||
etl::copy(first, last, position);
|
||||
etl::copy_backward(position_, p_end, p_end + count);
|
||||
etl::copy(first, last, position_);
|
||||
p_end += count;
|
||||
}
|
||||
|
||||
@ -532,6 +540,21 @@ namespace etl
|
||||
return i_element;
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
/// Erases an element.
|
||||
///\param i_element Iterator to the element.
|
||||
///\return An iterator pointing to the element that followed the erased element.
|
||||
//*********************************************************************
|
||||
iterator erase(const_iterator i_element)
|
||||
{
|
||||
iterator i_element_ = to_iterator(i_element);
|
||||
|
||||
etl::copy(i_element_ + 1, end(), i_element_);
|
||||
--p_end;
|
||||
|
||||
return i_element_;
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
/// Erases a range of elements.
|
||||
/// The range includes all the elements between first and last, including the
|
||||
@ -540,15 +563,18 @@ namespace etl
|
||||
///\param last Iterator to the last element.
|
||||
///\return An iterator pointing to the element that followed the erased element.
|
||||
//*********************************************************************
|
||||
iterator erase(iterator first, iterator last)
|
||||
iterator erase(const_iterator first, const_iterator last)
|
||||
{
|
||||
etl::copy(last, end(), first);
|
||||
iterator first_ = to_iterator(first);
|
||||
iterator last_ = to_iterator(last);
|
||||
|
||||
etl::copy(last_, end(), first_);
|
||||
size_t n_delete = etl::distance(first, last);
|
||||
|
||||
// Just adjust the count.
|
||||
p_end -= n_delete;
|
||||
|
||||
return first;
|
||||
return first_;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
@ -656,6 +682,14 @@ namespace etl
|
||||
|
||||
private:
|
||||
|
||||
//*************************************************************************
|
||||
/// Convert from const_iterator to iterator
|
||||
//*************************************************************************
|
||||
iterator to_iterator(const_iterator itr) const
|
||||
{
|
||||
return const_cast<iterator>(itr);
|
||||
}
|
||||
|
||||
// Disable copy construction.
|
||||
pvoidvector(const pvoidvector&);
|
||||
};
|
||||
|
||||
@ -544,7 +544,7 @@ namespace etl
|
||||
///\param position The position to insert at.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
iterator insert(iterator position, reference value)
|
||||
iterator insert(const_iterator position, reference value)
|
||||
{
|
||||
return insert(value).first;
|
||||
}
|
||||
@ -589,9 +589,18 @@ namespace etl
|
||||
/// Erases an element.
|
||||
///\param i_element Iterator to the element.
|
||||
//*********************************************************************
|
||||
void erase(iterator i_element)
|
||||
iterator erase(iterator i_element)
|
||||
{
|
||||
lookup.erase(i_element.ilookup);
|
||||
return lookup.erase(i_element.ilookup);
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
/// Erases an element.
|
||||
///\param i_element Iterator to the element.
|
||||
//*********************************************************************
|
||||
iterator erase(const_iterator i_element)
|
||||
{
|
||||
return lookup.erase(i_element.ilookup);
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
@ -601,9 +610,9 @@ namespace etl
|
||||
///\param first Iterator to the first element.
|
||||
///\param last Iterator to the last element.
|
||||
//*********************************************************************
|
||||
void erase(iterator first, iterator last)
|
||||
iterator erase(const_iterator first, const_iterator last)
|
||||
{
|
||||
lookup.erase(first.ilookup, last.ilookup);
|
||||
return lookup.erase(first.ilookup, last.ilookup);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
|
||||
@ -461,7 +461,7 @@ namespace etl
|
||||
///\param position The position to insert at.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
iterator insert(iterator position, const value_type& value)
|
||||
iterator insert(const_iterator position, const value_type& value)
|
||||
{
|
||||
return insert(value).first;
|
||||
}
|
||||
@ -507,9 +507,18 @@ namespace etl
|
||||
/// Erases an element.
|
||||
///\param i_element Iterator to the element.
|
||||
//*********************************************************************
|
||||
void erase(iterator i_element)
|
||||
iterator erase(iterator i_element)
|
||||
{
|
||||
lookup.erase(i_element.ilookup);
|
||||
return lookup.erase(i_element.ilookup);
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
/// Erases an element.
|
||||
///\param i_element Iterator to the element.
|
||||
//*********************************************************************
|
||||
iterator erase(const_iterator i_element)
|
||||
{
|
||||
return lookup.erase(i_element.ilookup);
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
@ -519,9 +528,9 @@ namespace etl
|
||||
///\param first Iterator to the first element.
|
||||
///\param last Iterator to the last element.
|
||||
//*********************************************************************
|
||||
void erase(iterator first, iterator last)
|
||||
iterator erase(const_iterator first, const_iterator last)
|
||||
{
|
||||
lookup.erase(first.ilookup, last.ilookup);
|
||||
return lookup.erase(first.ilookup, last.ilookup);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
|
||||
@ -470,7 +470,7 @@ namespace etl
|
||||
///\param position The position to insert at.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
iterator insert(iterator position, value_type& value)
|
||||
iterator insert(const_iterator position, value_type& value)
|
||||
{
|
||||
return insert(value).first;
|
||||
}
|
||||
@ -516,9 +516,18 @@ namespace etl
|
||||
/// Erases an element.
|
||||
///\param i_element Iterator to the element.
|
||||
//*********************************************************************
|
||||
void erase(iterator i_element)
|
||||
iterator erase(iterator i_element)
|
||||
{
|
||||
lookup.erase(i_element.ilookup);
|
||||
return lookup.erase(i_element.ilookup);
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
/// Erases an element.
|
||||
///\param i_element Iterator to the element.
|
||||
//*********************************************************************
|
||||
iterator erase(const_iterator i_element)
|
||||
{
|
||||
return lookup.erase(i_element.ilookup);
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
@ -528,9 +537,9 @@ namespace etl
|
||||
///\param first Iterator to the first element.
|
||||
///\param last Iterator to the last element.
|
||||
//*********************************************************************
|
||||
void erase(iterator first, iterator last)
|
||||
iterator erase(const_iterator first, const_iterator last)
|
||||
{
|
||||
lookup.erase(first.ilookup, last.ilookup);
|
||||
return lookup.erase(first.ilookup, last.ilookup);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
|
||||
@ -453,7 +453,7 @@ namespace etl
|
||||
///\param position The position to insert at.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
iterator insert(iterator position, reference value)
|
||||
iterator insert(const_iterator position, reference value)
|
||||
{
|
||||
return insert(value).first;
|
||||
}
|
||||
@ -498,9 +498,18 @@ namespace etl
|
||||
/// Erases an element.
|
||||
///\param i_element Iterator to the element.
|
||||
//*********************************************************************
|
||||
void erase(iterator i_element)
|
||||
iterator erase(iterator i_element)
|
||||
{
|
||||
lookup.erase(i_element.ilookup);
|
||||
return lookup.erase(i_element.ilookup);
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
/// Erases an element.
|
||||
///\param i_element Iterator to the element.
|
||||
//*********************************************************************
|
||||
iterator erase(const_iterator i_element)
|
||||
{
|
||||
return lookup.erase(i_element.ilookup);
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
@ -510,9 +519,9 @@ namespace etl
|
||||
///\param first Iterator to the first element.
|
||||
///\param last Iterator to the last element.
|
||||
//*********************************************************************
|
||||
void erase(iterator first, iterator last)
|
||||
iterator erase(const_iterator first, const_iterator last)
|
||||
{
|
||||
lookup.erase(first.ilookup, last.ilookup);
|
||||
return lookup.erase(first.ilookup, last.ilookup);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
|
||||
@ -957,10 +957,10 @@ namespace etl
|
||||
//*************************************************************************
|
||||
/// Erases the value at the specified position.
|
||||
//*************************************************************************
|
||||
void erase(iterator position)
|
||||
iterator erase(iterator position)
|
||||
{
|
||||
// Remove the node by its key
|
||||
erase((*position));
|
||||
// Remove the node by its node specified in iterator position
|
||||
return erase(const_iterator(position));
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
@ -987,20 +987,6 @@ namespace etl
|
||||
return remove_node(root_node, key_value) ? 1 : 0;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/// Erases a range of elements.
|
||||
//*************************************************************************
|
||||
iterator erase(iterator first, iterator last)
|
||||
{
|
||||
iterator next;
|
||||
while (first != last)
|
||||
{
|
||||
next = erase(const_iterator(first++));
|
||||
}
|
||||
|
||||
return next;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/// Erases a range of elements.
|
||||
//*************************************************************************
|
||||
@ -1085,54 +1071,6 @@ namespace etl
|
||||
}
|
||||
#endif
|
||||
|
||||
//*********************************************************************
|
||||
/// Inserts a value to the set starting at the position recommended.
|
||||
/// If asserts or exceptions are enabled, emits set_full if the set is already full.
|
||||
///\param position The position that would precede the value to insert.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
iterator insert(iterator, const_reference value)
|
||||
{
|
||||
// Default to no inserted node
|
||||
Node* inserted_node = ETL_NULLPTR;
|
||||
|
||||
ETL_ASSERT(!full(), ETL_ERROR(set_full));
|
||||
|
||||
// Get next available free node
|
||||
Data_Node& node = allocate_data_node(value);
|
||||
|
||||
// Obtain the inserted node (might be ETL_NULLPTR if node was a duplicate)
|
||||
inserted_node = insert_node(root_node, node);
|
||||
|
||||
// Insert node into tree and return iterator to new node location in tree
|
||||
return iterator(*this, inserted_node);
|
||||
}
|
||||
|
||||
#if ETL_CPP11_SUPPORTED
|
||||
//*********************************************************************
|
||||
/// Inserts a value to the set starting at the position recommended.
|
||||
/// If asserts or exceptions are enabled, emits set_full if the set is already full.
|
||||
///\param position The position that would precede the value to insert.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
iterator insert(iterator, rvalue_reference value)
|
||||
{
|
||||
// Default to no inserted node
|
||||
Node* inserted_node = ETL_NULLPTR;
|
||||
|
||||
ETL_ASSERT(!full(), ETL_ERROR(set_full));
|
||||
|
||||
// Get next available free node
|
||||
Data_Node& node = allocate_data_node(etl::move(value));
|
||||
|
||||
// Obtain the inserted node (might be ETL_NULLPTR if node was a duplicate)
|
||||
inserted_node = insert_node(root_node, node);
|
||||
|
||||
// Insert node into tree and return iterator to new node location in tree
|
||||
return iterator(*this, inserted_node);
|
||||
}
|
||||
#endif
|
||||
|
||||
//*********************************************************************
|
||||
/// Inserts a value to the set starting at the position recommended.
|
||||
/// If asserts or exceptions are enabled, emits set_full if the set is already full.
|
||||
|
||||
@ -383,7 +383,8 @@ namespace etl
|
||||
///\param last The iterator to the last element + 1.
|
||||
//*********************************************************************
|
||||
template <typename TIterator>
|
||||
void assign(TIterator first, TIterator last)
|
||||
typename etl::enable_if<!etl::is_integral<TIterator>::value, void>::type
|
||||
assign(TIterator first, TIterator last)
|
||||
{
|
||||
ETL_STATIC_ASSERT((etl::is_same<typename etl::remove_cv<T>::type, typename etl::remove_cv<typename etl::iterator_traits<TIterator>::value_type>::type>::value), "Iterator type does not match container type");
|
||||
|
||||
@ -550,22 +551,24 @@ namespace etl
|
||||
///\param position The position to insert before.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
iterator insert(iterator position, const_reference value)
|
||||
iterator insert(const_iterator position, const_reference value)
|
||||
{
|
||||
ETL_ASSERT(size() != CAPACITY, ETL_ERROR(vector_full));
|
||||
|
||||
if (position == end())
|
||||
iterator position_ = to_iterator(position);
|
||||
|
||||
if (position_ == end())
|
||||
{
|
||||
create_back(value);
|
||||
}
|
||||
else
|
||||
{
|
||||
create_back(back());
|
||||
etl::move_backward(position, p_end - 2, p_end - 1);
|
||||
*position = value;
|
||||
etl::move_backward(position_, p_end - 2, p_end - 1);
|
||||
*position_ = value;
|
||||
}
|
||||
|
||||
return position;
|
||||
return position_;
|
||||
}
|
||||
|
||||
#if ETL_CPP11_SUPPORTED
|
||||
@ -575,22 +578,24 @@ namespace etl
|
||||
///\param position The position to insert before.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
iterator insert(iterator position, rvalue_reference value)
|
||||
iterator insert(const_iterator position, rvalue_reference value)
|
||||
{
|
||||
ETL_ASSERT(size() != CAPACITY, ETL_ERROR(vector_full));
|
||||
|
||||
if (position == end())
|
||||
iterator position_ = to_iterator(position);
|
||||
|
||||
if (position_ == end())
|
||||
{
|
||||
create_back(etl::move(value));
|
||||
}
|
||||
else
|
||||
{
|
||||
create_back(etl::move(back()));
|
||||
etl::move_backward(position, p_end - 2, p_end - 1);
|
||||
*position = etl::move(value);
|
||||
etl::move_backward(position_, p_end - 2, p_end - 1);
|
||||
*position_ = etl::move(value);
|
||||
}
|
||||
|
||||
return position;
|
||||
return position_;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -599,128 +604,138 @@ namespace etl
|
||||
//*************************************************************************
|
||||
#if ETL_CPP11_SUPPORTED && ETL_NOT_USING_STLPORT
|
||||
template <typename ... Args>
|
||||
iterator emplace(iterator position, Args && ... args)
|
||||
iterator emplace(const_iterator position, Args && ... args)
|
||||
{
|
||||
ETL_ASSERT(!full(), ETL_ERROR(vector_full));
|
||||
|
||||
iterator position_ = to_iterator(position);
|
||||
|
||||
void* p;
|
||||
|
||||
if (position == end())
|
||||
if (position_ == end())
|
||||
{
|
||||
p = p_end++;
|
||||
ETL_INCREMENT_DEBUG_COUNT
|
||||
}
|
||||
else
|
||||
{
|
||||
p = etl::addressof(*position);
|
||||
p = etl::addressof(*position_);
|
||||
create_back(back());
|
||||
etl::move_backward(position, p_end - 2, p_end - 1);
|
||||
(*position).~T();
|
||||
etl::move_backward(position_, p_end - 2, p_end - 1);
|
||||
(*position_).~T();
|
||||
}
|
||||
|
||||
::new (p) T(etl::forward<Args>(args)...);
|
||||
|
||||
return position;
|
||||
return position_;
|
||||
}
|
||||
#else
|
||||
template <typename T1>
|
||||
iterator emplace(iterator position, const T1& value1)
|
||||
iterator emplace(const_iterator position, const T1& value1)
|
||||
{
|
||||
ETL_ASSERT(!full(), ETL_ERROR(vector_full));
|
||||
|
||||
iterator position_ = to_iterator(position);
|
||||
|
||||
void* p;
|
||||
|
||||
if (position == end())
|
||||
if (position_ == end())
|
||||
{
|
||||
p = p_end++;
|
||||
ETL_INCREMENT_DEBUG_COUNT
|
||||
}
|
||||
else
|
||||
{
|
||||
p = etl::addressof(*position);
|
||||
p = etl::addressof(*position_);
|
||||
create_back(back());
|
||||
etl::move_backward(position, p_end - 2, p_end - 1);
|
||||
(*position).~T();
|
||||
etl::move_backward(position_, p_end - 2, p_end - 1);
|
||||
(*position_).~T();
|
||||
}
|
||||
|
||||
::new (p) T(value1);
|
||||
|
||||
return position;
|
||||
return position_;
|
||||
}
|
||||
|
||||
template <typename T1, typename T2>
|
||||
iterator emplace(iterator position, const T1& value1, const T2& value2)
|
||||
iterator emplace(const_iterator position, const T1& value1, const T2& value2)
|
||||
{
|
||||
ETL_ASSERT(!full(), ETL_ERROR(vector_full));
|
||||
|
||||
iterator position_ = to_iterator(position);
|
||||
|
||||
void* p;
|
||||
|
||||
if (position == end())
|
||||
if (position_ == end())
|
||||
{
|
||||
p = p_end++;
|
||||
ETL_INCREMENT_DEBUG_COUNT
|
||||
}
|
||||
else
|
||||
{
|
||||
p = etl::addressof(*position);
|
||||
p = etl::addressof(*position_);
|
||||
create_back(back());
|
||||
etl::move_backward(position, p_end - 2, p_end - 1);
|
||||
(*position).~T();
|
||||
etl::move_backward(position_, p_end - 2, p_end - 1);
|
||||
(*position_).~T();
|
||||
}
|
||||
|
||||
::new (p) T(value1, value2);
|
||||
|
||||
return position;
|
||||
return position_;
|
||||
}
|
||||
|
||||
template <typename T1, typename T2, typename T3>
|
||||
iterator emplace(iterator position, const T1& value1, const T2& value2, const T3& value3)
|
||||
iterator emplace(const_iterator position, const T1& value1, const T2& value2, const T3& value3)
|
||||
{
|
||||
ETL_ASSERT(!full(), ETL_ERROR(vector_full));
|
||||
|
||||
iterator position_ = to_iterator(position);
|
||||
|
||||
void* p;
|
||||
|
||||
if (position == end())
|
||||
if (position_ == end())
|
||||
{
|
||||
p = p_end++;
|
||||
ETL_INCREMENT_DEBUG_COUNT
|
||||
}
|
||||
else
|
||||
{
|
||||
p = etl::addressof(*position);
|
||||
p = etl::addressof(*position_);
|
||||
create_back(back());
|
||||
etl::move_backward(position, p_end - 2, p_end - 1);
|
||||
(*position).~T();
|
||||
etl::move_backward(position_, p_end - 2, p_end - 1);
|
||||
(*position_).~T();
|
||||
}
|
||||
|
||||
::new (p) T(value1, value2, value3);
|
||||
|
||||
return position;
|
||||
return position_;
|
||||
}
|
||||
|
||||
template <typename T1, typename T2, typename T3, typename T4>
|
||||
iterator emplace(iterator position, const T1& value1, const T2& value2, const T3& value3, const T4& value4)
|
||||
iterator emplace(const_iterator position, const T1& value1, const T2& value2, const T3& value3, const T4& value4)
|
||||
{
|
||||
ETL_ASSERT(!full(), ETL_ERROR(vector_full));
|
||||
|
||||
iterator position_ = to_iterator(position);
|
||||
|
||||
void* p;
|
||||
|
||||
if (position == end())
|
||||
if (position_ == end())
|
||||
{
|
||||
p = p_end++;
|
||||
ETL_INCREMENT_DEBUG_COUNT
|
||||
}
|
||||
else
|
||||
{
|
||||
p = etl::addressof(*position);
|
||||
p = etl::addressof(*position_);
|
||||
create_back(back());
|
||||
etl::move_backward(position, p_end - 2, p_end - 1);
|
||||
(*position).~T();
|
||||
etl::move_backward(position_, p_end - 2, p_end - 1);
|
||||
(*position_).~T();
|
||||
}
|
||||
|
||||
::new (p) T(value1, value2, value3, value4);
|
||||
|
||||
return position;
|
||||
return position_;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -731,12 +746,14 @@ namespace etl
|
||||
///\param n The number of elements to add.
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
void insert(iterator position, size_t n, parameter_t value)
|
||||
void insert(const_iterator position, size_t n, parameter_t value)
|
||||
{
|
||||
ETL_ASSERT((size() + n) <= CAPACITY, ETL_ERROR(vector_full));
|
||||
|
||||
iterator position_ = to_iterator(position);
|
||||
|
||||
size_t insert_n = n;
|
||||
size_t insert_begin = etl::distance(begin(), position);
|
||||
size_t insert_begin = etl::distance(begin(), position_);
|
||||
size_t insert_end = insert_begin + insert_n;
|
||||
|
||||
// Copy old data.
|
||||
@ -786,14 +803,14 @@ namespace etl
|
||||
///\param last The last + 1 element to add.
|
||||
//*********************************************************************
|
||||
template <class TIterator>
|
||||
void insert(iterator position, TIterator first, TIterator last)
|
||||
void insert(const_iterator position, TIterator first, TIterator last, typename etl::enable_if<!etl::is_integral<TIterator>::value, int>::type = 0)
|
||||
{
|
||||
size_t count = etl::distance(first, last);
|
||||
|
||||
ETL_ASSERT((size() + count) <= CAPACITY, ETL_ERROR(vector_full));
|
||||
|
||||
size_t insert_n = count;
|
||||
size_t insert_begin = etl::distance(begin(), position);
|
||||
size_t insert_begin = etl::distance(cbegin(), position);
|
||||
size_t insert_end = insert_begin + insert_n;
|
||||
|
||||
// Move old data.
|
||||
@ -847,6 +864,21 @@ namespace etl
|
||||
return i_element;
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
/// Erases an element.
|
||||
///\param i_element Iterator to the element.
|
||||
///\return An iterator pointing to the element that followed the erased element.
|
||||
//*********************************************************************
|
||||
iterator erase(const_iterator i_element)
|
||||
{
|
||||
iterator i_element_ = to_iterator(i_element);
|
||||
|
||||
etl::move(i_element_ + 1, end(), i_element_);
|
||||
destroy_back();
|
||||
|
||||
return i_element_;
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
/// Erases a range of elements.
|
||||
/// The range includes all the elements between first and last, including the
|
||||
@ -855,24 +887,27 @@ namespace etl
|
||||
///\param last Iterator to the last element.
|
||||
///\return An iterator pointing to the element that followed the erased element.
|
||||
//*********************************************************************
|
||||
iterator erase(iterator first, iterator last)
|
||||
iterator erase(const_iterator first, const_iterator last)
|
||||
{
|
||||
iterator first_ = to_iterator(first);
|
||||
iterator last_ = to_iterator(last);
|
||||
|
||||
if (first == begin() && last == end())
|
||||
{
|
||||
clear();
|
||||
}
|
||||
else
|
||||
{
|
||||
etl::move(last, end(), first);
|
||||
size_t n_delete = etl::distance(first, last);
|
||||
etl::move(last_, end(), first_);
|
||||
size_t n_delete = etl::distance(first_, last_);
|
||||
|
||||
// Destroy the elements left over at the end.
|
||||
etl::destroy(p_end - n_delete, p_end);
|
||||
ETL_SUBTRACT_DEBUG_COUNT(n_delete)
|
||||
p_end -= n_delete;
|
||||
p_end -= n_delete;
|
||||
}
|
||||
|
||||
return first;
|
||||
return first_;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
@ -1030,7 +1065,7 @@ namespace etl
|
||||
//*********************************************************************
|
||||
/// Destroy an element at the back.
|
||||
//*********************************************************************
|
||||
inline void destroy_back()
|
||||
void destroy_back()
|
||||
{
|
||||
--p_end;
|
||||
|
||||
@ -1040,6 +1075,16 @@ namespace etl
|
||||
|
||||
// Disable copy construction.
|
||||
ivector(const ivector&) ETL_DELETE;
|
||||
|
||||
private:
|
||||
|
||||
//*************************************************************************
|
||||
/// Convert from const_iterator to iterator
|
||||
//*************************************************************************
|
||||
ETL_CONSTEXPR iterator to_iterator(const_iterator itr) const
|
||||
{
|
||||
return const_cast<iterator>(itr);
|
||||
}
|
||||
};
|
||||
|
||||
//***************************************************************************
|
||||
@ -1294,7 +1339,7 @@ namespace etl
|
||||
//*************************************************************************
|
||||
/// Template deduction guides.
|
||||
//*************************************************************************
|
||||
#if ETL_CPP17_SUPPORTED
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST
|
||||
template <typename... T>
|
||||
vector(T...) -> vector<typename etl::common_type_t<T...>, sizeof...(T)>;
|
||||
#endif
|
||||
@ -1302,7 +1347,7 @@ namespace etl
|
||||
//*************************************************************************
|
||||
/// Make
|
||||
//*************************************************************************
|
||||
#if ETL_USING_INITIALIZER_LIST
|
||||
#if ETL_CPP11_SUPPORTED && ETL_USING_INITIALIZER_LIST
|
||||
template <typename... T>
|
||||
constexpr auto make_vector(T... t) -> etl::vector<typename etl::common_type_t<T...>, sizeof...(T)>
|
||||
{
|
||||
@ -1596,12 +1641,12 @@ namespace etl
|
||||
//*************************************************************************
|
||||
/// Template deduction guides.
|
||||
//*************************************************************************
|
||||
#if ETL_CPP17_SUPPORTED
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST
|
||||
template <typename... T>
|
||||
vector(T*...) -> vector<typename etl::common_type_t<T*...>, sizeof...(T)>;
|
||||
#endif
|
||||
|
||||
#if ETL_CPP11_SUPPORTED
|
||||
#if ETL_CPP11_SUPPORTED && ETL_USING_INITIALIZER_LIST
|
||||
template <typename... T>
|
||||
constexpr auto make_vector(T*... t) -> etl::vector<typename etl::common_type_t<T*...>, sizeof...(T)>
|
||||
{
|
||||
|
||||
@ -38,7 +38,7 @@ SOFTWARE.
|
||||
///\ingroup utilities
|
||||
|
||||
#define ETL_VERSION_MAJOR 20
|
||||
#define ETL_VERSION_MINOR 19
|
||||
#define ETL_VERSION_MINOR 20
|
||||
#define ETL_VERSION_PATCH 0
|
||||
#define ETL_VERSION ETL_STRINGIFY(ETL_VERSION_MAJOR) "." ETL_STRINGIFY(ETL_VERSION_MINOR) "." ETL_STRINGIFY(ETL_VERSION_PATCH)
|
||||
#define ETL_VERSION_W ETL_STRINGIFY(ETL_VERSION_MAJOR) L"." ETL_STRINGIFY(ETL_VERSION_MINOR) L"." ETL_STRINGIFY(ETL_VERSION_PATCH)
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "ETL Embedded Template Library",
|
||||
"version": "20.19.0",
|
||||
"version": "20.20.0",
|
||||
"author s": {
|
||||
"name": "John Wellbelove",
|
||||
"email": "john.wellbelove@etlcpp.com"
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
name=Embedded Template Library ETL
|
||||
version=20.19.0
|
||||
version=20.20.0
|
||||
author= John Wellbelove <john.wellbelove@etlcpp.com>
|
||||
maintainer=John Wellbelove <john.wellbelove@etlcpp.com>
|
||||
license=MIT
|
||||
|
||||
@ -8,7 +8,7 @@ project('etl',
|
||||
'cpp_std=c++17', 'build.cpp_std=c++17',
|
||||
],
|
||||
meson_version: '>=0.54.0',
|
||||
version: '20.19.0'
|
||||
version: '20.20.0'
|
||||
)
|
||||
|
||||
compile_args = []
|
||||
|
||||
@ -1,3 +1,15 @@
|
||||
===============================================================================
|
||||
20.20.0
|
||||
Updated container 'insert' and 'erase' to C++11 style const_iterator parameters. (#463)
|
||||
Fixed container template function overload abiguity. (#466)
|
||||
Harmonize copy ctor and assignment for etl::delegate. (#465)
|
||||
Added constexpr support for etl::enum_type. (#462)
|
||||
Added 'make' functions to construct containers.
|
||||
Remove unnecessary casts that causes warnings. (#461)
|
||||
Added non-const string pointer overload. (#449)
|
||||
Changed != to < in etl::ipool to get rid of erroneous clang-tidy nullptr dereference warning. (#457)
|
||||
Added ifdef guard for MSVC pragma (#455)
|
||||
|
||||
===============================================================================
|
||||
20.19.0
|
||||
Updates to etl::delegate. Added more constexpr and set() functions.
|
||||
|
||||
@ -62,7 +62,7 @@ namespace
|
||||
CHECK_EQUAL(data.max_size(), SIZE);
|
||||
}
|
||||
|
||||
#if !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
//*************************************************************************
|
||||
TEST(test_cpp17_deduced_constructor)
|
||||
{
|
||||
@ -651,7 +651,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
TEST(test_array_template_deduction)
|
||||
{
|
||||
etl::array data{ char(0), short(1), int(2), long(3), 4, 5, 6, 7, 8, 9 };
|
||||
|
||||
@ -284,7 +284,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
TEST(test_cpp17_deduced_constructor)
|
||||
{
|
||||
etl::array data{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
|
||||
|
||||
@ -98,7 +98,7 @@ namespace
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED) && ETL_USING_STL
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
//*************************************************************************
|
||||
TEST(test_cpp17_deduced_constructor)
|
||||
{
|
||||
@ -112,8 +112,10 @@ namespace
|
||||
bool isEqual = std::equal(data.begin(), data.end(), compare.begin());
|
||||
CHECK(isEqual);
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
TEST(test_cpp17_deduced_constructor_excess)
|
||||
{
|
||||
Data data{ Ndc("0"), Ndc("1"), Ndc("2"), Ndc("3"), Ndc("4"), Ndc("5"), Ndc("6"), Ndc("7"), Ndc("8"), Ndc("9"), Ndc("10"), Ndc("11"), Ndc("12") };
|
||||
|
||||
@ -107,7 +107,7 @@ namespace
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED) && ETL_USING_STL
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
//*************************************************************************
|
||||
TEST(test_cpp17_deduced_constructor)
|
||||
{
|
||||
@ -121,8 +121,10 @@ namespace
|
||||
bool isEqual = std::equal(data.begin(), data.end(), compare.begin());
|
||||
CHECK(isEqual);
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
TEST(test_cpp17_deduced_constructor_excess)
|
||||
{
|
||||
Data data({ Ndc("0"), Ndc("1"), Ndc("2"), Ndc("3"), Ndc("4"), Ndc("5"), Ndc("6"), Ndc("7"), Ndc("8"), Ndc("9"), Ndc("10"), Ndc("11"), Ndc("12") }, buffer1.raw, SIZE);
|
||||
|
||||
@ -101,24 +101,6 @@ namespace
|
||||
CHECK_EQUAL(SIZE, data.max_size());
|
||||
}
|
||||
|
||||
#if ETL_USING_STL && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
//*************************************************************************
|
||||
TEST(test_cpp17_deduced_constructor)
|
||||
{
|
||||
etl::deque data{ N0, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13 };
|
||||
etl::deque<NDC, 14> check = { N0, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13 };
|
||||
|
||||
CHECK(!data.empty());
|
||||
CHECK(data.full());
|
||||
CHECK(data.begin() != data.end());
|
||||
CHECK_EQUAL(14U, data.size());
|
||||
CHECK_EQUAL(0U, data.available());
|
||||
CHECK_EQUAL(14U, data.capacity());
|
||||
CHECK_EQUAL(14U, data.max_size());
|
||||
CHECK(data == check);
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_constructor_fill)
|
||||
{
|
||||
@ -874,7 +856,7 @@ namespace
|
||||
etl::deque<int, 2> valuesToInsert(insertCount, value);
|
||||
etl::deque<int, 10> data;
|
||||
|
||||
data.insert(data.begin(), valuesToInsert.begin(), valuesToInsert.end());
|
||||
data.insert(data.cbegin(), valuesToInsert.begin(), valuesToInsert.end());
|
||||
|
||||
CHECK_EQUAL(insertCount, std::distance(data.begin(), data.end()));
|
||||
CHECK(data.size() == insertCount);
|
||||
@ -889,8 +871,8 @@ namespace
|
||||
Compare_Data compare_data(initial_data_under.begin(), initial_data_under.end());
|
||||
DataNDC data(compare_data.begin(), compare_data.end());
|
||||
|
||||
Compare_Data::iterator cposition = compare_data.insert(compare_data.begin(), N14);
|
||||
DataNDC::iterator position = data.insert(data.begin(), N14);
|
||||
Compare_Data::iterator cposition = compare_data.insert(compare_data.cbegin(), N14);
|
||||
DataNDC::iterator position = data.insert(data.cbegin(), N14);
|
||||
|
||||
CHECK_EQUAL(compare_data.size(), std::distance(data.begin(), data.end()));
|
||||
CHECK_EQUAL(compare_data.size(), data.size());
|
||||
@ -919,8 +901,8 @@ namespace
|
||||
Compare_Data compare_data(initial_data_under.begin(), initial_data_under.end());
|
||||
DataNDC data(compare_data.begin(), compare_data.end());
|
||||
|
||||
Compare_Data::iterator cposition = compare_data.insert(compare_data.end(), N14);
|
||||
DataNDC::iterator position = data.insert(data.end(), N14);
|
||||
Compare_Data::iterator cposition = compare_data.insert(compare_data.cend(), N14);
|
||||
DataNDC::iterator position = data.insert(data.cend(), N14);
|
||||
|
||||
CHECK_EQUAL(compare_data.size(), std::distance(data.begin(), data.end()));
|
||||
CHECK_EQUAL(compare_data.size(), data.size());
|
||||
@ -949,8 +931,8 @@ namespace
|
||||
Compare_Data compare_data(initial_data_under.begin(), initial_data_under.end());
|
||||
DataNDC data(compare_data.begin(), compare_data.end());
|
||||
|
||||
Compare_Data::iterator cposition = compare_data.insert(compare_data.begin() + 3, N14);
|
||||
DataNDC::iterator position = data.insert(data.begin() + 3, N14);
|
||||
Compare_Data::iterator cposition = compare_data.insert(compare_data.cbegin() + 3, N14);
|
||||
DataNDC::iterator position = data.insert(data.cbegin() + 3, N14);
|
||||
|
||||
CHECK_EQUAL(compare_data.size(), std::distance(data.begin(), data.end()));
|
||||
CHECK_EQUAL(compare_data.size(), data.size());
|
||||
@ -960,8 +942,8 @@ namespace
|
||||
compare_data.assign(initial_data_under.begin(), initial_data_under.end());
|
||||
data.assign(compare_data.begin(), compare_data.end());
|
||||
|
||||
cposition = compare_data.insert(compare_data.begin() + 4, N14);
|
||||
position = data.insert(data.begin() + 4, N14);
|
||||
cposition = compare_data.insert(compare_data.cbegin() + 4, N14);
|
||||
position = data.insert(data.cbegin() + 4, N14);
|
||||
|
||||
CHECK_EQUAL(compare_data.size(), std::distance(data.begin(), data.end()));
|
||||
CHECK_EQUAL(compare_data.size(), data.size());
|
||||
@ -1007,8 +989,8 @@ namespace
|
||||
Compare_Data compare_data(initial_data_small.begin(), initial_data_small.end());
|
||||
DataNDC data(compare_data.begin(), compare_data.end());
|
||||
|
||||
compare_data.insert(compare_data.begin() + offset, insert_size, N14);
|
||||
data.insert(data.begin() + offset, insert_size, N14);
|
||||
compare_data.insert(compare_data.cbegin() + offset, insert_size, N14);
|
||||
data.insert(data.cbegin() + offset, insert_size, N14);
|
||||
|
||||
CHECK_EQUAL(compare_data.size(), data.size());
|
||||
CHECK(std::equal(compare_data.begin(), compare_data.end(), data.begin()));
|
||||
@ -1023,9 +1005,9 @@ namespace
|
||||
|
||||
size_t insert_size = SIZE - initial_data_under.size() + 1;
|
||||
|
||||
CHECK_THROW(data.insert(data.begin(), insert_size, N14), etl::deque_full);
|
||||
CHECK_THROW(data.insert(data.end(), insert_size, N14), etl::deque_full);
|
||||
CHECK_THROW(data.insert(data.begin() + 6, insert_size, N14), etl::deque_full);
|
||||
CHECK_THROW(data.insert(data.cbegin(), insert_size, N14), etl::deque_full);
|
||||
CHECK_THROW(data.insert(data.cend(), insert_size, N14), etl::deque_full);
|
||||
CHECK_THROW(data.insert(data.cbegin() + 6, insert_size, N14), etl::deque_full);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
@ -1043,8 +1025,8 @@ namespace
|
||||
DataNDC data(blank_data.begin(), blank_data.end());
|
||||
data.assign(compare_data.begin(), compare_data.end());
|
||||
|
||||
compare_data.insert(compare_data.begin() + offset, range.begin(), range.end());
|
||||
data.insert(data.begin() + offset, range.begin(), range.end());
|
||||
compare_data.insert(compare_data.cbegin() + offset, range.begin(), range.end());
|
||||
data.insert(data.cbegin() + offset, range.begin(), range.end());
|
||||
|
||||
CHECK_EQUAL(compare_data.size(), std::distance(data.begin(), data.end()));
|
||||
CHECK_EQUAL(compare_data.size(), data.size());
|
||||
@ -1059,9 +1041,9 @@ namespace
|
||||
Compare_Data range = { N12, N13, N14, N15 };
|
||||
DataNDC data(initial_data_under.begin(), initial_data_under.end());
|
||||
|
||||
CHECK_THROW(data.insert(data.begin(), range.begin(), range.end()), etl::deque_full);
|
||||
CHECK_THROW(data.insert(data.end(), range.begin(), range.end()), etl::deque_full);
|
||||
CHECK_THROW(data.insert(data.begin() + 6, range.begin(), range.end()), etl::deque_full);
|
||||
CHECK_THROW(data.insert(data.cbegin(), range.begin(), range.end()), etl::deque_full);
|
||||
CHECK_THROW(data.insert(data.cend(), range.begin(), range.end()), etl::deque_full);
|
||||
CHECK_THROW(data.insert(data.cbegin() + 6, range.begin(), range.end()), etl::deque_full);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
@ -1103,12 +1085,12 @@ namespace
|
||||
compare_data.push_back(N9);
|
||||
compare_data.push_back(N10);
|
||||
|
||||
DataNDC::iterator i_next = data.erase(data.begin());
|
||||
Compare_Data::iterator i_cnext = compare_data.erase(compare_data.begin());
|
||||
DataNDC::const_iterator i_next = data.erase(data.cbegin());
|
||||
Compare_Data::const_iterator i_cnext = compare_data.erase(compare_data.cbegin());
|
||||
|
||||
CHECK_EQUAL(DataNDC::difference_type(data.size()), std::distance(data.begin(), data.end()));
|
||||
CHECK(std::equal(compare_data.begin(), compare_data.end(), data.begin()));
|
||||
CHECK_EQUAL(std::distance(compare_data.begin(), i_cnext), std::distance(data.begin(), i_next));
|
||||
CHECK_EQUAL(std::distance(compare_data.cbegin(), i_cnext), std::distance(data.cbegin(), i_next));
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
@ -1153,7 +1135,7 @@ namespace
|
||||
DataNDC::iterator i_erase = data.end() - 1;
|
||||
DataNDC::iterator i_next = data.erase(i_erase);
|
||||
|
||||
Compare_Data::iterator i_cerase = compare_data.end() - 1;
|
||||
Compare_Data::const_iterator i_cerase = compare_data.cend() - 1U;
|
||||
Compare_Data::iterator i_cnext = compare_data.erase(i_cerase);
|
||||
|
||||
CHECK_EQUAL(DataNDC::difference_type(compare_data.size()), std::distance(data.begin(), data.end()));
|
||||
@ -1203,10 +1185,10 @@ namespace
|
||||
compare_data.push_back(N10);
|
||||
|
||||
// Erase near beginning.
|
||||
DataNDC::iterator i_erase = data.begin() + 2;
|
||||
DataNDC::const_iterator i_erase = data.begin() + 2;
|
||||
DataNDC::iterator i_next = data.erase(i_erase);
|
||||
|
||||
Compare_Data::iterator i_cerase = compare_data.begin() + 2;
|
||||
Compare_Data::const_iterator i_cerase = compare_data.begin() + 2;
|
||||
Compare_Data::iterator i_cnext = compare_data.erase(i_cerase);
|
||||
|
||||
CHECK_EQUAL(DataNDC::difference_type(compare_data.size()), std::distance(data.begin(), data.end()));
|
||||
@ -1303,8 +1285,8 @@ namespace
|
||||
compare_data.push_back(N9);
|
||||
compare_data.push_back(N10);
|
||||
|
||||
DataNDC::iterator i_next = data.erase(data.begin(), data.begin() + 3);
|
||||
Compare_Data::iterator i_cnext = compare_data.erase(compare_data.begin(), compare_data.begin() + 3);
|
||||
DataNDC::iterator i_next = data.erase(data.cbegin(), data.cbegin() + 3);
|
||||
Compare_Data::iterator i_cnext = compare_data.erase(compare_data.cbegin(), compare_data.cbegin() + 3);
|
||||
|
||||
CHECK_EQUAL(DataNDC::difference_type(compare_data.size()), std::distance(data.begin(), data.end()));
|
||||
CHECK(std::equal(compare_data.begin(), compare_data.end(), data.begin()));
|
||||
@ -1352,8 +1334,8 @@ namespace
|
||||
compare_data.push_back(N9);
|
||||
compare_data.push_back(N10);
|
||||
|
||||
DataNDC::iterator i_next = data.erase(data.end() - 3, data.end());
|
||||
Compare_Data::iterator i_cnext = compare_data.erase(compare_data.end() - 3, compare_data.end());
|
||||
DataNDC::iterator i_next = data.erase(data.cend() - 3, data.cend());
|
||||
Compare_Data::iterator i_cnext = compare_data.erase(compare_data.cend() - 3, compare_data.cend());
|
||||
|
||||
CHECK_EQUAL(DataNDC::difference_type(compare_data.size()), std::distance(data.begin(), data.end()));
|
||||
CHECK(std::equal(compare_data.begin(), compare_data.end(), data.begin()));
|
||||
@ -1401,8 +1383,8 @@ namespace
|
||||
compare_data.push_back(N9);
|
||||
compare_data.push_back(N10);
|
||||
|
||||
DataNDC::iterator i_next = data.erase(data.begin() + 1, data.begin() + 3);
|
||||
Compare_Data::iterator i_cnext = compare_data.erase(compare_data.begin() + 1, compare_data.begin() + 3);
|
||||
DataNDC::iterator i_next = data.erase(data.cbegin() + 1, data.cbegin() + 3);
|
||||
Compare_Data::iterator i_cnext = compare_data.erase(compare_data.cbegin() + 1, compare_data.cbegin() + 3);
|
||||
|
||||
CHECK_EQUAL(DataNDC::difference_type(compare_data.size()), std::distance(data.begin(), data.end()));
|
||||
CHECK(std::equal(compare_data.begin(), compare_data.end(), data.begin()));
|
||||
@ -1444,8 +1426,8 @@ namespace
|
||||
compare_data.push_back(N9);
|
||||
compare_data.push_back(N10);
|
||||
|
||||
i_next = data.erase(data.begin() + 3, data.begin() + 5);
|
||||
i_cnext = compare_data.erase(compare_data.begin() + 3, compare_data.begin() + 5);
|
||||
i_next = data.erase(data.cbegin() + 3, data.cbegin() + 5);
|
||||
i_cnext = compare_data.erase(compare_data.cbegin() + 3, compare_data.cbegin() + 5);
|
||||
|
||||
CHECK_EQUAL(DataNDC::difference_type(compare_data.size()), std::distance(data.begin(), data.end()));
|
||||
CHECK(std::equal(compare_data.begin(), compare_data.end(), data.begin()));
|
||||
@ -2010,7 +1992,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
TEST(test_deque_template_deduction)
|
||||
{
|
||||
etl::deque data{ char(0), short(1), int(2), long(3), 4, 5, 6, 7, 8, 9 };
|
||||
@ -2032,7 +2014,7 @@ namespace
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_INITIALIZER_LIST
|
||||
#if ETL_CPP11_SUPPORTED && ETL_USING_INITIALIZER_LIST
|
||||
TEST(test_make_deque)
|
||||
{
|
||||
auto data = etl::make_deque<int>(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
|
||||
|
||||
@ -53,14 +53,14 @@ namespace
|
||||
typedef ETL_OR_STD::pair<int, DC> ElementDC;
|
||||
typedef ETL_OR_STD::pair<int, NDC> ElementNDC;
|
||||
|
||||
typedef ETL_OR_STD::pair<int, int> ElementInt;
|
||||
typedef ETL_OR_STD::pair<int, int> ElementInt;
|
||||
|
||||
typedef etl::flat_map<int, DC, SIZE> DataDC;
|
||||
typedef etl::flat_map<int, NDC, SIZE> DataNDC;
|
||||
typedef etl::iflat_map<int, DC> IDataDC;
|
||||
typedef etl::iflat_map<int, NDC> IDataNDC;
|
||||
|
||||
typedef etl::flat_map<int, int, SIZE> DataInt;
|
||||
typedef etl::flat_map<int, int, SIZE> DataInt;
|
||||
|
||||
typedef etl::flat_map<int, MC, SIZE> DataM;
|
||||
typedef etl::iflat_map<int, MC> IDataM;
|
||||
@ -316,7 +316,7 @@ namespace
|
||||
CHECK(data.begin() == data.end());
|
||||
}
|
||||
|
||||
#if ETL_USING_STL && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
//*************************************************************************
|
||||
TEST(test_cpp17_deduced_constructor)
|
||||
{
|
||||
@ -1003,23 +1003,81 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single)
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_iterator)
|
||||
{
|
||||
Compare_DataNDC compare_data(initial_data.begin(), initial_data.end());
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
Compare_DataNDC::iterator i_compare = compare_data.begin();
|
||||
DataNDC::iterator i_data = data.begin();
|
||||
Compare_DataNDC::iterator i_compare_begin = compare_data.begin();
|
||||
DataNDC::iterator i_data_begin = data.begin();
|
||||
|
||||
Compare_DataNDC::iterator i_compare = i_compare_begin;
|
||||
DataNDC::iterator i_data = i_data_begin;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_expected = i_compare_begin;
|
||||
DataNDC::iterator i_data_expected = i_data_begin;
|
||||
|
||||
std::advance(i_compare, 2);
|
||||
std::advance(i_data, 2);
|
||||
std::advance(i_data, 2);
|
||||
|
||||
compare_data.erase(i_compare);
|
||||
data.erase(i_data);
|
||||
std::advance(i_compare_expected, 3);
|
||||
std::advance(i_data_expected, 3);
|
||||
|
||||
bool isEqual = Check_Equal(data.begin(),
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
ElementNDC compare_expected = *i_compare_expected;
|
||||
ElementNDC data_expected = *i_data_expected;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_result = compare_data.erase(i_compare);
|
||||
DataNDC::iterator i_data_result = data.erase(i_data);
|
||||
|
||||
CHECK(compare_expected.first == i_compare_result->first);
|
||||
CHECK(data_expected.first == i_data_result->first);
|
||||
|
||||
CHECK(compare_expected.second == i_compare_result->second);
|
||||
CHECK(data_expected.second == i_data_result->second);
|
||||
|
||||
bool isEqual = std::equal(data.begin(),
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
|
||||
CHECK(isEqual);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_const_iterator)
|
||||
{
|
||||
Compare_DataNDC compare_data(initial_data.begin(), initial_data.end());
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
Compare_DataNDC::iterator i_compare_begin = compare_data.begin();
|
||||
DataNDC::iterator i_data_begin = data.begin();
|
||||
|
||||
Compare_DataNDC::const_iterator i_compare = i_compare_begin;
|
||||
DataNDC::const_iterator i_data = i_data_begin;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_expected = i_compare_begin;
|
||||
DataNDC::iterator i_data_expected = i_data_begin;
|
||||
|
||||
std::advance(i_compare, 2);
|
||||
std::advance(i_data, 2);
|
||||
|
||||
std::advance(i_compare_expected, 3);
|
||||
std::advance(i_data_expected, 3);
|
||||
|
||||
ElementNDC compare_expected = *i_compare_expected;
|
||||
ElementNDC data_expected = *i_data_expected;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_result = compare_data.erase(i_compare);
|
||||
DataNDC::iterator i_data_result = data.erase(i_data);
|
||||
|
||||
CHECK(compare_expected.first == i_compare_result->first);
|
||||
CHECK(data_expected.first == i_data_result->first);
|
||||
|
||||
CHECK(compare_expected.second == i_compare_result->second);
|
||||
CHECK(data_expected.second == i_data_result->second);
|
||||
|
||||
bool isEqual = std::equal(data.begin(),
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
|
||||
CHECK(isEqual);
|
||||
}
|
||||
@ -1030,24 +1088,33 @@ namespace
|
||||
Compare_DataNDC compare_data(initial_data.begin(), initial_data.end());
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
Compare_DataNDC::iterator i_compare = compare_data.begin();
|
||||
DataNDC::iterator i_data = data.begin();
|
||||
Compare_DataNDC::const_iterator i_compare = compare_data.begin();
|
||||
DataNDC::const_iterator i_data = data.begin();
|
||||
|
||||
Compare_DataNDC::iterator i_compare_end = compare_data.begin();
|
||||
DataNDC::iterator i_data_end = data.begin();
|
||||
Compare_DataNDC::const_iterator i_compare_end = compare_data.begin();
|
||||
DataNDC::const_iterator i_data_end = data.begin();
|
||||
|
||||
std::advance(i_compare, 2);
|
||||
std::advance(i_data, 2);
|
||||
std::advance(i_data, 2);
|
||||
|
||||
std::advance(i_compare_end, 4);
|
||||
std::advance(i_data_end, 4);
|
||||
std::advance(i_data_end, 4);
|
||||
|
||||
compare_data.erase(i_compare, i_compare_end);
|
||||
data.erase(i_data, i_data_end);
|
||||
ElementNDC compare_expected = *i_compare_end;
|
||||
ElementNDC data_expected = *i_data_end;
|
||||
|
||||
bool isEqual = Check_Equal(data.begin(),
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
Compare_DataNDC::iterator i_compare_result = compare_data.erase(i_compare, i_compare_end);
|
||||
DataNDC::iterator i_data_result = data.erase(i_data, i_data_end);
|
||||
|
||||
CHECK(compare_expected.first == i_compare_result->first);
|
||||
CHECK(data_expected.first == i_data_result->first);
|
||||
|
||||
CHECK(compare_expected.second == i_compare_result->second);
|
||||
CHECK(data_expected.second == i_data_result->second);
|
||||
|
||||
bool isEqual = std::equal(data.begin(),
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
|
||||
CHECK(isEqual);
|
||||
}
|
||||
@ -1263,7 +1330,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
TEST(test_flat_map_template_deduction)
|
||||
{
|
||||
using Pair = ETL_OR_STD::pair<const int, NDC>;
|
||||
|
||||
@ -277,7 +277,7 @@ namespace
|
||||
CHECK(data.begin() == data.end());
|
||||
}
|
||||
|
||||
#if ETL_USING_STL && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
//*************************************************************************
|
||||
TEST(test_cpp17_deduced_constructor)
|
||||
{
|
||||
@ -753,23 +753,81 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single)
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_iterator)
|
||||
{
|
||||
Compare_DataNDC compare_data(initial_data.begin(), initial_data.end());
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
Compare_DataNDC::iterator i_compare = compare_data.begin();
|
||||
DataNDC::iterator i_data = data.begin();
|
||||
Compare_DataNDC::iterator i_compare_begin = compare_data.begin();
|
||||
DataNDC::iterator i_data_begin = data.begin();
|
||||
|
||||
Compare_DataNDC::iterator i_compare = i_compare_begin;
|
||||
DataNDC::iterator i_data = i_data_begin;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_expected = i_compare_begin;
|
||||
DataNDC::iterator i_data_expected = i_data_begin;
|
||||
|
||||
std::advance(i_compare, 2);
|
||||
std::advance(i_data, 2);
|
||||
std::advance(i_data, 2);
|
||||
|
||||
compare_data.erase(i_compare);
|
||||
data.erase(i_data);
|
||||
std::advance(i_compare_expected, 3);
|
||||
std::advance(i_data_expected, 3);
|
||||
|
||||
bool isEqual = Check_Equal(data.begin(),
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
ElementNDC compare_expected = *i_compare_expected;
|
||||
ElementNDC data_expected = *i_data_expected;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_result = compare_data.erase(i_compare);
|
||||
DataNDC::iterator i_data_result = data.erase(i_data);
|
||||
|
||||
CHECK(compare_expected.first == i_compare_result->first);
|
||||
CHECK(data_expected.first == i_data_result->first);
|
||||
|
||||
CHECK(compare_expected.second == i_compare_result->second);
|
||||
CHECK(data_expected.second == i_data_result->second);
|
||||
|
||||
bool isEqual = std::equal(data.begin(),
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
|
||||
CHECK(isEqual);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_const_iterator)
|
||||
{
|
||||
Compare_DataNDC compare_data(initial_data.begin(), initial_data.end());
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
Compare_DataNDC::iterator i_compare_begin = compare_data.begin();
|
||||
DataNDC::iterator i_data_begin = data.begin();
|
||||
|
||||
Compare_DataNDC::const_iterator i_compare = i_compare_begin;
|
||||
DataNDC::const_iterator i_data = i_data_begin;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_expected = i_compare_begin;
|
||||
DataNDC::iterator i_data_expected = i_data_begin;
|
||||
|
||||
std::advance(i_compare, 2);
|
||||
std::advance(i_data, 2);
|
||||
|
||||
std::advance(i_compare_expected, 3);
|
||||
std::advance(i_data_expected, 3);
|
||||
|
||||
ElementNDC compare_expected = *i_compare_expected;
|
||||
ElementNDC data_expected = *i_data_expected;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_result = compare_data.erase(i_compare);
|
||||
DataNDC::iterator i_data_result = data.erase(i_data);
|
||||
|
||||
CHECK(compare_expected.first == i_compare_result->first);
|
||||
CHECK(data_expected.first == i_data_result->first);
|
||||
|
||||
CHECK(compare_expected.second == i_compare_result->second);
|
||||
CHECK(data_expected.second == i_data_result->second);
|
||||
|
||||
bool isEqual = std::equal(data.begin(),
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
|
||||
CHECK(isEqual);
|
||||
}
|
||||
@ -780,24 +838,33 @@ namespace
|
||||
Compare_DataNDC compare_data(initial_data.begin(), initial_data.end());
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
Compare_DataNDC::iterator i_compare = compare_data.begin();
|
||||
DataNDC::iterator i_data = data.begin();
|
||||
Compare_DataNDC::const_iterator i_compare = compare_data.begin();
|
||||
DataNDC::const_iterator i_data = data.begin();
|
||||
|
||||
Compare_DataNDC::iterator i_compare_end = compare_data.begin();
|
||||
DataNDC::iterator i_data_end = data.begin();
|
||||
Compare_DataNDC::const_iterator i_compare_end = compare_data.begin();
|
||||
DataNDC::const_iterator i_data_end = data.begin();
|
||||
|
||||
std::advance(i_compare, 2);
|
||||
std::advance(i_data, 2);
|
||||
std::advance(i_data, 2);
|
||||
|
||||
std::advance(i_compare_end, 4);
|
||||
std::advance(i_data_end, 4);
|
||||
std::advance(i_data_end, 4);
|
||||
|
||||
compare_data.erase(i_compare, i_compare_end);
|
||||
data.erase(i_data, i_data_end);
|
||||
ElementNDC compare_expected = *i_compare_end;
|
||||
ElementNDC data_expected = *i_data_end;
|
||||
|
||||
bool isEqual = Check_Equal(data.begin(),
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
Compare_DataNDC::iterator i_compare_result = compare_data.erase(i_compare, i_compare_end);
|
||||
DataNDC::iterator i_data_result = data.erase(i_data, i_data_end);
|
||||
|
||||
CHECK(compare_expected.first == i_compare_result->first);
|
||||
CHECK(data_expected.first == i_data_result->first);
|
||||
|
||||
CHECK(compare_expected.second == i_compare_result->second);
|
||||
CHECK(data_expected.second == i_data_result->second);
|
||||
|
||||
bool isEqual = std::equal(data.begin(),
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
|
||||
CHECK(isEqual);
|
||||
}
|
||||
@ -1065,7 +1132,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_INITIALIZER_LIST
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
TEST(test_flat_multimap_template_deduction)
|
||||
{
|
||||
using Pair = ETL_OR_STD::pair<const int, NDC>;
|
||||
|
||||
@ -245,7 +245,7 @@ namespace
|
||||
CHECK(data.begin() == data.end());
|
||||
}
|
||||
|
||||
#if ETL_USING_STL && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
//*************************************************************************
|
||||
TEST(test_cpp17_deduced_constructor)
|
||||
{
|
||||
@ -715,23 +715,75 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single)
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_iterator)
|
||||
{
|
||||
Compare_DataNDC compare_data(initial_data.begin(), initial_data.end());
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
Compare_DataNDC::iterator i_compare = compare_data.begin();
|
||||
DataNDC::iterator i_data = data.begin();
|
||||
Compare_DataNDC::iterator i_compare_begin = compare_data.begin();
|
||||
DataNDC::iterator i_data_begin = data.begin();
|
||||
|
||||
Compare_DataNDC::iterator i_compare = i_compare_begin;
|
||||
DataNDC::iterator i_data = i_data_begin;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_expected = i_compare_begin;
|
||||
DataNDC::iterator i_data_expected = i_data_begin;
|
||||
|
||||
std::advance(i_compare, 2);
|
||||
std::advance(i_data, 2);
|
||||
std::advance(i_data, 2);
|
||||
|
||||
compare_data.erase(i_compare);
|
||||
data.erase(i_data);
|
||||
std::advance(i_compare_expected, 3);
|
||||
std::advance(i_data_expected, 3);
|
||||
|
||||
NDC compare_expected = *i_compare_expected;
|
||||
NDC data_expected = *i_data_expected;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_result = compare_data.erase(i_compare);
|
||||
DataNDC::iterator i_data_result = data.erase(i_data);
|
||||
|
||||
CHECK(compare_expected == *i_compare_result);
|
||||
CHECK(data_expected == *i_data_result);
|
||||
|
||||
bool isEqual = std::equal(data.begin(),
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
|
||||
CHECK(isEqual);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_const_iterator)
|
||||
{
|
||||
Compare_DataNDC compare_data(initial_data.begin(), initial_data.end());
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
Compare_DataNDC::iterator i_compare_begin = compare_data.begin();
|
||||
DataNDC::iterator i_data_begin = data.begin();
|
||||
|
||||
Compare_DataNDC::const_iterator i_compare = i_compare_begin;
|
||||
DataNDC::const_iterator i_data = i_data_begin;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_expected = i_compare_begin;
|
||||
DataNDC::iterator i_data_expected = i_data_begin;
|
||||
|
||||
std::advance(i_compare, 2);
|
||||
std::advance(i_data, 2);
|
||||
|
||||
std::advance(i_compare_expected, 3);
|
||||
std::advance(i_data_expected, 3);
|
||||
|
||||
NDC compare_expected = *i_compare_expected;
|
||||
NDC data_expected = *i_data_expected;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_result = compare_data.erase(i_compare);
|
||||
DataNDC::iterator i_data_result = data.erase(i_data);
|
||||
|
||||
CHECK(compare_expected == *i_compare_result);
|
||||
CHECK(data_expected == *i_data_result);
|
||||
|
||||
bool isEqual = std::equal(data.begin(),
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
|
||||
CHECK(isEqual);
|
||||
}
|
||||
@ -742,20 +794,26 @@ namespace
|
||||
Compare_DataNDC compare_data(initial_data.begin(), initial_data.end());
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
Compare_DataNDC::iterator i_compare = compare_data.begin();
|
||||
DataNDC::iterator i_data = data.begin();
|
||||
Compare_DataNDC::const_iterator i_compare = compare_data.begin();
|
||||
DataNDC::const_iterator i_data = data.begin();
|
||||
|
||||
Compare_DataNDC::iterator i_compare_end = compare_data.begin();
|
||||
DataNDC::iterator i_data_end = data.begin();
|
||||
Compare_DataNDC::const_iterator i_compare_end = compare_data.begin();
|
||||
DataNDC::const_iterator i_data_end = data.begin();
|
||||
|
||||
std::advance(i_compare, 2);
|
||||
std::advance(i_data, 2);
|
||||
std::advance(i_data, 2);
|
||||
|
||||
std::advance(i_compare_end, 4);
|
||||
std::advance(i_data_end, 4);
|
||||
std::advance(i_data_end, 4);
|
||||
|
||||
compare_data.erase(i_compare, i_compare_end);
|
||||
data.erase(i_data, i_data_end);
|
||||
NDC compare_expected = *i_compare_end;
|
||||
NDC data_expected = *i_data_end;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_result = compare_data.erase(i_compare, i_compare_end);
|
||||
DataNDC::iterator i_data_result = data.erase(i_data, i_data_end);
|
||||
|
||||
CHECK(compare_expected == *i_compare_result);
|
||||
CHECK(data_expected == *i_data_result);
|
||||
|
||||
bool isEqual = std::equal(data.begin(),
|
||||
data.end(),
|
||||
@ -1022,7 +1080,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_INITIALIZER_LIST
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
TEST(test_flat_set_template_deduction)
|
||||
{
|
||||
using Pair = ETL_OR_STD::pair<const int, NDC>;
|
||||
|
||||
@ -258,7 +258,7 @@ namespace
|
||||
CHECK(data.begin() == data.end());
|
||||
}
|
||||
|
||||
#if ETL_USING_STL && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
//*************************************************************************
|
||||
TEST(test_cpp17_deduced_constructor)
|
||||
{
|
||||
@ -696,19 +696,71 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single)
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_iterator)
|
||||
{
|
||||
Compare_DataNDC compare_data(initial_data.begin(), initial_data.end());
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
Compare_DataNDC::iterator i_compare = compare_data.begin();
|
||||
DataNDC::iterator i_data = data.begin();
|
||||
Compare_DataNDC::iterator i_compare_begin = compare_data.begin();
|
||||
DataNDC::iterator i_data_begin = data.begin();
|
||||
|
||||
Compare_DataNDC::iterator i_compare = i_compare_begin;
|
||||
DataNDC::iterator i_data = i_data_begin;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_expected = i_compare_begin;
|
||||
DataNDC::iterator i_data_expected = i_data_begin;
|
||||
|
||||
std::advance(i_compare, 2);
|
||||
std::advance(i_data, 2);
|
||||
std::advance(i_data, 2);
|
||||
|
||||
compare_data.erase(i_compare);
|
||||
data.erase(i_data);
|
||||
std::advance(i_compare_expected, 3);
|
||||
std::advance(i_data_expected, 3);
|
||||
|
||||
NDC compare_expected = *i_compare_expected;
|
||||
NDC data_expected = *i_data_expected;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_result = compare_data.erase(i_compare);
|
||||
DataNDC::iterator i_data_result = data.erase(i_data);
|
||||
|
||||
CHECK(compare_expected == *i_compare_result);
|
||||
CHECK(data_expected == *i_data_result);
|
||||
|
||||
bool isEqual = std::equal(data.begin(),
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
|
||||
CHECK(isEqual);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_const_iterator)
|
||||
{
|
||||
Compare_DataNDC compare_data(initial_data.begin(), initial_data.end());
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
Compare_DataNDC::iterator i_compare_begin = compare_data.begin();
|
||||
DataNDC::iterator i_data_begin = data.begin();
|
||||
|
||||
Compare_DataNDC::const_iterator i_compare = i_compare_begin;
|
||||
DataNDC::const_iterator i_data = i_data_begin;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_expected = i_compare_begin;
|
||||
DataNDC::iterator i_data_expected = i_data_begin;
|
||||
|
||||
std::advance(i_compare, 2);
|
||||
std::advance(i_data, 2);
|
||||
|
||||
std::advance(i_compare_expected, 3);
|
||||
std::advance(i_data_expected, 3);
|
||||
|
||||
NDC compare_expected = *i_compare_expected;
|
||||
NDC data_expected = *i_data_expected;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_result = compare_data.erase(i_compare);
|
||||
DataNDC::iterator i_data_result = data.erase(i_data);
|
||||
|
||||
CHECK(compare_expected == *i_compare_result);
|
||||
CHECK(data_expected == *i_data_result);
|
||||
|
||||
bool isEqual = std::equal(data.begin(),
|
||||
data.end(),
|
||||
@ -723,20 +775,26 @@ namespace
|
||||
Compare_DataNDC compare_data(initial_data.begin(), initial_data.end());
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
Compare_DataNDC::iterator i_compare = compare_data.begin();
|
||||
DataNDC::iterator i_data = data.begin();
|
||||
Compare_DataNDC::const_iterator i_compare = compare_data.begin();
|
||||
DataNDC::const_iterator i_data = data.begin();
|
||||
|
||||
Compare_DataNDC::iterator i_compare_end = compare_data.begin();
|
||||
DataNDC::iterator i_data_end = data.begin();
|
||||
Compare_DataNDC::const_iterator i_compare_end = compare_data.begin();
|
||||
DataNDC::const_iterator i_data_end = data.begin();
|
||||
|
||||
std::advance(i_compare, 2);
|
||||
std::advance(i_data, 2);
|
||||
std::advance(i_data, 2);
|
||||
|
||||
std::advance(i_compare_end, 4);
|
||||
std::advance(i_data_end, 4);
|
||||
std::advance(i_data_end, 4);
|
||||
|
||||
compare_data.erase(i_compare, i_compare_end);
|
||||
data.erase(i_data, i_data_end);
|
||||
NDC compare_expected = *i_compare_end;
|
||||
NDC data_expected = *i_data_end;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_result = compare_data.erase(i_compare, i_compare_end);
|
||||
DataNDC::iterator i_data_result = data.erase(i_data, i_data_end);
|
||||
|
||||
CHECK(compare_expected == *i_compare_result);
|
||||
CHECK(data_expected == *i_data_result);
|
||||
|
||||
bool isEqual = std::equal(data.begin(),
|
||||
data.end(),
|
||||
@ -953,7 +1011,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_INITIALIZER_LIST
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
TEST(test_flat_set_template_deduction)
|
||||
{
|
||||
using Pair = ETL_OR_STD::pair<const int, NDC>;
|
||||
|
||||
@ -94,7 +94,7 @@ namespace
|
||||
CHECK(data.begin() == data.end());
|
||||
}
|
||||
|
||||
#if ETL_USING_STL && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
//*************************************************************************
|
||||
TEST(test_cpp17_deduced_constructor)
|
||||
{
|
||||
@ -1351,7 +1351,19 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST
|
||||
TEST(test_two_parameter_same_type_non_iterator)
|
||||
{
|
||||
// No compile error.
|
||||
etl::forward_list<int, 10> fl(10, 1);
|
||||
CHECK(fl.size() == 10);
|
||||
fl.assign(5, 2);
|
||||
CHECK(fl.size() == 5);
|
||||
fl.insert_after(fl.before_begin(), 5, 3);
|
||||
CHECK(fl.size() == fl.max_size());
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
TEST(test_forward_list_template_deduction)
|
||||
{
|
||||
etl::forward_list data{ ItemNDC("A"), ItemNDC("B"), ItemNDC("C"), ItemNDC("D"), ItemNDC("E"), ItemNDC("F") };
|
||||
|
||||
@ -136,7 +136,7 @@ namespace
|
||||
CHECK_EQUAL(data.max_size(), SIZE);
|
||||
}
|
||||
|
||||
#if ETL_USING_STL && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
//*************************************************************************
|
||||
TEST(test_cpp17_deduced_constructor)
|
||||
{
|
||||
@ -1105,15 +1105,15 @@ namespace
|
||||
CompareDataNDC compare_data(initial_data.begin(), initial_data.end());
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
compare_data.erase(compare_data.begin() + 2);
|
||||
compare_data.erase(compare_data.cbegin() + 2);
|
||||
|
||||
data.erase(data.begin() + 2);
|
||||
data.erase(data.cbegin() + 2);
|
||||
|
||||
CHECK_EQUAL(compare_data.size(), data.size());
|
||||
|
||||
bool is_equal = std::equal(data.begin(),
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
bool is_equal = std::equal(data.cbegin(),
|
||||
data.cend(),
|
||||
compare_data.cbegin());
|
||||
|
||||
CHECK(is_equal);
|
||||
}
|
||||
@ -1124,15 +1124,15 @@ namespace
|
||||
CompareDataNDC compare_data(initial_data.begin(), initial_data.end());
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
compare_data.erase(compare_data.begin() + 2, compare_data.begin() + 4);
|
||||
compare_data.erase(compare_data.cbegin() + 2, compare_data.cbegin() + 4);
|
||||
|
||||
data.erase(data.begin() + 2, data.begin() + 4);
|
||||
data.erase(data.cbegin() + 2, data.cbegin() + 4);
|
||||
|
||||
CHECK_EQUAL(compare_data.size(), data.size());
|
||||
|
||||
bool is_equal = std::equal(data.begin(),
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
bool is_equal = std::equal(data.cbegin(),
|
||||
data.cend(),
|
||||
compare_data.cbegin());
|
||||
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
@ -1189,15 +1189,15 @@ namespace
|
||||
CompareDataNDC compare_data(initial_data.begin(), initial_data.end());
|
||||
DataNDC data(initial_data.begin(), initial_data.end(), lookup, pool);
|
||||
|
||||
compare_data.erase(compare_data.begin() + 2);
|
||||
compare_data.erase(compare_data.cbegin() + 2);
|
||||
|
||||
data.erase(data.begin() + 2);
|
||||
data.erase(data.cbegin() + 2);
|
||||
|
||||
CHECK_EQUAL(compare_data.size(), data.size());
|
||||
|
||||
bool is_equal = std::equal(data.begin(),
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
bool is_equal = std::equal(data.cbegin(),
|
||||
data.cend(),
|
||||
compare_data.cbegin());
|
||||
|
||||
CHECK(is_equal);
|
||||
}
|
||||
@ -1211,15 +1211,15 @@ namespace
|
||||
CompareDataNDC compare_data(initial_data.begin(), initial_data.end());
|
||||
DataNDC data(initial_data.begin(), initial_data.end(), lookup, pool);
|
||||
|
||||
compare_data.erase(compare_data.begin() + 2, compare_data.begin() + 4);
|
||||
compare_data.erase(compare_data.cbegin() + 2, compare_data.cbegin() + 4);
|
||||
|
||||
data.erase(data.begin() + 2, data.begin() + 4);
|
||||
data.erase(data.cbegin() + 2, data.cbegin() + 4);
|
||||
|
||||
CHECK_EQUAL(compare_data.size(), data.size());
|
||||
|
||||
bool is_equal = std::equal(data.begin(),
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
bool is_equal = std::equal(data.cbegin(),
|
||||
data.cend(),
|
||||
compare_data.cbegin());
|
||||
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
@ -105,7 +105,7 @@ namespace
|
||||
CHECK(data.begin() == data.end());
|
||||
}
|
||||
|
||||
#if ETL_USING_STL && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
//*************************************************************************
|
||||
TEST(test_cpp17_deduced_constructor)
|
||||
{
|
||||
@ -919,7 +919,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single)
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_iterator)
|
||||
{
|
||||
CompareData compare_data(sorted_data.begin(), sorted_data.end());
|
||||
DataNDC data(sorted_data.begin(), sorted_data.end());
|
||||
@ -970,27 +970,81 @@ namespace
|
||||
CHECK(are_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_const_iterator)
|
||||
{
|
||||
CompareData compare_data(sorted_data.begin(), sorted_data.end());
|
||||
DataNDC data(sorted_data.begin(), sorted_data.end());
|
||||
|
||||
DataNDC::const_iterator i_data = data.begin();
|
||||
std::advance(i_data, 2);
|
||||
|
||||
CompareData::const_iterator i_compare_data = compare_data.cbegin();
|
||||
std::advance(i_compare_data, 2);
|
||||
|
||||
i_compare_data = compare_data.erase(i_compare_data);
|
||||
i_data = data.erase(i_data);
|
||||
|
||||
CHECK_EQUAL(compare_data.size(), data.size());
|
||||
|
||||
are_equal = std::equal(data.cbegin(), data.cend(), compare_data.cbegin());
|
||||
|
||||
CHECK(are_equal);
|
||||
CHECK(*i_compare_data == *i_data);
|
||||
|
||||
i_compare_data = compare_data.erase(compare_data.cbegin());
|
||||
i_data = data.erase(data.cbegin());
|
||||
|
||||
CHECK_EQUAL(compare_data.size(), data.size());
|
||||
|
||||
are_equal = std::equal(data.begin(), data.end(), compare_data.begin());
|
||||
|
||||
CHECK(are_equal);
|
||||
|
||||
are_equal = i_data == data.begin();
|
||||
CHECK(are_equal);
|
||||
|
||||
// Move to the last value and erase.
|
||||
i_compare_data = compare_data.begin();
|
||||
std::advance(i_compare_data, compare_data.size() - 1);
|
||||
i_compare_data = compare_data.erase(i_compare_data);
|
||||
|
||||
i_data = data.begin();
|
||||
std::advance(i_data, data.size() - 1);
|
||||
i_data = data.erase(i_data);
|
||||
|
||||
CHECK_EQUAL(compare_data.size(), data.size());
|
||||
|
||||
are_equal = std::equal(data.begin(), data.end(), compare_data.begin());
|
||||
|
||||
CHECK(are_equal);
|
||||
are_equal = i_data == data.end();
|
||||
CHECK(are_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_range)
|
||||
{
|
||||
CompareData compare_data(sorted_data.begin(), sorted_data.end());
|
||||
DataNDC data(sorted_data.begin(), sorted_data.end());
|
||||
|
||||
DataNDC::iterator i_data_1 = data.begin();
|
||||
DataNDC::const_iterator i_data_1 = data.cbegin();
|
||||
std::advance(i_data_1, 2);
|
||||
|
||||
DataNDC::iterator i_data_2 = data.begin();
|
||||
DataNDC::const_iterator i_data_2 = data.cbegin();
|
||||
std::advance(i_data_2, 4);
|
||||
|
||||
CompareData::iterator i_compare_data_1 = compare_data.begin();
|
||||
CompareData::const_iterator i_compare_data_1 = compare_data.begin();
|
||||
std::advance(i_compare_data_1, 2);
|
||||
|
||||
CompareData::iterator i_compare_data_2 = compare_data.begin();
|
||||
CompareData::const_iterator i_compare_data_2 = compare_data.begin();
|
||||
std::advance(i_compare_data_2, 4);
|
||||
|
||||
compare_data.erase(i_compare_data_1, i_compare_data_2);
|
||||
CompareData::iterator citr = compare_data.erase(i_compare_data_1, i_compare_data_2);
|
||||
CHECK(citr == i_compare_data_2);
|
||||
|
||||
data.erase(i_data_1, i_data_2);
|
||||
DataNDC::iterator ditr = data.erase(i_data_1, i_data_2);
|
||||
CHECK(ditr == i_data_2);
|
||||
|
||||
CHECK_EQUAL(compare_data.size(), data.size());
|
||||
|
||||
@ -1003,8 +1057,8 @@ namespace
|
||||
{
|
||||
DataNDC data(sorted_data.begin(), sorted_data.end());
|
||||
|
||||
data.erase(data.begin(), data.end());
|
||||
|
||||
DataNDC::iterator itr = data.erase(data.cbegin(), data.cend());
|
||||
CHECK(itr == data.cbegin());
|
||||
CHECK(data.empty());
|
||||
|
||||
// Check that it is still in a valid state.
|
||||
@ -2029,7 +2083,18 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST
|
||||
TEST(test_same_type_non_iterator)
|
||||
{
|
||||
etl::list<int, 10> l(10, 1);
|
||||
CHECK(l.size() == 10);
|
||||
l.assign(5, 2);
|
||||
CHECK(l.size() == 5);
|
||||
l.insert(l.begin(), 5, 3);
|
||||
CHECK(l.size() == l.max_size());
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
TEST(test_forward_list_template_deduction)
|
||||
{
|
||||
etl::list data{ ItemNDC("A"), ItemNDC("B"), ItemNDC("C"), ItemNDC("D"), ItemNDC("E"), ItemNDC("F") };
|
||||
|
||||
@ -590,9 +590,9 @@ namespace
|
||||
DataNDC data1(pool);
|
||||
DataNDC data2(pool);
|
||||
|
||||
data1.assign(SIZE / 2UL, VALUE);
|
||||
data1.assign(SIZE, VALUE);
|
||||
|
||||
CHECK_THROW(data2.assign((SIZE / 2) + 1, VALUE), etl::list_full);
|
||||
CHECK_THROW(data2.assign(SIZE + 1, VALUE), etl::list_full);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
@ -1126,7 +1126,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single)
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_iterator)
|
||||
{
|
||||
Pool pool;
|
||||
CompareData compare_data(sorted_data.begin(), sorted_data.end());
|
||||
@ -1178,6 +1178,59 @@ namespace
|
||||
CHECK(are_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_const_iterator)
|
||||
{
|
||||
Pool pool;
|
||||
CompareData compare_data(sorted_data.begin(), sorted_data.end());
|
||||
DataNDC data(sorted_data.begin(), sorted_data.end(), pool);
|
||||
|
||||
DataNDC::iterator i_data = data.begin();
|
||||
std::advance(i_data, 2);
|
||||
|
||||
CompareData::iterator i_compare_data = compare_data.begin();
|
||||
std::advance(i_compare_data, 2);
|
||||
|
||||
i_compare_data = compare_data.erase(i_compare_data);
|
||||
i_data = data.erase(i_data);
|
||||
|
||||
CHECK_EQUAL(compare_data.size(), data.size());
|
||||
|
||||
are_equal = std::equal(data.begin(), data.end(), compare_data.begin());
|
||||
|
||||
CHECK(are_equal);
|
||||
CHECK(*i_compare_data == *i_data);
|
||||
|
||||
i_compare_data = compare_data.erase(compare_data.begin());
|
||||
i_data = data.erase(data.begin());
|
||||
|
||||
CHECK_EQUAL(compare_data.size(), data.size());
|
||||
|
||||
are_equal = std::equal(data.begin(), data.end(), compare_data.begin());
|
||||
|
||||
CHECK(are_equal);
|
||||
|
||||
are_equal = i_data == data.begin();
|
||||
CHECK(are_equal);
|
||||
|
||||
// Move to the last value and erase.
|
||||
i_compare_data = compare_data.begin();
|
||||
std::advance(i_compare_data, compare_data.size() - 1);
|
||||
i_compare_data = compare_data.erase(i_compare_data);
|
||||
|
||||
i_data = data.begin();
|
||||
std::advance(i_data, data.size() - 1);
|
||||
i_data = data.erase(i_data);
|
||||
|
||||
CHECK_EQUAL(compare_data.size(), data.size());
|
||||
|
||||
are_equal = std::equal(data.begin(), data.end(), compare_data.begin());
|
||||
|
||||
CHECK(are_equal);
|
||||
are_equal = i_data == data.end();
|
||||
CHECK(are_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_range)
|
||||
{
|
||||
@ -1185,21 +1238,23 @@ namespace
|
||||
CompareData compare_data(sorted_data.begin(), sorted_data.end());
|
||||
DataNDC data(sorted_data.begin(), sorted_data.end(), pool);
|
||||
|
||||
DataNDC::iterator i_data_1 = data.begin();
|
||||
DataNDC::const_iterator i_data_1 = data.cbegin();
|
||||
std::advance(i_data_1, 2);
|
||||
|
||||
DataNDC::iterator i_data_2 = data.begin();
|
||||
DataNDC::const_iterator i_data_2 = data.cbegin();
|
||||
std::advance(i_data_2, 4);
|
||||
|
||||
CompareData::iterator i_compare_data_1 = compare_data.begin();
|
||||
CompareData::const_iterator i_compare_data_1 = compare_data.cbegin();
|
||||
std::advance(i_compare_data_1, 2);
|
||||
|
||||
CompareData::iterator i_compare_data_2 = compare_data.begin();
|
||||
CompareData::const_iterator i_compare_data_2 = compare_data.cbegin();
|
||||
std::advance(i_compare_data_2, 4);
|
||||
|
||||
compare_data.erase(i_compare_data_1, i_compare_data_2);
|
||||
CompareData::iterator citr = compare_data.erase(i_compare_data_1, i_compare_data_2);
|
||||
CHECK(citr == i_compare_data_2);
|
||||
|
||||
data.erase(i_data_1, i_data_2);
|
||||
DataNDC::iterator ditr = data.erase(i_data_1, i_data_2);
|
||||
CHECK(ditr == i_data_2);
|
||||
|
||||
CHECK_EQUAL(compare_data.size(), data.size());
|
||||
|
||||
@ -1214,8 +1269,8 @@ namespace
|
||||
DataNDC data1(half_data.begin(), half_data.end(), pool);
|
||||
DataNDC data2(half_data.begin(), half_data.end(), pool);
|
||||
|
||||
data1.erase(data1.begin(), data1.end());
|
||||
|
||||
DataNDC::iterator itr = data1.erase(data1.cbegin(), data1.cend());
|
||||
CHECK(itr == data1.cbegin());
|
||||
CHECK(data1.empty());
|
||||
CHECK(!data2.empty());
|
||||
|
||||
|
||||
@ -193,7 +193,7 @@ namespace
|
||||
CHECK(data.begin() == data.end());
|
||||
}
|
||||
|
||||
#if ETL_USING_STL && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
//*************************************************************************
|
||||
TEST(test_cpp17_deduced_constructor)
|
||||
{
|
||||
@ -830,8 +830,10 @@ namespace
|
||||
std::advance(i_compare, 2);
|
||||
std::advance(i_data, 2);
|
||||
|
||||
compare_data.erase(i_compare);
|
||||
data.erase(i_data);
|
||||
Compare_Data::iterator i_compare1 = compare_data.erase(i_compare);
|
||||
Data::iterator i_data1 = data.erase(i_data);
|
||||
|
||||
CHECK(i_compare1->second == i_data1->second);
|
||||
|
||||
bool isEqual = Check_Equal(data.begin(),
|
||||
data.end(),
|
||||
@ -1281,7 +1283,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
TEST(test_map_template_deduction)
|
||||
{
|
||||
using Pair = std::pair<const std::string, int>;
|
||||
|
||||
@ -195,7 +195,7 @@ namespace
|
||||
CHECK(data.begin() == data.end());
|
||||
}
|
||||
|
||||
#if ETL_USING_STL && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
//*************************************************************************
|
||||
TEST(test_cpp17_deduced_constructor)
|
||||
{
|
||||
@ -699,8 +699,10 @@ namespace
|
||||
Compare_Data::iterator i_compare = compare_data.begin();
|
||||
Data::iterator i_data = data.begin();
|
||||
|
||||
compare_data.erase(i_compare);
|
||||
data.erase(i_data);
|
||||
Compare_Data::iterator i_compare1 = compare_data.erase(i_compare);
|
||||
Data::iterator i_data1 = data.erase(i_data);
|
||||
|
||||
CHECK(i_compare1->second == i_data1->second);
|
||||
|
||||
bool isEqual = Check_Equal(data.begin(),
|
||||
data.end(),
|
||||
@ -1246,7 +1248,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
TEST(test_multimap_template_deduction)
|
||||
{
|
||||
using Pair = std::pair<const std::string, int>;
|
||||
|
||||
@ -210,7 +210,7 @@ namespace
|
||||
CHECK(data.begin() == data.end());
|
||||
}
|
||||
|
||||
#if ETL_USING_STL && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
//*************************************************************************
|
||||
TEST(test_cpp17_deduced_constructor)
|
||||
{
|
||||
@ -713,8 +713,10 @@ namespace
|
||||
Compare_Data::iterator i_compare = compare_data.begin();
|
||||
Data::iterator i_data = data.begin();
|
||||
|
||||
compare_data.erase(i_compare);
|
||||
data.erase(i_data);
|
||||
Compare_Data::iterator i_compare1 = compare_data.erase(i_compare);
|
||||
Data::iterator i_data1 = data.erase(i_data);
|
||||
|
||||
CHECK_EQUAL(*i_compare1, *i_data1);
|
||||
|
||||
bool isEqual = Check_Equal(data.begin(),
|
||||
data.end(),
|
||||
@ -1252,7 +1254,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_INITIALIZER_LIST
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
TEST(test_multiset_template_deduction)
|
||||
{
|
||||
etl::multiset data{ std::string("A"), std::string("B"), std::string("C"), std::string("D"), std::string("E"), std::string("F") };
|
||||
|
||||
@ -534,19 +534,71 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single)
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_iterator)
|
||||
{
|
||||
Compare_DataNDC compare_data(initial_data.begin(), initial_data.end());
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
Compare_DataNDC::iterator i_compare = compare_data.begin();
|
||||
DataNDC::iterator i_data = data.begin();
|
||||
Compare_DataNDC::iterator i_compare_begin = compare_data.begin();
|
||||
DataNDC::iterator i_data_begin = data.begin();
|
||||
|
||||
Compare_DataNDC::iterator i_compare = i_compare_begin;
|
||||
DataNDC::iterator i_data = i_data_begin;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_expected = i_compare_begin;
|
||||
DataNDC::iterator i_data_expected = i_data_begin;
|
||||
|
||||
std::advance(i_compare, 2);
|
||||
std::advance(i_data, 2);
|
||||
|
||||
std::advance(i_compare_expected, 3);
|
||||
std::advance(i_data_expected, 3);
|
||||
|
||||
ElementNDC compare_expected = *i_compare_expected;
|
||||
ElementNDC data_expected = *i_data_expected;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_result = compare_data.erase(i_compare);
|
||||
DataNDC::iterator i_data_result = data.erase(i_data);
|
||||
|
||||
CHECK(compare_expected == *i_compare_result);
|
||||
CHECK(data_expected == *i_data_result);
|
||||
|
||||
bool isEqual = Check_Equal(data.begin(),
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
|
||||
CHECK(isEqual);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_const_iterator)
|
||||
{
|
||||
Compare_DataNDC compare_data(initial_data.begin(), initial_data.end());
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
Compare_DataNDC::iterator i_compare_begin = compare_data.begin();
|
||||
DataNDC::iterator i_data_begin = data.begin();
|
||||
|
||||
Compare_DataNDC::const_iterator i_compare = i_compare_begin;
|
||||
DataNDC::const_iterator i_data = i_data_begin;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_expected = i_compare_begin;
|
||||
DataNDC::iterator i_data_expected = i_data_begin;
|
||||
|
||||
std::advance(i_compare, 2);
|
||||
std::advance(i_data, 2);
|
||||
|
||||
std::advance(i_compare_expected, 3);
|
||||
std::advance(i_data_expected, 3);
|
||||
|
||||
compare_data.erase(i_compare);
|
||||
data.erase(i_data);
|
||||
ElementNDC compare_expected = *i_compare_expected;
|
||||
ElementNDC data_expected = *i_data_expected;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_result = compare_data.erase(i_compare);
|
||||
DataNDC::iterator i_data_result = data.erase(i_data);
|
||||
|
||||
CHECK(compare_expected == *i_compare_result);
|
||||
CHECK(data_expected == *i_data_result);
|
||||
|
||||
bool isEqual = Check_Equal(data.begin(),
|
||||
data.end(),
|
||||
@ -561,11 +613,11 @@ namespace
|
||||
Compare_DataNDC compare_data(initial_data.begin(), initial_data.end());
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
Compare_DataNDC::iterator i_compare = compare_data.begin();
|
||||
DataNDC::iterator i_data = data.begin();
|
||||
Compare_DataNDC::const_iterator i_compare = compare_data.begin();
|
||||
DataNDC::const_iterator i_data = data.begin();
|
||||
|
||||
Compare_DataNDC::iterator i_compare_end = compare_data.begin();
|
||||
DataNDC::iterator i_data_end = data.begin();
|
||||
Compare_DataNDC::const_iterator i_compare_end = compare_data.begin();
|
||||
DataNDC::const_iterator i_data_end = data.begin();
|
||||
|
||||
std::advance(i_compare, 2);
|
||||
std::advance(i_data, 2);
|
||||
@ -573,8 +625,14 @@ namespace
|
||||
std::advance(i_compare_end, 4);
|
||||
std::advance(i_data_end, 4);
|
||||
|
||||
compare_data.erase(i_compare, i_compare_end);
|
||||
data.erase(i_data, i_data_end);
|
||||
ElementNDC compare_expected = *i_compare_end;
|
||||
ElementNDC data_expected = *i_data_end;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_result = compare_data.erase(i_compare, i_compare_end);
|
||||
DataNDC::iterator i_data_result = data.erase(i_data, i_data_end);
|
||||
|
||||
CHECK(compare_expected == *i_compare_result);
|
||||
CHECK(data_expected == *i_data_result);
|
||||
|
||||
bool isEqual = Check_Equal(data.begin(),
|
||||
data.end(),
|
||||
|
||||
@ -360,19 +360,71 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single)
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_iterator)
|
||||
{
|
||||
Compare_DataNDC compare_data(initial_data.begin(), initial_data.end());
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
Compare_DataNDC::iterator i_compare = compare_data.begin();
|
||||
DataNDC::iterator i_data = data.begin();
|
||||
Compare_DataNDC::iterator i_compare_begin = compare_data.begin();
|
||||
DataNDC::iterator i_data_begin = data.begin();
|
||||
|
||||
Compare_DataNDC::iterator i_compare = i_compare_begin;
|
||||
DataNDC::iterator i_data = i_data_begin;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_expected = i_compare_begin;
|
||||
DataNDC::iterator i_data_expected = i_data_begin;
|
||||
|
||||
std::advance(i_compare, 2);
|
||||
std::advance(i_data, 2);
|
||||
std::advance(i_data, 2);
|
||||
|
||||
compare_data.erase(i_compare);
|
||||
data.erase(i_data);
|
||||
std::advance(i_compare_expected, 3);
|
||||
std::advance(i_data_expected, 3);
|
||||
|
||||
ElementNDC compare_expected = *i_compare_expected;
|
||||
ElementNDC data_expected = *i_data_expected;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_result = compare_data.erase(i_compare);
|
||||
DataNDC::iterator i_data_result = data.erase(i_data);
|
||||
|
||||
CHECK(compare_expected == *i_compare_result);
|
||||
CHECK(data_expected == *i_data_result);
|
||||
|
||||
bool isEqual = Check_Equal(data.begin(),
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
|
||||
CHECK(isEqual);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_const_iterator)
|
||||
{
|
||||
Compare_DataNDC compare_data(initial_data.begin(), initial_data.end());
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
Compare_DataNDC::iterator i_compare_begin = compare_data.begin();
|
||||
DataNDC::iterator i_data_begin = data.begin();
|
||||
|
||||
Compare_DataNDC::const_iterator i_compare = i_compare_begin;
|
||||
DataNDC::const_iterator i_data = i_data_begin;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_expected = i_compare_begin;
|
||||
DataNDC::iterator i_data_expected = i_data_begin;
|
||||
|
||||
std::advance(i_compare, 2);
|
||||
std::advance(i_data, 2);
|
||||
|
||||
std::advance(i_compare_expected, 3);
|
||||
std::advance(i_data_expected, 3);
|
||||
|
||||
ElementNDC compare_expected = *i_compare_expected;
|
||||
ElementNDC data_expected = *i_data_expected;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_result = compare_data.erase(i_compare);
|
||||
DataNDC::iterator i_data_result = data.erase(i_data);
|
||||
|
||||
CHECK(compare_expected == *i_compare_result);
|
||||
CHECK(data_expected == *i_data_result);
|
||||
|
||||
bool isEqual = Check_Equal(data.begin(),
|
||||
data.end(),
|
||||
@ -387,24 +439,30 @@ namespace
|
||||
Compare_DataNDC compare_data(initial_data.begin(), initial_data.end());
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
Compare_DataNDC::iterator i_compare = compare_data.begin();
|
||||
DataNDC::iterator i_data = data.begin();
|
||||
Compare_DataNDC::const_iterator i_compare = compare_data.begin();
|
||||
DataNDC::const_iterator i_data = data.begin();
|
||||
|
||||
Compare_DataNDC::iterator i_compare_end = compare_data.begin();
|
||||
DataNDC::iterator i_data_end = data.begin();
|
||||
Compare_DataNDC::const_iterator i_compare_end = compare_data.begin();
|
||||
DataNDC::const_iterator i_data_end = data.begin();
|
||||
|
||||
std::advance(i_compare, 2);
|
||||
std::advance(i_data, 2);
|
||||
std::advance(i_data, 2);
|
||||
|
||||
std::advance(i_compare_end, 4);
|
||||
std::advance(i_data_end, 4);
|
||||
std::advance(i_data_end, 4);
|
||||
|
||||
compare_data.erase(i_compare, i_compare_end);
|
||||
data.erase(i_data, i_data_end);
|
||||
ElementNDC compare_expected = *i_compare_end;
|
||||
ElementNDC data_expected = *i_data_end;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_result = compare_data.erase(i_compare, i_compare_end);
|
||||
DataNDC::iterator i_data_result = data.erase(i_data, i_data_end);
|
||||
|
||||
CHECK(compare_expected == *i_compare_result);
|
||||
CHECK(data_expected == *i_data_result);
|
||||
|
||||
bool isEqual = Check_Equal(data.begin(),
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
|
||||
CHECK(isEqual);
|
||||
}
|
||||
|
||||
@ -338,23 +338,75 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single)
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_iterator)
|
||||
{
|
||||
Compare_DataNDC compare_data(initial_data.begin(), initial_data.end());
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
Compare_DataNDC::iterator i_compare = compare_data.begin();
|
||||
DataNDC::iterator i_data = data.begin();
|
||||
Compare_DataNDC::iterator i_compare_begin = compare_data.begin();
|
||||
DataNDC::iterator i_data_begin = data.begin();
|
||||
|
||||
Compare_DataNDC::iterator i_compare = i_compare_begin;
|
||||
DataNDC::iterator i_data = i_data_begin;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_expected = i_compare_begin;
|
||||
DataNDC::iterator i_data_expected = i_data_begin;
|
||||
|
||||
std::advance(i_compare, 2);
|
||||
std::advance(i_data, 2);
|
||||
std::advance(i_data, 2);
|
||||
|
||||
compare_data.erase(i_compare);
|
||||
data.erase(i_data);
|
||||
std::advance(i_compare_expected, 3);
|
||||
std::advance(i_data_expected, 3);
|
||||
|
||||
NDC compare_expected = *i_compare_expected;
|
||||
NDC data_expected = *i_data_expected;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_result = compare_data.erase(i_compare);
|
||||
DataNDC::iterator i_data_result = data.erase(i_data);
|
||||
|
||||
CHECK(compare_expected == *i_compare_result);
|
||||
CHECK(data_expected == *i_data_result);
|
||||
|
||||
bool isEqual = std::equal(data.begin(),
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
|
||||
CHECK(isEqual);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_const_iterator)
|
||||
{
|
||||
Compare_DataNDC compare_data(initial_data.begin(), initial_data.end());
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
Compare_DataNDC::iterator i_compare_begin = compare_data.begin();
|
||||
DataNDC::iterator i_data_begin = data.begin();
|
||||
|
||||
Compare_DataNDC::const_iterator i_compare = i_compare_begin;
|
||||
DataNDC::const_iterator i_data = i_data_begin;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_expected = i_compare_begin;
|
||||
DataNDC::iterator i_data_expected = i_data_begin;
|
||||
|
||||
std::advance(i_compare, 2);
|
||||
std::advance(i_data, 2);
|
||||
|
||||
std::advance(i_compare_expected, 3);
|
||||
std::advance(i_data_expected, 3);
|
||||
|
||||
NDC compare_expected = *i_compare_expected;
|
||||
NDC data_expected = *i_data_expected;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_result = compare_data.erase(i_compare);
|
||||
DataNDC::iterator i_data_result = data.erase(i_data);
|
||||
|
||||
CHECK(compare_expected == *i_compare_result);
|
||||
CHECK(data_expected == *i_data_result);
|
||||
|
||||
bool isEqual = std::equal(data.begin(),
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
|
||||
CHECK(isEqual);
|
||||
}
|
||||
@ -365,24 +417,30 @@ namespace
|
||||
Compare_DataNDC compare_data(initial_data.begin(), initial_data.end());
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
Compare_DataNDC::iterator i_compare = compare_data.begin();
|
||||
DataNDC::iterator i_data = data.begin();
|
||||
Compare_DataNDC::const_iterator i_compare = compare_data.begin();
|
||||
DataNDC::const_iterator i_data = data.begin();
|
||||
|
||||
Compare_DataNDC::iterator i_compare_end = compare_data.begin();
|
||||
DataNDC::iterator i_data_end = data.begin();
|
||||
Compare_DataNDC::const_iterator i_compare_end = compare_data.begin();
|
||||
DataNDC::const_iterator i_data_end = data.begin();
|
||||
|
||||
std::advance(i_compare, 2);
|
||||
std::advance(i_data, 2);
|
||||
std::advance(i_data, 2);
|
||||
|
||||
std::advance(i_compare_end, 4);
|
||||
std::advance(i_data_end, 4);
|
||||
std::advance(i_data_end, 4);
|
||||
|
||||
compare_data.erase(i_compare, i_compare_end);
|
||||
data.erase(i_data, i_data_end);
|
||||
NDC compare_expected = *i_compare_end;
|
||||
NDC data_expected = *i_data_end;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_result = compare_data.erase(i_compare, i_compare_end);
|
||||
DataNDC::iterator i_data_result = data.erase(i_data, i_data_end);
|
||||
|
||||
CHECK(compare_expected == *i_compare_result);
|
||||
CHECK(data_expected == *i_data_result);
|
||||
|
||||
bool isEqual = std::equal(data.begin(),
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
|
||||
CHECK(isEqual);
|
||||
}
|
||||
|
||||
@ -362,19 +362,71 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single)
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_iterator)
|
||||
{
|
||||
Compare_DataNDC compare_data(initial_data.begin(), initial_data.end());
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
Compare_DataNDC::iterator i_compare = compare_data.begin();
|
||||
DataNDC::iterator i_data = data.begin();
|
||||
Compare_DataNDC::iterator i_compare_begin = compare_data.begin();
|
||||
DataNDC::iterator i_data_begin = data.begin();
|
||||
|
||||
Compare_DataNDC::iterator i_compare = i_compare_begin;
|
||||
DataNDC::iterator i_data = i_data_begin;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_expected = i_compare_begin;
|
||||
DataNDC::iterator i_data_expected = i_data_begin;
|
||||
|
||||
std::advance(i_compare, 2);
|
||||
std::advance(i_data, 2);
|
||||
std::advance(i_data, 2);
|
||||
|
||||
compare_data.erase(i_compare);
|
||||
data.erase(i_data);
|
||||
std::advance(i_compare_expected, 3);
|
||||
std::advance(i_data_expected, 3);
|
||||
|
||||
NDC compare_expected = *i_compare_expected;
|
||||
NDC data_expected = *i_data_expected;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_result = compare_data.erase(i_compare);
|
||||
DataNDC::iterator i_data_result = data.erase(i_data);
|
||||
|
||||
CHECK(compare_expected == *i_compare_result);
|
||||
CHECK(data_expected == *i_data_result);
|
||||
|
||||
bool isEqual = std::equal(data.begin(),
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
|
||||
CHECK(isEqual);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_const_iterator)
|
||||
{
|
||||
Compare_DataNDC compare_data(initial_data.begin(), initial_data.end());
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
Compare_DataNDC::iterator i_compare_begin = compare_data.begin();
|
||||
DataNDC::iterator i_data_begin = data.begin();
|
||||
|
||||
Compare_DataNDC::const_iterator i_compare = i_compare_begin;
|
||||
DataNDC::const_iterator i_data = i_data_begin;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_expected = i_compare_begin;
|
||||
DataNDC::iterator i_data_expected = i_data_begin;
|
||||
|
||||
std::advance(i_compare, 2);
|
||||
std::advance(i_data, 2);
|
||||
|
||||
std::advance(i_compare_expected, 3);
|
||||
std::advance(i_data_expected, 3);
|
||||
|
||||
NDC compare_expected = *i_compare_expected;
|
||||
NDC data_expected = *i_data_expected;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_result = compare_data.erase(i_compare);
|
||||
DataNDC::iterator i_data_result = data.erase(i_data);
|
||||
|
||||
CHECK(compare_expected == *i_compare_result);
|
||||
CHECK(data_expected == *i_data_result);
|
||||
|
||||
bool isEqual = std::equal(data.begin(),
|
||||
data.end(),
|
||||
@ -389,20 +441,26 @@ namespace
|
||||
Compare_DataNDC compare_data(initial_data.begin(), initial_data.end());
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
Compare_DataNDC::iterator i_compare = compare_data.begin();
|
||||
DataNDC::iterator i_data = data.begin();
|
||||
Compare_DataNDC::const_iterator i_compare = compare_data.begin();
|
||||
DataNDC::const_iterator i_data = data.begin();
|
||||
|
||||
Compare_DataNDC::iterator i_compare_end = compare_data.begin();
|
||||
DataNDC::iterator i_data_end = data.begin();
|
||||
Compare_DataNDC::const_iterator i_compare_end = compare_data.begin();
|
||||
DataNDC::const_iterator i_data_end = data.begin();
|
||||
|
||||
std::advance(i_compare, 2);
|
||||
std::advance(i_data, 2);
|
||||
std::advance(i_data, 2);
|
||||
|
||||
std::advance(i_compare_end, 4);
|
||||
std::advance(i_data_end, 4);
|
||||
std::advance(i_data_end, 4);
|
||||
|
||||
compare_data.erase(i_compare, i_compare_end);
|
||||
data.erase(i_data, i_data_end);
|
||||
NDC compare_expected = *i_compare_end;
|
||||
NDC data_expected = *i_data_end;
|
||||
|
||||
Compare_DataNDC::iterator i_compare_result = compare_data.erase(i_compare, i_compare_end);
|
||||
DataNDC::iterator i_data_result = data.erase(i_data, i_data_end);
|
||||
|
||||
CHECK(compare_expected == *i_compare_result);
|
||||
CHECK(data_expected == *i_data_result);
|
||||
|
||||
bool isEqual = std::equal(data.begin(),
|
||||
data.end(),
|
||||
|
||||
@ -226,7 +226,7 @@ namespace
|
||||
CHECK(data.begin() == data.end());
|
||||
}
|
||||
|
||||
#if ETL_USING_STL && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
//*************************************************************************
|
||||
TEST(test_cpp17_deduced_constructor)
|
||||
{
|
||||
@ -754,8 +754,10 @@ namespace
|
||||
std::advance(i_compare, 2);
|
||||
std::advance(i_data, 2);
|
||||
|
||||
compare_data.erase(i_compare);
|
||||
data.erase(i_data);
|
||||
Compare_Data::iterator i_compare1 = compare_data.erase(i_compare);
|
||||
Data::iterator i_data1 = data.erase(i_data);
|
||||
|
||||
CHECK_EQUAL(*i_compare1, *i_data1);
|
||||
|
||||
bool isEqual = Check_Equal(data.begin(),
|
||||
data.end(),
|
||||
@ -1199,7 +1201,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_INITIALIZER_LIST
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
TEST(test_set_template_deduction)
|
||||
{
|
||||
etl::set data{ std::string("A"), std::string("B"), std::string("C"), std::string("D"), std::string("E"), std::string("F") };
|
||||
|
||||
@ -260,7 +260,7 @@ namespace
|
||||
CHECK(isEqual);
|
||||
}
|
||||
|
||||
#if ETL_USING_STL && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
//*************************************************************************
|
||||
TEST(test_cpp17_deduced_constructor)
|
||||
{
|
||||
|
||||
@ -1251,9 +1251,9 @@ namespace
|
||||
const value_t INITIAL_VALUE = STR('A');
|
||||
|
||||
size_t offset = 2UL;
|
||||
text.insert(text.begin() + offset, INITIAL_VALUE);
|
||||
compare_text.insert(compare_text.begin() + offset, INITIAL_VALUE);
|
||||
compare_text.erase(compare_text.end() - 1);
|
||||
text.insert(text.cbegin() + offset, INITIAL_VALUE);
|
||||
compare_text.insert(compare_text.cbegin() + offset, INITIAL_VALUE);
|
||||
compare_text.erase(compare_text.cend() - 1);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1263,9 +1263,9 @@ namespace
|
||||
CHECK(is_equal);
|
||||
|
||||
offset = 0;
|
||||
text.insert(text.begin() + offset, STR('A'));
|
||||
compare_text.insert(compare_text.begin() + offset, STR('A'));
|
||||
compare_text.erase(compare_text.end() - 1);
|
||||
text.insert(text.cbegin() + offset, STR('A'));
|
||||
compare_text.insert(compare_text.cbegin() + offset, STR('A'));
|
||||
compare_text.erase(compare_text.cend() - 1);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1275,9 +1275,9 @@ namespace
|
||||
CHECK(is_equal);
|
||||
|
||||
offset = text.size();
|
||||
text.insert(text.begin() + offset, STR('A'));
|
||||
compare_text.insert(compare_text.begin() + offset, STR('A'));
|
||||
compare_text.erase(compare_text.end() - 1);
|
||||
text.insert(text.cbegin() + offset, STR('A'));
|
||||
compare_text.insert(compare_text.cbegin() + offset, STR('A'));
|
||||
compare_text.erase(compare_text.cend() - 1);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1323,11 +1323,11 @@ namespace
|
||||
const value_t INSERT_VALUE = STR('A');
|
||||
|
||||
size_t offset = 0UL;
|
||||
compare_text.assign(initial_text.begin(), initial_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.end() - INSERT_SIZE, compare_text.end());
|
||||
text.insert(text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.insert(compare_text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.cend() - INSERT_SIZE, compare_text.cend());
|
||||
text.insert(text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1337,12 +1337,12 @@ namespace
|
||||
CHECK(is_equal);
|
||||
|
||||
offset = 2;
|
||||
compare_text.assign(initial_text.begin(), initial_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.end() - INSERT_SIZE, compare_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
text.insert(text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.insert(compare_text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.cend() - INSERT_SIZE, compare_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.insert(text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1352,12 +1352,12 @@ namespace
|
||||
CHECK(is_equal);
|
||||
|
||||
offset = 4;
|
||||
compare_text.assign(initial_text.begin(), initial_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.end() - INSERT_SIZE, compare_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
text.insert(text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.insert(compare_text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.cend() - INSERT_SIZE, compare_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.insert(text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1367,12 +1367,12 @@ namespace
|
||||
CHECK(is_equal);
|
||||
|
||||
offset = text.size();
|
||||
compare_text.assign(initial_text.begin(), initial_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.end() - INSERT_SIZE, compare_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
text.insert(text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.insert(compare_text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.cend() - INSERT_SIZE, compare_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.insert(text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1392,10 +1392,10 @@ namespace
|
||||
Compare_Text compare_text;
|
||||
Text text;
|
||||
|
||||
text.assign(initial_text.begin(), initial_text.begin() + INITIAL_SIZE);
|
||||
compare_text.assign(initial_text.begin(), initial_text.begin() + INITIAL_SIZE);
|
||||
text.insert(text.begin() + offset, insert_text.begin(), insert_text.end());
|
||||
compare_text.insert(compare_text.begin() + offset, insert_text.begin(), insert_text.end());
|
||||
text.assign(initial_text.cbegin(), initial_text.cbegin() + INITIAL_SIZE);
|
||||
compare_text.assign(initial_text.cbegin(), initial_text.cbegin() + INITIAL_SIZE);
|
||||
text.insert(text.cbegin() + offset, insert_text.cbegin(), insert_text.cend());
|
||||
compare_text.insert(compare_text.cbegin() + offset, insert_text.cbegin(), insert_text.cend());
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
@ -1419,9 +1419,9 @@ namespace
|
||||
|
||||
compare_text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
compare_text.insert(compare_text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.resize(initial_text.size());
|
||||
text.insert(text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
text.insert(text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1434,9 +1434,9 @@ namespace
|
||||
|
||||
compare_text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
compare_text.insert(compare_text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.resize(initial_text.size());
|
||||
text.insert(text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
text.insert(text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1450,9 +1450,9 @@ namespace
|
||||
|
||||
compare_text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
compare_text.insert(compare_text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.resize(initial_text.size());
|
||||
text.insert(text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
text.insert(text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1473,8 +1473,8 @@ namespace
|
||||
Compare_Text compare_text = STR("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
|
||||
TextL text = STR("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
|
||||
|
||||
text.insert(text.begin() + offset, text.begin() + 5, text.begin() + 10);
|
||||
compare_text.insert(compare_text.begin() + offset, compare_text.begin() + 5, compare_text.begin() + 10);
|
||||
text.insert(text.cbegin() + offset, text.cbegin() + 5, text.cbegin() + 10);
|
||||
compare_text.insert(compare_text.cbegin() + offset, compare_text.cbegin() + 5, compare_text.cbegin() + 10);
|
||||
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
@ -1489,9 +1489,9 @@ namespace
|
||||
{
|
||||
for (size_t offset = 0UL; offset <= short_text.size(); ++offset)
|
||||
{
|
||||
Compare_Text compare_text(short_text.begin(), short_text.end());
|
||||
Text text(short_text.begin(), short_text.end());
|
||||
Text insert(insert_text.begin(), insert_text.end());
|
||||
Compare_Text compare_text(short_text.cbegin(), short_text.cend());
|
||||
Text text(short_text.cbegin(), short_text.cend());
|
||||
Text insert(insert_text.cbegin(), insert_text.cend());
|
||||
|
||||
text.insert(offset, insert);
|
||||
compare_text.insert(offset, insert_text);
|
||||
@ -1510,9 +1510,9 @@ namespace
|
||||
{
|
||||
for (size_t offset = 0UL; offset <= initial_text.size(); ++offset)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.begin(), initial_text.end());
|
||||
Text text(initial_text.begin(), initial_text.end());
|
||||
Text insert(insert_text.begin(), insert_text.end());
|
||||
Compare_Text compare_text(initial_text.cbegin(), initial_text.cend());
|
||||
Text text(initial_text.cbegin(), initial_text.cend());
|
||||
Text insert(insert_text.cbegin(), insert_text.cend());
|
||||
|
||||
text.insert(offset, insert);
|
||||
compare_text.insert(offset, insert_text);
|
||||
@ -1531,11 +1531,11 @@ namespace
|
||||
{
|
||||
for (size_t offset = 0UL; offset <= short_text.size(); ++offset)
|
||||
{
|
||||
Compare_Text compare_text(short_text.begin(), short_text.end());
|
||||
Text text(short_text.begin(), short_text.end());
|
||||
Text insert(longer_text.begin(), longer_text.end());
|
||||
insert.erase(insert.begin(), insert.end());
|
||||
insert.append(insert_text.begin(), insert_text.end());
|
||||
Compare_Text compare_text(short_text.cbegin(), short_text.cend());
|
||||
Text text(short_text.cbegin(), short_text.cend());
|
||||
Text insert(longer_text.cbegin(), longer_text.cend());
|
||||
insert.erase(insert.cbegin(), insert.cend());
|
||||
insert.append(insert_text.cbegin(), insert_text.cend());
|
||||
|
||||
text.insert(offset, insert);
|
||||
compare_text.insert(offset, insert_text);
|
||||
@ -1552,9 +1552,9 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_insert_size_t_position_string_subpos_sunlen)
|
||||
{
|
||||
Compare_Text compare_text(short_text.begin(), short_text.end());
|
||||
Text text(short_text.begin(), short_text.end());
|
||||
Text insert(insert_text.begin(), insert_text.end());
|
||||
Compare_Text compare_text(short_text.cbegin(), short_text.cend());
|
||||
Text text(short_text.cbegin(), short_text.cend());
|
||||
Text insert(insert_text.cbegin(), insert_text.cend());
|
||||
|
||||
text.insert(0, insert, 0, insert.size());
|
||||
compare_text.insert(0, insert_text, 0, insert_text.size());
|
||||
@ -1566,8 +1566,8 @@ namespace
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
|
||||
compare_text.assign(short_text.begin(), short_text.end());
|
||||
text.assign(short_text.begin(), short_text.end());
|
||||
compare_text.assign(short_text.cbegin(), short_text.cend());
|
||||
text.assign(short_text.cbegin(), short_text.cend());
|
||||
|
||||
text.insert(2, insert, 2, insert.size() - 2);
|
||||
compare_text.insert(2, insert_text, 2, insert_text.size() - 2);
|
||||
@ -1581,8 +1581,8 @@ namespace
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
|
||||
compare_text.assign(short_text.begin(), short_text.end());
|
||||
text.assign(short_text.begin(), short_text.end());
|
||||
compare_text.assign(short_text.cbegin(), short_text.cend());
|
||||
text.assign(short_text.cbegin(), short_text.cend());
|
||||
|
||||
text.insert(short_text.size(), insert, 0, insert.size());
|
||||
compare_text.insert(short_text.size(), insert_text, 0, insert_text.size());
|
||||
@ -2704,13 +2704,31 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single)
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_iterator)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
Text text(initial_text.c_str());
|
||||
|
||||
compare_text.erase(compare_text.begin() + 2);
|
||||
text.erase(text.begin() + 2);
|
||||
Compare_Text::iterator citr = compare_text.erase(compare_text.begin() + 2);
|
||||
Text::iterator ditr = text.erase(text.begin() + 2);
|
||||
CHECK(*citr == *ditr);
|
||||
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_const_iterator)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
Text text(initial_text.c_str());
|
||||
|
||||
Compare_Text::iterator citr = compare_text.erase(compare_text.cbegin() + 2);
|
||||
Text::iterator ditr = text.erase(text.cbegin() + 2);
|
||||
CHECK(*citr == *ditr);
|
||||
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
@ -2725,9 +2743,9 @@ namespace
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
Text text(initial_text.c_str());
|
||||
|
||||
compare_text.erase(compare_text.begin() + 2, compare_text.begin() + 4);
|
||||
|
||||
text.erase(text.begin() + 2, text.begin() + 4);
|
||||
Compare_Text::iterator citr = compare_text.erase(compare_text.cbegin() + 2, compare_text.cbegin() + 4);
|
||||
Text::iterator ditr = text.erase(text.cbegin() + 2, text.cbegin() + 4);
|
||||
CHECK(*citr == *ditr);
|
||||
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
|
||||
@ -1443,16 +1443,15 @@ namespace
|
||||
TEST_FIXTURE(SetupFixture, test_insert_position_value_excess)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.begin(), initial_text.end());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.begin(), initial_text.end(), buffer.data(), buffer.size());
|
||||
|
||||
const value_t INITIAL_VALUE = STR('A');
|
||||
|
||||
size_t offset = 2;
|
||||
text.insert(text.begin() + offset, INITIAL_VALUE);
|
||||
compare_text.insert(compare_text.begin() + offset, INITIAL_VALUE);
|
||||
compare_text.erase(compare_text.end() - 1);
|
||||
size_t offset = 2UL;
|
||||
text.insert(text.cbegin() + offset, INITIAL_VALUE);
|
||||
compare_text.insert(compare_text.cbegin() + offset, INITIAL_VALUE);
|
||||
compare_text.erase(compare_text.cend() - 1);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1462,9 +1461,9 @@ namespace
|
||||
CHECK(is_equal);
|
||||
|
||||
offset = 0;
|
||||
text.insert(text.begin() + offset, STR('A'));
|
||||
compare_text.insert(compare_text.begin() + offset, STR('A'));
|
||||
compare_text.erase(compare_text.end() - 1);
|
||||
text.insert(text.cbegin() + offset, STR('A'));
|
||||
compare_text.insert(compare_text.cbegin() + offset, STR('A'));
|
||||
compare_text.erase(compare_text.cend() - 1);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1474,9 +1473,9 @@ namespace
|
||||
CHECK(is_equal);
|
||||
|
||||
offset = text.size();
|
||||
text.insert(text.begin() + offset, STR('A'));
|
||||
compare_text.insert(compare_text.begin() + offset, STR('A'));
|
||||
compare_text.erase(compare_text.end() - 1);
|
||||
text.insert(text.cbegin() + offset, STR('A'));
|
||||
compare_text.insert(compare_text.cbegin() + offset, STR('A'));
|
||||
compare_text.erase(compare_text.cend() - 1);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1490,15 +1489,14 @@ namespace
|
||||
TEST_FIXTURE(SetupFixture, test_insert_position_n_value)
|
||||
{
|
||||
Compare_Text compare_text;
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(buffer.data(), buffer.size());
|
||||
|
||||
const size_t INITIAL_SIZE = 5;
|
||||
const size_t INSERT_SIZE = 3;
|
||||
const value_t INITIAL_VALUE = STR('A');
|
||||
const size_t INITIAL_SIZE = 5UL;
|
||||
const size_t INSERT_SIZE = 3UL;
|
||||
const value_t INITIAL_VALUE = STR('A');
|
||||
|
||||
for (size_t offset = 0; offset <= INITIAL_SIZE; ++offset)
|
||||
for (size_t offset = 0UL; offset <= INITIAL_SIZE; ++offset)
|
||||
{
|
||||
text.assign(initial_text.begin(), initial_text.begin() + INITIAL_SIZE);
|
||||
compare_text.assign(initial_text.begin(), initial_text.begin() + INITIAL_SIZE);
|
||||
@ -1518,19 +1516,18 @@ namespace
|
||||
TEST_FIXTURE(SetupFixture, test_insert_position_n_value_excess)
|
||||
{
|
||||
Compare_Text compare_text;
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(buffer.data(), buffer.size());
|
||||
|
||||
const size_t INSERT_SIZE = 4;
|
||||
const value_t INSERT_VALUE = STR('A');
|
||||
const size_t INSERT_SIZE = 4UL;
|
||||
const value_t INSERT_VALUE = STR('A');
|
||||
|
||||
size_t offset = 0;
|
||||
compare_text.assign(initial_text.begin(), initial_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.end() - INSERT_SIZE, compare_text.end());
|
||||
text.insert(text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
size_t offset = 0UL;
|
||||
compare_text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.insert(compare_text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.cend() - INSERT_SIZE, compare_text.cend());
|
||||
text.insert(text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1540,12 +1537,12 @@ namespace
|
||||
CHECK(is_equal);
|
||||
|
||||
offset = 2;
|
||||
compare_text.assign(initial_text.begin(), initial_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.end() - INSERT_SIZE, compare_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
text.insert(text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.insert(compare_text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.cend() - INSERT_SIZE, compare_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.insert(text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1555,12 +1552,12 @@ namespace
|
||||
CHECK(is_equal);
|
||||
|
||||
offset = 4;
|
||||
compare_text.assign(initial_text.begin(), initial_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.end() - INSERT_SIZE, compare_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
text.insert(text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.insert(compare_text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.cend() - INSERT_SIZE, compare_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.insert(text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1570,12 +1567,12 @@ namespace
|
||||
CHECK(is_equal);
|
||||
|
||||
offset = text.size();
|
||||
compare_text.assign(initial_text.begin(), initial_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.end() - INSERT_SIZE, compare_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
text.insert(text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.insert(compare_text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.cend() - INSERT_SIZE, compare_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.insert(text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1588,19 +1585,18 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_insert_position_range)
|
||||
{
|
||||
const size_t INITIAL_SIZE = 5;
|
||||
const size_t INITIAL_SIZE = 5UL;
|
||||
|
||||
for (size_t offset = 0; offset <= INITIAL_SIZE; ++offset)
|
||||
for (size_t offset = 0UL; offset <= INITIAL_SIZE; ++offset)
|
||||
{
|
||||
Compare_Text compare_text;
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(buffer.data(), buffer.size());
|
||||
|
||||
text.assign(initial_text.begin(), initial_text.begin() + INITIAL_SIZE);
|
||||
compare_text.assign(initial_text.begin(), initial_text.begin() + INITIAL_SIZE);
|
||||
text.insert(text.begin() + offset, insert_text.begin(), insert_text.end());
|
||||
compare_text.insert(compare_text.begin() + offset, insert_text.begin(), insert_text.end());
|
||||
text.assign(initial_text.cbegin(), initial_text.cbegin() + INITIAL_SIZE);
|
||||
compare_text.assign(initial_text.cbegin(), initial_text.cbegin() + INITIAL_SIZE);
|
||||
text.insert(text.cbegin() + offset, insert_text.cbegin(), insert_text.cend());
|
||||
compare_text.insert(compare_text.cbegin() + offset, insert_text.cbegin(), insert_text.cend());
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
@ -1614,21 +1610,20 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_insert_position_range_excess)
|
||||
{
|
||||
const size_t INITIAL_SIZE = 5;
|
||||
const value_t INITIAL_VALUE = STR('A');
|
||||
const size_t INITIAL_SIZE = 5UL;
|
||||
const value_t INITIAL_VALUE = STR('A');
|
||||
|
||||
Compare_Text compare_text;
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(buffer.data(), buffer.size());
|
||||
|
||||
size_t offset = 0;
|
||||
size_t offset = 0UL;
|
||||
|
||||
compare_text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
compare_text.insert(compare_text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.resize(initial_text.size());
|
||||
text.insert(text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
text.insert(text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1641,9 +1636,9 @@ namespace
|
||||
|
||||
compare_text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
compare_text.insert(compare_text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.resize(initial_text.size());
|
||||
text.insert(text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
text.insert(text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1652,13 +1647,14 @@ namespace
|
||||
is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
|
||||
|
||||
offset = 4;
|
||||
|
||||
compare_text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
compare_text.insert(compare_text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.resize(initial_text.size());
|
||||
text.insert(text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
text.insert(text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1674,15 +1670,15 @@ namespace
|
||||
{
|
||||
size_t length = SIZE_L / 2;
|
||||
|
||||
for (size_t offset = 10; offset < length; ++offset)
|
||||
for (size_t offset = 10UL; offset < length; ++offset)
|
||||
{
|
||||
Compare_Text compare_text = STR("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
|
||||
TextBufferL bufferl;
|
||||
Text text(bufferl.data(), bufferl.size());
|
||||
text = STR("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
|
||||
|
||||
text.insert(text.begin() + offset, text.begin() + 5, text.begin() + 10);
|
||||
compare_text.insert(compare_text.begin() + offset, compare_text.begin() + 5, compare_text.begin() + 10);
|
||||
text.insert(text.cbegin() + offset, text.cbegin() + 5, text.cbegin() + 10);
|
||||
compare_text.insert(compare_text.cbegin() + offset, compare_text.cbegin() + 5, compare_text.cbegin() + 10);
|
||||
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
@ -1695,10 +1691,9 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_insert_size_t_position_string)
|
||||
{
|
||||
for (size_t offset = 0; offset <= short_text.size(); ++offset)
|
||||
for (size_t offset = 0UL; offset <= short_text.size(); ++offset)
|
||||
{
|
||||
Compare_Text compare_text(short_text.begin(), short_text.end());
|
||||
|
||||
Compare_Text compare_text(short_text.cbegin(), short_text.cend());
|
||||
TextBuffer buffer;
|
||||
Text text(short_text.begin(), short_text.end(), buffer.data(), buffer.size());
|
||||
|
||||
@ -1720,10 +1715,10 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_insert_size_t_position_string_excess)
|
||||
{
|
||||
for (size_t offset = 0; offset <= initial_text.size(); ++offset)
|
||||
for (size_t offset = 0UL; offset <= initial_text.size(); ++offset)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.begin(), initial_text.end());
|
||||
|
||||
Compare_Text compare_text(initial_text.cbegin(), initial_text.cend());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.begin(), initial_text.end(), buffer.data(), buffer.size());
|
||||
|
||||
@ -1745,18 +1740,18 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_insert_size_t_position_string_from_truncated)
|
||||
{
|
||||
for (size_t offset = 0; offset <= short_text.size(); ++offset)
|
||||
for (size_t offset = 0UL; offset <= short_text.size(); ++offset)
|
||||
{
|
||||
Compare_Text compare_text(short_text.begin(), short_text.end());
|
||||
|
||||
Compare_Text compare_text(short_text.cbegin(), short_text.cend());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(short_text.begin(), short_text.end(), buffer.data(), buffer.size());
|
||||
|
||||
TextBuffer buffer2;
|
||||
Text insert(longer_text.begin(), longer_text.end(), buffer2.data(), buffer2.size());
|
||||
|
||||
insert.erase(insert.begin(), insert.end());
|
||||
insert.append(insert_text.begin(), insert_text.end());
|
||||
|
||||
insert.erase(insert.cbegin(), insert.cend());
|
||||
insert.append(insert_text.cbegin(), insert_text.cend());
|
||||
|
||||
text.insert(offset, insert);
|
||||
compare_text.insert(offset, insert_text);
|
||||
@ -1773,8 +1768,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_insert_size_t_position_string_subpos_sunlen)
|
||||
{
|
||||
Compare_Text compare_text(short_text.begin(), short_text.end());
|
||||
|
||||
Compare_Text compare_text(short_text.cbegin(), short_text.cend());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(short_text.begin(), short_text.end(), buffer.data(), buffer.size());
|
||||
|
||||
@ -1791,8 +1786,8 @@ namespace
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
|
||||
compare_text.assign(short_text.begin(), short_text.end());
|
||||
text.assign(short_text.begin(), short_text.end());
|
||||
compare_text.assign(short_text.cbegin(), short_text.cend());
|
||||
text.assign(short_text.cbegin(), short_text.cend());
|
||||
|
||||
text.insert(2, insert, 2, insert.size() - 2);
|
||||
compare_text.insert(2, insert_text, 2, insert_text.size() - 2);
|
||||
@ -1806,8 +1801,8 @@ namespace
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
|
||||
compare_text.assign(short_text.begin(), short_text.end());
|
||||
text.assign(short_text.begin(), short_text.end());
|
||||
compare_text.assign(short_text.cbegin(), short_text.cend());
|
||||
text.assign(short_text.cbegin(), short_text.cend());
|
||||
|
||||
text.insert(short_text.size(), insert, 0, insert.size());
|
||||
compare_text.insert(short_text.size(), insert_text, 0, insert_text.size());
|
||||
|
||||
@ -2704,13 +2704,31 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single)
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_iterator)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
Text text(initial_text.c_str());
|
||||
|
||||
compare_text.erase(compare_text.begin() + 2);
|
||||
text.erase(text.begin() + 2);
|
||||
Compare_Text::iterator citr = compare_text.erase(compare_text.begin() + 2);
|
||||
Text::iterator ditr = text.erase(text.begin() + 2);
|
||||
CHECK(*citr == *ditr);
|
||||
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_const_iterator)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
Text text(initial_text.c_str());
|
||||
|
||||
Compare_Text::iterator citr = compare_text.erase(compare_text.cbegin() + 2);
|
||||
Text::iterator ditr = text.erase(text.cbegin() + 2);
|
||||
CHECK(*citr == *ditr);
|
||||
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
@ -2725,9 +2743,9 @@ namespace
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
Text text(initial_text.c_str());
|
||||
|
||||
compare_text.erase(compare_text.begin() + 2, compare_text.begin() + 4);
|
||||
|
||||
text.erase(text.begin() + 2, text.begin() + 4);
|
||||
Compare_Text::iterator citr = compare_text.erase(compare_text.cbegin() + 2, compare_text.cbegin() + 4);
|
||||
Text::iterator ditr = text.erase(text.cbegin() + 2, text.cbegin() + 4);
|
||||
CHECK(*citr == *ditr);
|
||||
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
|
||||
@ -1443,16 +1443,15 @@ namespace
|
||||
TEST_FIXTURE(SetupFixture, test_insert_position_value_excess)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.begin(), initial_text.end());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.begin(), initial_text.end(), buffer.data(), buffer.size());
|
||||
|
||||
const value_t INITIAL_VALUE = STR('A');
|
||||
|
||||
size_t offset = 2;
|
||||
text.insert(text.begin() + offset, INITIAL_VALUE);
|
||||
compare_text.insert(compare_text.begin() + offset, INITIAL_VALUE);
|
||||
compare_text.erase(compare_text.end() - 1);
|
||||
size_t offset = 2UL;
|
||||
text.insert(text.cbegin() + offset, INITIAL_VALUE);
|
||||
compare_text.insert(compare_text.cbegin() + offset, INITIAL_VALUE);
|
||||
compare_text.erase(compare_text.cend() - 1);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1462,9 +1461,9 @@ namespace
|
||||
CHECK(is_equal);
|
||||
|
||||
offset = 0;
|
||||
text.insert(text.begin() + offset, STR('A'));
|
||||
compare_text.insert(compare_text.begin() + offset, STR('A'));
|
||||
compare_text.erase(compare_text.end() - 1);
|
||||
text.insert(text.cbegin() + offset, STR('A'));
|
||||
compare_text.insert(compare_text.cbegin() + offset, STR('A'));
|
||||
compare_text.erase(compare_text.cend() - 1);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1474,9 +1473,9 @@ namespace
|
||||
CHECK(is_equal);
|
||||
|
||||
offset = text.size();
|
||||
text.insert(text.begin() + offset, STR('A'));
|
||||
compare_text.insert(compare_text.begin() + offset, STR('A'));
|
||||
compare_text.erase(compare_text.end() - 1);
|
||||
text.insert(text.cbegin() + offset, STR('A'));
|
||||
compare_text.insert(compare_text.cbegin() + offset, STR('A'));
|
||||
compare_text.erase(compare_text.cend() - 1);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1490,15 +1489,14 @@ namespace
|
||||
TEST_FIXTURE(SetupFixture, test_insert_position_n_value)
|
||||
{
|
||||
Compare_Text compare_text;
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(buffer.data(), buffer.size());
|
||||
|
||||
const size_t INITIAL_SIZE = 5;
|
||||
const size_t INSERT_SIZE = 3;
|
||||
const size_t INITIAL_SIZE = 5UL;
|
||||
const size_t INSERT_SIZE = 3UL;
|
||||
const value_t INITIAL_VALUE = STR('A');
|
||||
|
||||
for (size_t offset = 0; offset <= INITIAL_SIZE; ++offset)
|
||||
for (size_t offset = 0UL; offset <= INITIAL_SIZE; ++offset)
|
||||
{
|
||||
text.assign(initial_text.begin(), initial_text.begin() + INITIAL_SIZE);
|
||||
compare_text.assign(initial_text.begin(), initial_text.begin() + INITIAL_SIZE);
|
||||
@ -1518,19 +1516,18 @@ namespace
|
||||
TEST_FIXTURE(SetupFixture, test_insert_position_n_value_excess)
|
||||
{
|
||||
Compare_Text compare_text;
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(buffer.data(), buffer.size());
|
||||
|
||||
const size_t INSERT_SIZE = 4;
|
||||
const size_t INSERT_SIZE = 4UL;
|
||||
const value_t INSERT_VALUE = STR('A');
|
||||
|
||||
size_t offset = 0;
|
||||
compare_text.assign(initial_text.begin(), initial_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.end() - INSERT_SIZE, compare_text.end());
|
||||
text.insert(text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
size_t offset = 0UL;
|
||||
compare_text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.insert(compare_text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.cend() - INSERT_SIZE, compare_text.cend());
|
||||
text.insert(text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1540,12 +1537,12 @@ namespace
|
||||
CHECK(is_equal);
|
||||
|
||||
offset = 2;
|
||||
compare_text.assign(initial_text.begin(), initial_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.end() - INSERT_SIZE, compare_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
text.insert(text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.insert(compare_text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.cend() - INSERT_SIZE, compare_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.insert(text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1555,12 +1552,12 @@ namespace
|
||||
CHECK(is_equal);
|
||||
|
||||
offset = 4;
|
||||
compare_text.assign(initial_text.begin(), initial_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.end() - INSERT_SIZE, compare_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
text.insert(text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.insert(compare_text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.cend() - INSERT_SIZE, compare_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.insert(text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1570,12 +1567,12 @@ namespace
|
||||
CHECK(is_equal);
|
||||
|
||||
offset = text.size();
|
||||
compare_text.assign(initial_text.begin(), initial_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.end() - INSERT_SIZE, compare_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
text.insert(text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.insert(compare_text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.cend() - INSERT_SIZE, compare_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.insert(text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1588,19 +1585,18 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_insert_position_range)
|
||||
{
|
||||
const size_t INITIAL_SIZE = 5;
|
||||
const size_t INITIAL_SIZE = 5UL;
|
||||
|
||||
for (size_t offset = 0; offset <= INITIAL_SIZE; ++offset)
|
||||
for (size_t offset = 0UL; offset <= INITIAL_SIZE; ++offset)
|
||||
{
|
||||
Compare_Text compare_text;
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(buffer.data(), buffer.size());
|
||||
|
||||
text.assign(initial_text.begin(), initial_text.begin() + INITIAL_SIZE);
|
||||
compare_text.assign(initial_text.begin(), initial_text.begin() + INITIAL_SIZE);
|
||||
text.insert(text.begin() + offset, insert_text.begin(), insert_text.end());
|
||||
compare_text.insert(compare_text.begin() + offset, insert_text.begin(), insert_text.end());
|
||||
text.assign(initial_text.cbegin(), initial_text.cbegin() + INITIAL_SIZE);
|
||||
compare_text.assign(initial_text.cbegin(), initial_text.cbegin() + INITIAL_SIZE);
|
||||
text.insert(text.cbegin() + offset, insert_text.cbegin(), insert_text.cend());
|
||||
compare_text.insert(compare_text.cbegin() + offset, insert_text.cbegin(), insert_text.cend());
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
@ -1614,21 +1610,20 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_insert_position_range_excess)
|
||||
{
|
||||
const size_t INITIAL_SIZE = 5;
|
||||
const size_t INITIAL_SIZE = 5UL;
|
||||
const value_t INITIAL_VALUE = STR('A');
|
||||
|
||||
Compare_Text compare_text;
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(buffer.data(), buffer.size());
|
||||
|
||||
size_t offset = 0;
|
||||
size_t offset = 0UL;
|
||||
|
||||
compare_text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
compare_text.insert(compare_text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.resize(initial_text.size());
|
||||
text.insert(text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
text.insert(text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1641,9 +1636,9 @@ namespace
|
||||
|
||||
compare_text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
compare_text.insert(compare_text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.resize(initial_text.size());
|
||||
text.insert(text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
text.insert(text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1652,13 +1647,14 @@ namespace
|
||||
is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
|
||||
|
||||
offset = 4;
|
||||
|
||||
compare_text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
compare_text.insert(compare_text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.resize(initial_text.size());
|
||||
text.insert(text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
text.insert(text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1674,15 +1670,15 @@ namespace
|
||||
{
|
||||
size_t length = SIZE_L / 2;
|
||||
|
||||
for (size_t offset = 10; offset < length; ++offset)
|
||||
for (size_t offset = 10UL; offset < length; ++offset)
|
||||
{
|
||||
Compare_Text compare_text = STR("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
|
||||
TextBufferL bufferl;
|
||||
Text text(bufferl.data(), bufferl.size());
|
||||
text = STR("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
|
||||
|
||||
text.insert(text.begin() + offset, text.begin() + 5, text.begin() + 10);
|
||||
compare_text.insert(compare_text.begin() + offset, compare_text.begin() + 5, compare_text.begin() + 10);
|
||||
text.insert(text.cbegin() + offset, text.cbegin() + 5, text.cbegin() + 10);
|
||||
compare_text.insert(compare_text.cbegin() + offset, compare_text.cbegin() + 5, compare_text.cbegin() + 10);
|
||||
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
@ -1695,10 +1691,9 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_insert_size_t_position_string)
|
||||
{
|
||||
for (size_t offset = 0; offset <= short_text.size(); ++offset)
|
||||
for (size_t offset = 0UL; offset <= short_text.size(); ++offset)
|
||||
{
|
||||
Compare_Text compare_text(short_text.begin(), short_text.end());
|
||||
|
||||
Compare_Text compare_text(short_text.cbegin(), short_text.cend());
|
||||
TextBuffer buffer;
|
||||
Text text(short_text.begin(), short_text.end(), buffer.data(), buffer.size());
|
||||
|
||||
@ -1720,9 +1715,9 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_insert_size_t_position_string_excess)
|
||||
{
|
||||
for (size_t offset = 0; offset <= initial_text.size(); ++offset)
|
||||
for (size_t offset = 0UL; offset <= initial_text.size(); ++offset)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.begin(), initial_text.end());
|
||||
Compare_Text compare_text(initial_text.cbegin(), initial_text.cend());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.begin(), initial_text.end(), buffer.data(), buffer.size());
|
||||
@ -1745,9 +1740,9 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_insert_size_t_position_string_from_truncated)
|
||||
{
|
||||
for (size_t offset = 0; offset <= short_text.size(); ++offset)
|
||||
for (size_t offset = 0UL; offset <= short_text.size(); ++offset)
|
||||
{
|
||||
Compare_Text compare_text(short_text.begin(), short_text.end());
|
||||
Compare_Text compare_text(short_text.cbegin(), short_text.cend());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(short_text.begin(), short_text.end(), buffer.data(), buffer.size());
|
||||
@ -1755,8 +1750,8 @@ namespace
|
||||
TextBuffer buffer2;
|
||||
Text insert(longer_text.begin(), longer_text.end(), buffer2.data(), buffer2.size());
|
||||
|
||||
insert.erase(insert.begin(), insert.end());
|
||||
insert.append(insert_text.begin(), insert_text.end());
|
||||
insert.erase(insert.cbegin(), insert.cend());
|
||||
insert.append(insert_text.cbegin(), insert_text.cend());
|
||||
|
||||
text.insert(offset, insert);
|
||||
compare_text.insert(offset, insert_text);
|
||||
@ -1773,7 +1768,7 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_insert_size_t_position_string_subpos_sunlen)
|
||||
{
|
||||
Compare_Text compare_text(short_text.begin(), short_text.end());
|
||||
Compare_Text compare_text(short_text.cbegin(), short_text.cend());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(short_text.begin(), short_text.end(), buffer.data(), buffer.size());
|
||||
@ -1791,8 +1786,8 @@ namespace
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
|
||||
compare_text.assign(short_text.begin(), short_text.end());
|
||||
text.assign(short_text.begin(), short_text.end());
|
||||
compare_text.assign(short_text.cbegin(), short_text.cend());
|
||||
text.assign(short_text.cbegin(), short_text.cend());
|
||||
|
||||
text.insert(2, insert, 2, insert.size() - 2);
|
||||
compare_text.insert(2, insert_text, 2, insert_text.size() - 2);
|
||||
@ -1806,8 +1801,8 @@ namespace
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
|
||||
compare_text.assign(short_text.begin(), short_text.end());
|
||||
text.assign(short_text.begin(), short_text.end());
|
||||
compare_text.assign(short_text.cbegin(), short_text.cend());
|
||||
text.assign(short_text.cbegin(), short_text.cend());
|
||||
|
||||
text.insert(short_text.size(), insert, 0, insert.size());
|
||||
compare_text.insert(short_text.size(), insert_text, 0, insert_text.size());
|
||||
@ -2973,15 +2968,33 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single)
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_iterator)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.c_str(), buffer.data(), buffer.size());
|
||||
|
||||
compare_text.erase(compare_text.begin() + 2);
|
||||
text.erase(text.begin() + 2);
|
||||
Compare_Text::iterator citr = compare_text.erase(compare_text.begin() + 2);
|
||||
Text::iterator ditr = text.erase(text.begin() + 2);
|
||||
CHECK(*citr == *ditr);
|
||||
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_const_iterator)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.c_str(), buffer.data(), buffer.size());
|
||||
|
||||
Compare_Text::iterator citr = compare_text.erase(compare_text.cbegin() + 2);
|
||||
Text::iterator ditr = text.erase(text.cbegin() + 2);
|
||||
CHECK(*citr == *ditr);
|
||||
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
@ -2994,13 +3007,12 @@ namespace
|
||||
TEST_FIXTURE(SetupFixture, test_erase_range)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.c_str(), buffer.data(), buffer.size());
|
||||
|
||||
compare_text.erase(compare_text.begin() + 2, compare_text.begin() + 4);
|
||||
|
||||
text.erase(text.begin() + 2, text.begin() + 4);
|
||||
Compare_Text::iterator citr = compare_text.erase(compare_text.cbegin() + 2, compare_text.cbegin() + 4);
|
||||
Text::iterator ditr = text.erase(text.cbegin() + 2, text.cbegin() + 4);
|
||||
CHECK(*citr == *ditr);
|
||||
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
|
||||
@ -2704,13 +2704,31 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single)
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_iterator)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
Text text(initial_text.c_str());
|
||||
|
||||
compare_text.erase(compare_text.begin() + 2);
|
||||
text.erase(text.begin() + 2);
|
||||
Compare_Text::iterator citr = compare_text.erase(compare_text.begin() + 2);
|
||||
Text::iterator ditr = text.erase(text.begin() + 2);
|
||||
CHECK(*citr == *ditr);
|
||||
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_const_iterator)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
Text text(initial_text.c_str());
|
||||
|
||||
Compare_Text::iterator citr = compare_text.erase(compare_text.cbegin() + 2);
|
||||
Text::iterator ditr = text.erase(text.cbegin() + 2);
|
||||
CHECK(*citr == *ditr);
|
||||
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
@ -2725,9 +2743,9 @@ namespace
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
Text text(initial_text.c_str());
|
||||
|
||||
compare_text.erase(compare_text.begin() + 2, compare_text.begin() + 4);
|
||||
|
||||
text.erase(text.begin() + 2, text.begin() + 4);
|
||||
Compare_Text::iterator citr = compare_text.erase(compare_text.cbegin() + 2, compare_text.cbegin() + 4);
|
||||
Text::iterator ditr = text.erase(text.cbegin() + 2, text.cbegin() + 4);
|
||||
CHECK(*citr == *ditr);
|
||||
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
|
||||
@ -1443,16 +1443,15 @@ namespace
|
||||
TEST_FIXTURE(SetupFixture, test_insert_position_value_excess)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.begin(), initial_text.end());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.begin(), initial_text.end(), buffer.data(), buffer.size());
|
||||
|
||||
const value_t INITIAL_VALUE = STR('A');
|
||||
|
||||
size_t offset = 2;
|
||||
text.insert(text.begin() + offset, INITIAL_VALUE);
|
||||
compare_text.insert(compare_text.begin() + offset, INITIAL_VALUE);
|
||||
compare_text.erase(compare_text.end() - 1);
|
||||
size_t offset = 2UL;
|
||||
text.insert(text.cbegin() + offset, INITIAL_VALUE);
|
||||
compare_text.insert(compare_text.cbegin() + offset, INITIAL_VALUE);
|
||||
compare_text.erase(compare_text.cend() - 1);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1462,9 +1461,9 @@ namespace
|
||||
CHECK(is_equal);
|
||||
|
||||
offset = 0;
|
||||
text.insert(text.begin() + offset, STR('A'));
|
||||
compare_text.insert(compare_text.begin() + offset, STR('A'));
|
||||
compare_text.erase(compare_text.end() - 1);
|
||||
text.insert(text.cbegin() + offset, STR('A'));
|
||||
compare_text.insert(compare_text.cbegin() + offset, STR('A'));
|
||||
compare_text.erase(compare_text.cend() - 1);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1474,9 +1473,9 @@ namespace
|
||||
CHECK(is_equal);
|
||||
|
||||
offset = text.size();
|
||||
text.insert(text.begin() + offset, STR('A'));
|
||||
compare_text.insert(compare_text.begin() + offset, STR('A'));
|
||||
compare_text.erase(compare_text.end() - 1);
|
||||
text.insert(text.cbegin() + offset, STR('A'));
|
||||
compare_text.insert(compare_text.cbegin() + offset, STR('A'));
|
||||
compare_text.erase(compare_text.cend() - 1);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1490,15 +1489,14 @@ namespace
|
||||
TEST_FIXTURE(SetupFixture, test_insert_position_n_value)
|
||||
{
|
||||
Compare_Text compare_text;
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(buffer.data(), buffer.size());
|
||||
|
||||
const size_t INITIAL_SIZE = 5;
|
||||
const size_t INSERT_SIZE = 3;
|
||||
const size_t INITIAL_SIZE = 5UL;
|
||||
const size_t INSERT_SIZE = 3UL;
|
||||
const value_t INITIAL_VALUE = STR('A');
|
||||
|
||||
for (size_t offset = 0; offset <= INITIAL_SIZE; ++offset)
|
||||
for (size_t offset = 0UL; offset <= INITIAL_SIZE; ++offset)
|
||||
{
|
||||
text.assign(initial_text.begin(), initial_text.begin() + INITIAL_SIZE);
|
||||
compare_text.assign(initial_text.begin(), initial_text.begin() + INITIAL_SIZE);
|
||||
@ -1518,19 +1516,18 @@ namespace
|
||||
TEST_FIXTURE(SetupFixture, test_insert_position_n_value_excess)
|
||||
{
|
||||
Compare_Text compare_text;
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(buffer.data(), buffer.size());
|
||||
|
||||
const size_t INSERT_SIZE = 4;
|
||||
const size_t INSERT_SIZE = 4UL;
|
||||
const value_t INSERT_VALUE = STR('A');
|
||||
|
||||
size_t offset = 0;
|
||||
compare_text.assign(initial_text.begin(), initial_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.end() - INSERT_SIZE, compare_text.end());
|
||||
text.insert(text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
size_t offset = 0UL;
|
||||
compare_text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.insert(compare_text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.cend() - INSERT_SIZE, compare_text.cend());
|
||||
text.insert(text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1540,12 +1537,12 @@ namespace
|
||||
CHECK(is_equal);
|
||||
|
||||
offset = 2;
|
||||
compare_text.assign(initial_text.begin(), initial_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.end() - INSERT_SIZE, compare_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
text.insert(text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.insert(compare_text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.cend() - INSERT_SIZE, compare_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.insert(text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1555,12 +1552,12 @@ namespace
|
||||
CHECK(is_equal);
|
||||
|
||||
offset = 4;
|
||||
compare_text.assign(initial_text.begin(), initial_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.end() - INSERT_SIZE, compare_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
text.insert(text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.insert(compare_text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.cend() - INSERT_SIZE, compare_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.insert(text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1570,12 +1567,12 @@ namespace
|
||||
CHECK(is_equal);
|
||||
|
||||
offset = text.size();
|
||||
compare_text.assign(initial_text.begin(), initial_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.end() - INSERT_SIZE, compare_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
text.insert(text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.insert(compare_text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.cend() - INSERT_SIZE, compare_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.insert(text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1588,19 +1585,18 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_insert_position_range)
|
||||
{
|
||||
const size_t INITIAL_SIZE = 5;
|
||||
const size_t INITIAL_SIZE = 5UL;
|
||||
|
||||
for (size_t offset = 0; offset <= INITIAL_SIZE; ++offset)
|
||||
for (size_t offset = 0UL; offset <= INITIAL_SIZE; ++offset)
|
||||
{
|
||||
Compare_Text compare_text;
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(buffer.data(), buffer.size());
|
||||
|
||||
text.assign(initial_text.begin(), initial_text.begin() + INITIAL_SIZE);
|
||||
compare_text.assign(initial_text.begin(), initial_text.begin() + INITIAL_SIZE);
|
||||
text.insert(text.begin() + offset, insert_text.begin(), insert_text.end());
|
||||
compare_text.insert(compare_text.begin() + offset, insert_text.begin(), insert_text.end());
|
||||
text.assign(initial_text.cbegin(), initial_text.cbegin() + INITIAL_SIZE);
|
||||
compare_text.assign(initial_text.cbegin(), initial_text.cbegin() + INITIAL_SIZE);
|
||||
text.insert(text.cbegin() + offset, insert_text.cbegin(), insert_text.cend());
|
||||
compare_text.insert(compare_text.cbegin() + offset, insert_text.cbegin(), insert_text.cend());
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
@ -1614,21 +1610,20 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_insert_position_range_excess)
|
||||
{
|
||||
const size_t INITIAL_SIZE = 5;
|
||||
const size_t INITIAL_SIZE = 5UL;
|
||||
const value_t INITIAL_VALUE = STR('A');
|
||||
|
||||
Compare_Text compare_text;
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(buffer.data(), buffer.size());
|
||||
|
||||
size_t offset = 0;
|
||||
size_t offset = 0UL;
|
||||
|
||||
compare_text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
compare_text.insert(compare_text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.resize(initial_text.size());
|
||||
text.insert(text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
text.insert(text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1641,9 +1636,9 @@ namespace
|
||||
|
||||
compare_text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
compare_text.insert(compare_text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.resize(initial_text.size());
|
||||
text.insert(text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
text.insert(text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1652,13 +1647,14 @@ namespace
|
||||
is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
|
||||
|
||||
offset = 4;
|
||||
|
||||
compare_text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
compare_text.insert(compare_text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.resize(initial_text.size());
|
||||
text.insert(text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
text.insert(text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1674,15 +1670,15 @@ namespace
|
||||
{
|
||||
size_t length = SIZE_L / 2;
|
||||
|
||||
for (size_t offset = 10; offset < length; ++offset)
|
||||
for (size_t offset = 10UL; offset < length; ++offset)
|
||||
{
|
||||
Compare_Text compare_text = STR("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
|
||||
TextBufferL bufferl;
|
||||
Text text(bufferl.data(), bufferl.size());
|
||||
text = STR("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
|
||||
|
||||
text.insert(text.begin() + offset, text.begin() + 5, text.begin() + 10);
|
||||
compare_text.insert(compare_text.begin() + offset, compare_text.begin() + 5, compare_text.begin() + 10);
|
||||
text.insert(text.cbegin() + offset, text.cbegin() + 5, text.cbegin() + 10);
|
||||
compare_text.insert(compare_text.cbegin() + offset, compare_text.cbegin() + 5, compare_text.cbegin() + 10);
|
||||
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
@ -1695,10 +1691,9 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_insert_size_t_position_string)
|
||||
{
|
||||
for (size_t offset = 0; offset <= short_text.size(); ++offset)
|
||||
for (size_t offset = 0UL; offset <= short_text.size(); ++offset)
|
||||
{
|
||||
Compare_Text compare_text(short_text.begin(), short_text.end());
|
||||
|
||||
Compare_Text compare_text(short_text.cbegin(), short_text.cend());
|
||||
TextBuffer buffer;
|
||||
Text text(short_text.begin(), short_text.end(), buffer.data(), buffer.size());
|
||||
|
||||
@ -1720,9 +1715,9 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_insert_size_t_position_string_excess)
|
||||
{
|
||||
for (size_t offset = 0; offset <= initial_text.size(); ++offset)
|
||||
for (size_t offset = 0UL; offset <= initial_text.size(); ++offset)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.begin(), initial_text.end());
|
||||
Compare_Text compare_text(initial_text.cbegin(), initial_text.cend());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.begin(), initial_text.end(), buffer.data(), buffer.size());
|
||||
@ -1745,9 +1740,9 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_insert_size_t_position_string_from_truncated)
|
||||
{
|
||||
for (size_t offset = 0; offset <= short_text.size(); ++offset)
|
||||
for (size_t offset = 0UL; offset <= short_text.size(); ++offset)
|
||||
{
|
||||
Compare_Text compare_text(short_text.begin(), short_text.end());
|
||||
Compare_Text compare_text(short_text.cbegin(), short_text.cend());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(short_text.begin(), short_text.end(), buffer.data(), buffer.size());
|
||||
@ -1755,8 +1750,8 @@ namespace
|
||||
TextBuffer buffer2;
|
||||
Text insert(longer_text.begin(), longer_text.end(), buffer2.data(), buffer2.size());
|
||||
|
||||
insert.erase(insert.begin(), insert.end());
|
||||
insert.append(insert_text.begin(), insert_text.end());
|
||||
insert.erase(insert.cbegin(), insert.cend());
|
||||
insert.append(insert_text.cbegin(), insert_text.cend());
|
||||
|
||||
text.insert(offset, insert);
|
||||
compare_text.insert(offset, insert_text);
|
||||
@ -1773,7 +1768,7 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_insert_size_t_position_string_subpos_sunlen)
|
||||
{
|
||||
Compare_Text compare_text(short_text.begin(), short_text.end());
|
||||
Compare_Text compare_text(short_text.cbegin(), short_text.cend());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(short_text.begin(), short_text.end(), buffer.data(), buffer.size());
|
||||
@ -1791,8 +1786,8 @@ namespace
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
|
||||
compare_text.assign(short_text.begin(), short_text.end());
|
||||
text.assign(short_text.begin(), short_text.end());
|
||||
compare_text.assign(short_text.cbegin(), short_text.cend());
|
||||
text.assign(short_text.cbegin(), short_text.cend());
|
||||
|
||||
text.insert(2, insert, 2, insert.size() - 2);
|
||||
compare_text.insert(2, insert_text, 2, insert_text.size() - 2);
|
||||
@ -1806,8 +1801,8 @@ namespace
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
|
||||
compare_text.assign(short_text.begin(), short_text.end());
|
||||
text.assign(short_text.begin(), short_text.end());
|
||||
compare_text.assign(short_text.cbegin(), short_text.cend());
|
||||
text.assign(short_text.cbegin(), short_text.cend());
|
||||
|
||||
text.insert(short_text.size(), insert, 0, insert.size());
|
||||
compare_text.insert(short_text.size(), insert_text, 0, insert_text.size());
|
||||
@ -2973,15 +2968,33 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single)
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_iterator)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.c_str(), buffer.data(), buffer.size());
|
||||
|
||||
compare_text.erase(compare_text.begin() + 2);
|
||||
text.erase(text.begin() + 2);
|
||||
Compare_Text::iterator citr = compare_text.erase(compare_text.begin() + 2);
|
||||
Text::iterator ditr = text.erase(text.begin() + 2);
|
||||
CHECK(*citr == *ditr);
|
||||
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_const_iterator)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.c_str(), buffer.data(), buffer.size());
|
||||
|
||||
Compare_Text::iterator citr = compare_text.erase(compare_text.cbegin() + 2);
|
||||
Text::iterator ditr = text.erase(text.cbegin() + 2);
|
||||
CHECK(*citr == *ditr);
|
||||
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
@ -2994,13 +3007,12 @@ namespace
|
||||
TEST_FIXTURE(SetupFixture, test_erase_range)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.c_str(), buffer.data(), buffer.size());
|
||||
|
||||
compare_text.erase(compare_text.begin() + 2, compare_text.begin() + 4);
|
||||
|
||||
text.erase(text.begin() + 2, text.begin() + 4);
|
||||
Compare_Text::iterator citr = compare_text.erase(compare_text.cbegin() + 2, compare_text.cbegin() + 4);
|
||||
Text::iterator ditr = text.erase(text.cbegin() + 2, text.cbegin() + 4);
|
||||
CHECK(*citr == *ditr);
|
||||
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
|
||||
@ -169,6 +169,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
TEST(test_template_deduction)
|
||||
{
|
||||
etl::basic_string_view cview{ "Hello World" };
|
||||
@ -181,6 +182,7 @@ namespace
|
||||
CHECK(std::equal(u16view.begin(), u16view.end(), text.begin()));
|
||||
CHECK(std::equal(u32view.begin(), u32view.end(), text.begin()));
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_assign_from_string_view)
|
||||
|
||||
@ -2704,13 +2704,31 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single)
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_iterator)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
Text text(initial_text.c_str());
|
||||
|
||||
compare_text.erase(compare_text.begin() + 2);
|
||||
text.erase(text.begin() + 2);
|
||||
Compare_Text::iterator citr = compare_text.erase(compare_text.begin() + 2);
|
||||
Text::iterator ditr = text.erase(text.begin() + 2);
|
||||
CHECK(*citr == *ditr);
|
||||
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_const_iterator)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
Text text(initial_text.c_str());
|
||||
|
||||
Compare_Text::iterator citr = compare_text.erase(compare_text.cbegin() + 2);
|
||||
Text::iterator ditr = text.erase(text.cbegin() + 2);
|
||||
CHECK(*citr == *ditr);
|
||||
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
@ -2725,9 +2743,9 @@ namespace
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
Text text(initial_text.c_str());
|
||||
|
||||
compare_text.erase(compare_text.begin() + 2, compare_text.begin() + 4);
|
||||
|
||||
text.erase(text.begin() + 2, text.begin() + 4);
|
||||
Compare_Text::iterator citr = compare_text.erase(compare_text.cbegin() + 2, compare_text.cbegin() + 4);
|
||||
Text::iterator ditr = text.erase(text.cbegin() + 2, text.cbegin() + 4);
|
||||
CHECK(*citr == *ditr);
|
||||
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
|
||||
@ -1443,16 +1443,15 @@ namespace
|
||||
TEST_FIXTURE(SetupFixture, test_insert_position_value_excess)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.begin(), initial_text.end());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.begin(), initial_text.end(), buffer.data(), buffer.size());
|
||||
|
||||
const value_t INITIAL_VALUE = STR('A');
|
||||
|
||||
size_t offset = 2;
|
||||
text.insert(text.begin() + offset, INITIAL_VALUE);
|
||||
compare_text.insert(compare_text.begin() + offset, INITIAL_VALUE);
|
||||
compare_text.erase(compare_text.end() - 1);
|
||||
size_t offset = 2UL;
|
||||
text.insert(text.cbegin() + offset, INITIAL_VALUE);
|
||||
compare_text.insert(compare_text.cbegin() + offset, INITIAL_VALUE);
|
||||
compare_text.erase(compare_text.cend() - 1);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1462,9 +1461,9 @@ namespace
|
||||
CHECK(is_equal);
|
||||
|
||||
offset = 0;
|
||||
text.insert(text.begin() + offset, STR('A'));
|
||||
compare_text.insert(compare_text.begin() + offset, STR('A'));
|
||||
compare_text.erase(compare_text.end() - 1);
|
||||
text.insert(text.cbegin() + offset, STR('A'));
|
||||
compare_text.insert(compare_text.cbegin() + offset, STR('A'));
|
||||
compare_text.erase(compare_text.cend() - 1);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1474,9 +1473,9 @@ namespace
|
||||
CHECK(is_equal);
|
||||
|
||||
offset = text.size();
|
||||
text.insert(text.begin() + offset, STR('A'));
|
||||
compare_text.insert(compare_text.begin() + offset, STR('A'));
|
||||
compare_text.erase(compare_text.end() - 1);
|
||||
text.insert(text.cbegin() + offset, STR('A'));
|
||||
compare_text.insert(compare_text.cbegin() + offset, STR('A'));
|
||||
compare_text.erase(compare_text.cend() - 1);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1490,15 +1489,14 @@ namespace
|
||||
TEST_FIXTURE(SetupFixture, test_insert_position_n_value)
|
||||
{
|
||||
Compare_Text compare_text;
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(buffer.data(), buffer.size());
|
||||
|
||||
const size_t INITIAL_SIZE = 5;
|
||||
const size_t INSERT_SIZE = 3;
|
||||
const size_t INITIAL_SIZE = 5UL;
|
||||
const size_t INSERT_SIZE = 3UL;
|
||||
const value_t INITIAL_VALUE = STR('A');
|
||||
|
||||
for (size_t offset = 0; offset <= INITIAL_SIZE; ++offset)
|
||||
for (size_t offset = 0UL; offset <= INITIAL_SIZE; ++offset)
|
||||
{
|
||||
text.assign(initial_text.begin(), initial_text.begin() + INITIAL_SIZE);
|
||||
compare_text.assign(initial_text.begin(), initial_text.begin() + INITIAL_SIZE);
|
||||
@ -1518,19 +1516,18 @@ namespace
|
||||
TEST_FIXTURE(SetupFixture, test_insert_position_n_value_excess)
|
||||
{
|
||||
Compare_Text compare_text;
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(buffer.data(), buffer.size());
|
||||
|
||||
const size_t INSERT_SIZE = 4;
|
||||
const size_t INSERT_SIZE = 4UL;
|
||||
const value_t INSERT_VALUE = STR('A');
|
||||
|
||||
size_t offset = 0;
|
||||
compare_text.assign(initial_text.begin(), initial_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.end() - INSERT_SIZE, compare_text.end());
|
||||
text.insert(text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
size_t offset = 0UL;
|
||||
compare_text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.insert(compare_text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.cend() - INSERT_SIZE, compare_text.cend());
|
||||
text.insert(text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1540,12 +1537,12 @@ namespace
|
||||
CHECK(is_equal);
|
||||
|
||||
offset = 2;
|
||||
compare_text.assign(initial_text.begin(), initial_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.end() - INSERT_SIZE, compare_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
text.insert(text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.insert(compare_text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.cend() - INSERT_SIZE, compare_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.insert(text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1555,12 +1552,12 @@ namespace
|
||||
CHECK(is_equal);
|
||||
|
||||
offset = 4;
|
||||
compare_text.assign(initial_text.begin(), initial_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.end() - INSERT_SIZE, compare_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
text.insert(text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.insert(compare_text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.cend() - INSERT_SIZE, compare_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.insert(text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1570,12 +1567,12 @@ namespace
|
||||
CHECK(is_equal);
|
||||
|
||||
offset = text.size();
|
||||
compare_text.assign(initial_text.begin(), initial_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.end() - INSERT_SIZE, compare_text.end());
|
||||
text.assign(initial_text.begin(), initial_text.end());
|
||||
text.insert(text.begin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.insert(compare_text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
compare_text.erase(compare_text.cend() - INSERT_SIZE, compare_text.cend());
|
||||
text.assign(initial_text.cbegin(), initial_text.cend());
|
||||
text.insert(text.cbegin() + offset, INSERT_SIZE, INSERT_VALUE);
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1588,19 +1585,18 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_insert_position_range)
|
||||
{
|
||||
const size_t INITIAL_SIZE = 5;
|
||||
const size_t INITIAL_SIZE = 5UL;
|
||||
|
||||
for (size_t offset = 0; offset <= INITIAL_SIZE; ++offset)
|
||||
for (size_t offset = 0UL; offset <= INITIAL_SIZE; ++offset)
|
||||
{
|
||||
Compare_Text compare_text;
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(buffer.data(), buffer.size());
|
||||
|
||||
text.assign(initial_text.begin(), initial_text.begin() + INITIAL_SIZE);
|
||||
compare_text.assign(initial_text.begin(), initial_text.begin() + INITIAL_SIZE);
|
||||
text.insert(text.begin() + offset, insert_text.begin(), insert_text.end());
|
||||
compare_text.insert(compare_text.begin() + offset, insert_text.begin(), insert_text.end());
|
||||
text.assign(initial_text.cbegin(), initial_text.cbegin() + INITIAL_SIZE);
|
||||
compare_text.assign(initial_text.cbegin(), initial_text.cbegin() + INITIAL_SIZE);
|
||||
text.insert(text.cbegin() + offset, insert_text.cbegin(), insert_text.cend());
|
||||
compare_text.insert(compare_text.cbegin() + offset, insert_text.cbegin(), insert_text.cend());
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
@ -1614,21 +1610,20 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_insert_position_range_excess)
|
||||
{
|
||||
const size_t INITIAL_SIZE = 5;
|
||||
const size_t INITIAL_SIZE = 5UL;
|
||||
const value_t INITIAL_VALUE = STR('A');
|
||||
|
||||
Compare_Text compare_text;
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(buffer.data(), buffer.size());
|
||||
|
||||
size_t offset = 0;
|
||||
size_t offset = 0UL;
|
||||
|
||||
compare_text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
compare_text.insert(compare_text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.resize(initial_text.size());
|
||||
text.insert(text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
text.insert(text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1641,9 +1636,9 @@ namespace
|
||||
|
||||
compare_text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
compare_text.insert(compare_text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.resize(initial_text.size());
|
||||
text.insert(text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
text.insert(text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1652,13 +1647,14 @@ namespace
|
||||
is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
|
||||
|
||||
offset = 4;
|
||||
|
||||
compare_text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
text.assign(INITIAL_SIZE, INITIAL_VALUE);
|
||||
compare_text.insert(compare_text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
compare_text.insert(compare_text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
compare_text.resize(initial_text.size());
|
||||
text.insert(text.begin() + offset, initial_text.begin(), initial_text.end());
|
||||
text.insert(text.cbegin() + offset, initial_text.cbegin(), initial_text.cend());
|
||||
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(text.is_truncated());
|
||||
@ -1674,15 +1670,15 @@ namespace
|
||||
{
|
||||
size_t length = SIZE_L / 2;
|
||||
|
||||
for (size_t offset = 10; offset < length; ++offset)
|
||||
for (size_t offset = 10UL; offset < length; ++offset)
|
||||
{
|
||||
Compare_Text compare_text = STR("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
|
||||
TextBufferL bufferl;
|
||||
Text text(bufferl.data(), bufferl.size());
|
||||
text = STR("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
|
||||
|
||||
text.insert(text.begin() + offset, text.begin() + 5, text.begin() + 10);
|
||||
compare_text.insert(compare_text.begin() + offset, compare_text.begin() + 5, compare_text.begin() + 10);
|
||||
text.insert(text.cbegin() + offset, text.cbegin() + 5, text.cbegin() + 10);
|
||||
compare_text.insert(compare_text.cbegin() + offset, compare_text.cbegin() + 5, compare_text.cbegin() + 10);
|
||||
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
@ -1695,10 +1691,9 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_insert_size_t_position_string)
|
||||
{
|
||||
for (size_t offset = 0; offset <= short_text.size(); ++offset)
|
||||
for (size_t offset = 0UL; offset <= short_text.size(); ++offset)
|
||||
{
|
||||
Compare_Text compare_text(short_text.begin(), short_text.end());
|
||||
|
||||
Compare_Text compare_text(short_text.cbegin(), short_text.cend());
|
||||
TextBuffer buffer;
|
||||
Text text(short_text.begin(), short_text.end(), buffer.data(), buffer.size());
|
||||
|
||||
@ -1720,9 +1715,9 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_insert_size_t_position_string_excess)
|
||||
{
|
||||
for (size_t offset = 0; offset <= initial_text.size(); ++offset)
|
||||
for (size_t offset = 0UL; offset <= initial_text.size(); ++offset)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.begin(), initial_text.end());
|
||||
Compare_Text compare_text(initial_text.cbegin(), initial_text.cend());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.begin(), initial_text.end(), buffer.data(), buffer.size());
|
||||
@ -1745,9 +1740,9 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_insert_size_t_position_string_from_truncated)
|
||||
{
|
||||
for (size_t offset = 0; offset <= short_text.size(); ++offset)
|
||||
for (size_t offset = 0UL; offset <= short_text.size(); ++offset)
|
||||
{
|
||||
Compare_Text compare_text(short_text.begin(), short_text.end());
|
||||
Compare_Text compare_text(short_text.cbegin(), short_text.cend());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(short_text.begin(), short_text.end(), buffer.data(), buffer.size());
|
||||
@ -1755,8 +1750,8 @@ namespace
|
||||
TextBuffer buffer2;
|
||||
Text insert(longer_text.begin(), longer_text.end(), buffer2.data(), buffer2.size());
|
||||
|
||||
insert.erase(insert.begin(), insert.end());
|
||||
insert.append(insert_text.begin(), insert_text.end());
|
||||
insert.erase(insert.cbegin(), insert.cend());
|
||||
insert.append(insert_text.cbegin(), insert_text.cend());
|
||||
|
||||
text.insert(offset, insert);
|
||||
compare_text.insert(offset, insert_text);
|
||||
@ -1773,7 +1768,7 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_insert_size_t_position_string_subpos_sunlen)
|
||||
{
|
||||
Compare_Text compare_text(short_text.begin(), short_text.end());
|
||||
Compare_Text compare_text(short_text.cbegin(), short_text.cend());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(short_text.begin(), short_text.end(), buffer.data(), buffer.size());
|
||||
@ -1791,8 +1786,8 @@ namespace
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
|
||||
compare_text.assign(short_text.begin(), short_text.end());
|
||||
text.assign(short_text.begin(), short_text.end());
|
||||
compare_text.assign(short_text.cbegin(), short_text.cend());
|
||||
text.assign(short_text.cbegin(), short_text.cend());
|
||||
|
||||
text.insert(2, insert, 2, insert.size() - 2);
|
||||
compare_text.insert(2, insert_text, 2, insert_text.size() - 2);
|
||||
@ -1806,8 +1801,8 @@ namespace
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
|
||||
compare_text.assign(short_text.begin(), short_text.end());
|
||||
text.assign(short_text.begin(), short_text.end());
|
||||
compare_text.assign(short_text.cbegin(), short_text.cend());
|
||||
text.assign(short_text.cbegin(), short_text.cend());
|
||||
|
||||
text.insert(short_text.size(), insert, 0, insert.size());
|
||||
compare_text.insert(short_text.size(), insert_text, 0, insert_text.size());
|
||||
@ -2973,15 +2968,33 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single)
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_iterator)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.c_str(), buffer.data(), buffer.size());
|
||||
|
||||
compare_text.erase(compare_text.begin() + 2);
|
||||
text.erase(text.begin() + 2);
|
||||
Compare_Text::iterator citr = compare_text.erase(compare_text.begin() + 2);
|
||||
Text::iterator ditr = text.erase(text.begin() + 2);
|
||||
CHECK(*citr == *ditr);
|
||||
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_const_iterator)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.c_str(), buffer.data(), buffer.size());
|
||||
|
||||
Compare_Text::iterator citr = compare_text.erase(compare_text.cbegin() + 2);
|
||||
Text::iterator ditr = text.erase(text.cbegin() + 2);
|
||||
CHECK(*citr == *ditr);
|
||||
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
@ -2994,13 +3007,12 @@ namespace
|
||||
TEST_FIXTURE(SetupFixture, test_erase_range)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.c_str(), buffer.data(), buffer.size());
|
||||
|
||||
compare_text.erase(compare_text.begin() + 2, compare_text.begin() + 4);
|
||||
|
||||
text.erase(text.begin() + 2, text.begin() + 4);
|
||||
Compare_Text::iterator citr = compare_text.erase(compare_text.cbegin() + 2, compare_text.cbegin() + 4);
|
||||
Text::iterator ditr = text.erase(text.cbegin() + 2, text.cbegin() + 4);
|
||||
CHECK(*citr == *ditr);
|
||||
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
|
||||
@ -244,7 +244,7 @@ namespace
|
||||
CHECK(data.begin() == data.end());
|
||||
}
|
||||
|
||||
#if ETL_USING_STL && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
//*************************************************************************
|
||||
TEST(test_cpp17_deduced_constructor)
|
||||
{
|
||||
@ -599,7 +599,23 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single)
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_iterator)
|
||||
{
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
DataNDC::iterator idata = data.find(K5);
|
||||
DataNDC::iterator inext = idata;
|
||||
++inext;
|
||||
|
||||
DataNDC::iterator iafter = data.erase(idata);
|
||||
idata = data.find(K5);
|
||||
|
||||
CHECK(idata == data.end());
|
||||
CHECK(inext == iafter);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_const_iterator)
|
||||
{
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
@ -607,7 +623,7 @@ namespace
|
||||
DataNDC::const_iterator inext = idata;
|
||||
++inext;
|
||||
|
||||
DataNDC::const_iterator iafter = data.erase(idata);
|
||||
DataNDC::iterator iafter = data.erase(idata);
|
||||
idata = data.find(K5);
|
||||
|
||||
CHECK(idata == data.end());
|
||||
@ -619,10 +635,10 @@ namespace
|
||||
{
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
DataNDC::iterator idata = data.begin();
|
||||
DataNDC::const_iterator idata = data.begin();
|
||||
std::advance(idata, 2);
|
||||
|
||||
DataNDC::iterator idata_end = data.begin();
|
||||
DataNDC::const_iterator idata_end = data.begin();
|
||||
std::advance(idata_end, 5);
|
||||
|
||||
data.erase(idata, idata_end);
|
||||
@ -670,10 +686,10 @@ namespace
|
||||
{
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
DataNDC::iterator end = data.begin();
|
||||
DataNDC::const_iterator end = data.cbegin();
|
||||
etl::advance(end, data.size() / 2);
|
||||
|
||||
auto itr = data.erase(data.begin(), end);
|
||||
auto itr = data.erase(data.cbegin(), end);
|
||||
|
||||
CHECK_EQUAL(initial_data.size() / 2, data.size());
|
||||
CHECK(!data.full());
|
||||
@ -686,10 +702,10 @@ namespace
|
||||
{
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
DataNDC::iterator begin = data.begin();
|
||||
DataNDC::const_iterator begin = data.cbegin();
|
||||
etl::advance(begin, data.size() / 2);
|
||||
|
||||
auto itr = data.erase(begin, data.end());
|
||||
auto itr = data.erase(begin, data.cend());
|
||||
|
||||
CHECK_EQUAL(initial_data.size() / 2, data.size());
|
||||
CHECK(!data.full());
|
||||
@ -702,7 +718,7 @@ namespace
|
||||
{
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
auto itr = data.erase(data.begin(), data.end());
|
||||
auto itr = data.erase(data.cbegin(), data.cend());
|
||||
|
||||
CHECK_EQUAL(0U, data.size());
|
||||
CHECK(!data.full());
|
||||
|
||||
@ -221,7 +221,7 @@ namespace
|
||||
CHECK(data.begin() == data.end());
|
||||
}
|
||||
|
||||
#if ETL_USING_STL && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
//*************************************************************************
|
||||
TEST(test_cpp17_deduced_constructor)
|
||||
{
|
||||
@ -510,7 +510,27 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single)
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_iterator)
|
||||
{
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
DataNDC::iterator idata = data.find(K5);
|
||||
DataNDC::iterator inext = idata;
|
||||
++inext;
|
||||
|
||||
DataNDC::iterator iafter = data.erase(idata);
|
||||
idata = data.find(K5);
|
||||
|
||||
CHECK(idata == data.end());
|
||||
CHECK(inext == iafter);
|
||||
|
||||
// Test that erase really does erase from the pool.
|
||||
CHECK(!data.full());
|
||||
CHECK(!data.empty());
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_const_iterator)
|
||||
{
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
@ -518,10 +538,10 @@ namespace
|
||||
DataNDC::const_iterator inext = idata;
|
||||
++inext;
|
||||
|
||||
DataNDC::const_iterator iafter = data.erase(idata);
|
||||
DataNDC::iterator iafter = data.erase(idata);
|
||||
idata = data.find(K5);
|
||||
|
||||
CHECK(idata == data.end());
|
||||
CHECK(idata == data.cend());
|
||||
CHECK(inext == iafter);
|
||||
|
||||
// Test that erase really does erase from the pool.
|
||||
@ -534,10 +554,10 @@ namespace
|
||||
{
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
DataNDC::iterator idata = data.begin();
|
||||
DataNDC::const_iterator idata = data.cbegin();
|
||||
std::advance(idata, 2);
|
||||
|
||||
DataNDC::iterator idata_end = data.begin();
|
||||
DataNDC::const_iterator idata_end = data.cbegin();
|
||||
std::advance(idata_end, 5);
|
||||
|
||||
data.erase(idata, idata_end);
|
||||
@ -585,10 +605,10 @@ namespace
|
||||
{
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
DataNDC::iterator end = data.begin();
|
||||
DataNDC::const_iterator end = data.cbegin();
|
||||
etl::advance(end, data.size() / 2);
|
||||
|
||||
auto itr = data.erase(data.begin(), end);
|
||||
auto itr = data.erase(data.cbegin(), end);
|
||||
|
||||
CHECK_EQUAL(initial_data.size() / 2, data.size());
|
||||
CHECK(!data.full());
|
||||
@ -601,10 +621,10 @@ namespace
|
||||
{
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
DataNDC::iterator begin = data.begin();
|
||||
DataNDC::const_iterator begin = data.cbegin();
|
||||
etl::advance(begin, data.size() / 2);
|
||||
|
||||
auto itr = data.erase(begin, data.end());
|
||||
auto itr = data.erase(begin, data.cend());
|
||||
|
||||
CHECK_EQUAL(initial_data.size() / 2, data.size());
|
||||
CHECK(!data.full());
|
||||
@ -617,7 +637,7 @@ namespace
|
||||
{
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
auto itr = data.erase(data.begin(), data.end());
|
||||
auto itr = data.erase(data.cbegin(), data.cend());
|
||||
|
||||
CHECK_EQUAL(0U, data.size());
|
||||
CHECK(!data.full());
|
||||
@ -625,7 +645,6 @@ namespace
|
||||
CHECK(itr == data.end());
|
||||
}
|
||||
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_clear)
|
||||
{
|
||||
|
||||
@ -162,7 +162,7 @@ namespace
|
||||
CHECK(data.begin() == data.end());
|
||||
}
|
||||
|
||||
#if ETL_USING_STL && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
//*************************************************************************
|
||||
TEST(test_cpp17_deduced_constructor)
|
||||
{
|
||||
@ -443,7 +443,27 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single)
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_iterator)
|
||||
{
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
DataNDC::iterator idata = data.find(N5);
|
||||
DataNDC::iterator inext = idata;
|
||||
++inext;
|
||||
|
||||
DataNDC::iterator iafter = data.erase(idata);
|
||||
idata = data.find(N5);
|
||||
|
||||
CHECK(idata == data.end());
|
||||
CHECK(inext == iafter);
|
||||
|
||||
// Test that erase really does erase from the pool.
|
||||
CHECK(!data.full());
|
||||
CHECK(!data.empty());
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_cont_iterator)
|
||||
{
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
@ -454,7 +474,7 @@ namespace
|
||||
DataNDC::const_iterator iafter = data.erase(idata);
|
||||
idata = data.find(N5);
|
||||
|
||||
CHECK(idata == data.end());
|
||||
CHECK(idata == data.cend());
|
||||
CHECK(inext == iafter);
|
||||
|
||||
// Test that erase really does erase from the pool.
|
||||
@ -467,10 +487,10 @@ namespace
|
||||
{
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
DataNDC::iterator idata = data.begin();
|
||||
DataNDC::const_iterator idata = data.cbegin();
|
||||
std::advance(idata, 2);
|
||||
|
||||
DataNDC::iterator idata_end = data.begin();
|
||||
DataNDC::const_iterator idata_end = data.cbegin();
|
||||
std::advance(idata_end, 5);
|
||||
|
||||
data.erase(idata, idata_end);
|
||||
@ -518,10 +538,10 @@ namespace
|
||||
{
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
DataNDC::iterator end = data.begin();
|
||||
DataNDC::const_iterator end = data.cbegin();
|
||||
etl::advance(end, data.size() / 2);
|
||||
|
||||
auto itr = data.erase(data.begin(), end);
|
||||
auto itr = data.erase(data.cbegin(), end);
|
||||
|
||||
CHECK_EQUAL(initial_data.size() / 2, data.size());
|
||||
CHECK(!data.full());
|
||||
@ -534,10 +554,10 @@ namespace
|
||||
{
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
DataNDC::iterator begin = data.begin();
|
||||
DataNDC::const_iterator begin = data.cbegin();
|
||||
etl::advance(begin, data.size() / 2);
|
||||
|
||||
auto itr = data.erase(begin, data.end());
|
||||
auto itr = data.erase(begin, data.cend());
|
||||
|
||||
CHECK_EQUAL(initial_data.size() / 2, data.size());
|
||||
CHECK(!data.full());
|
||||
@ -550,7 +570,7 @@ namespace
|
||||
{
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
auto itr = data.erase(data.begin(), data.end());
|
||||
auto itr = data.erase(data.cbegin(), data.cend());
|
||||
|
||||
CHECK_EQUAL(0U, data.size());
|
||||
CHECK(!data.full());
|
||||
@ -558,7 +578,6 @@ namespace
|
||||
CHECK(itr == data.end());
|
||||
}
|
||||
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_clear)
|
||||
{
|
||||
|
||||
@ -155,7 +155,7 @@ namespace
|
||||
CHECK(data.begin() == data.end());
|
||||
}
|
||||
|
||||
#if ETL_USING_STL && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
//*************************************************************************
|
||||
TEST(test_cpp17_deduced_constructor)
|
||||
{
|
||||
@ -424,7 +424,27 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single)
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_iterator)
|
||||
{
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
DataNDC::iterator idata = data.find(N5);
|
||||
DataNDC::iterator inext = idata;
|
||||
++inext;
|
||||
|
||||
DataNDC::iterator iafter = data.erase(idata);
|
||||
idata = data.find(N5);
|
||||
|
||||
CHECK(idata == data.end());
|
||||
CHECK(inext == iafter);
|
||||
|
||||
// Test that erase really does erase from the pool.
|
||||
CHECK(!data.full());
|
||||
CHECK(!data.empty());
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_const_iterator)
|
||||
{
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
@ -432,10 +452,10 @@ namespace
|
||||
DataNDC::const_iterator inext = idata;
|
||||
++inext;
|
||||
|
||||
DataNDC::const_iterator iafter = data.erase(idata);
|
||||
DataNDC::iterator iafter = data.erase(idata);
|
||||
idata = data.find(N5);
|
||||
|
||||
CHECK(idata == data.end());
|
||||
CHECK(idata == data.cend());
|
||||
CHECK(inext == iafter);
|
||||
|
||||
// Test that erase really does erase from the pool.
|
||||
@ -448,10 +468,10 @@ namespace
|
||||
{
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
DataNDC::iterator idata = data.begin();
|
||||
DataNDC::const_iterator idata = data.cbegin();
|
||||
std::advance(idata, 2);
|
||||
|
||||
DataNDC::iterator idata_end = data.begin();
|
||||
DataNDC::const_iterator idata_end = data.cbegin();
|
||||
std::advance(idata_end, 5);
|
||||
|
||||
data.erase(idata, idata_end);
|
||||
@ -499,10 +519,10 @@ namespace
|
||||
{
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
DataNDC::iterator end = data.begin();
|
||||
DataNDC::const_iterator end = data.cbegin();
|
||||
etl::advance(end, data.size() / 2);
|
||||
|
||||
auto itr = data.erase(data.begin(), end);
|
||||
auto itr = data.erase(data.cbegin(), end);
|
||||
|
||||
CHECK_EQUAL(initial_data.size() / 2, data.size());
|
||||
CHECK(!data.full());
|
||||
@ -515,10 +535,10 @@ namespace
|
||||
{
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
DataNDC::iterator begin = data.begin();
|
||||
DataNDC::const_iterator begin = data.cbegin();
|
||||
etl::advance(begin, data.size() / 2);
|
||||
|
||||
auto itr = data.erase(begin, data.end());
|
||||
auto itr = data.erase(begin, data.cend());
|
||||
|
||||
CHECK_EQUAL(initial_data.size() / 2, data.size());
|
||||
CHECK(!data.full());
|
||||
@ -531,7 +551,7 @@ namespace
|
||||
{
|
||||
DataNDC data(initial_data.begin(), initial_data.end());
|
||||
|
||||
auto itr = data.erase(data.begin(), data.end());
|
||||
auto itr = data.erase(data.cbegin(), data.cend());
|
||||
|
||||
CHECK_EQUAL(0U, data.size());
|
||||
CHECK(!data.full());
|
||||
@ -539,7 +559,6 @@ namespace
|
||||
CHECK(itr == data.end());
|
||||
}
|
||||
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_clear)
|
||||
{
|
||||
|
||||
@ -83,7 +83,7 @@ namespace
|
||||
CHECK(data.begin() == data.end());
|
||||
}
|
||||
|
||||
#if ETL_USING_STL && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
//*************************************************************************
|
||||
TEST(test_cpp17_deduced_constructor)
|
||||
{
|
||||
@ -740,14 +740,14 @@ namespace
|
||||
data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE);
|
||||
compare_data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE);
|
||||
|
||||
data.insert(data.begin() + offset, INITIAL_VALUE);
|
||||
compare_data.insert(compare_data.begin() + offset, INITIAL_VALUE);
|
||||
data.insert(data.cbegin() + offset, INITIAL_VALUE);
|
||||
compare_data.insert(compare_data.cbegin() + offset, INITIAL_VALUE);
|
||||
|
||||
CHECK_EQUAL(compare_data.size(), data.size());
|
||||
|
||||
bool is_equal = std::equal(data.begin(),
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
bool is_equal = std::equal(data.cbegin(),
|
||||
data.cend(),
|
||||
compare_data.cbegin());
|
||||
|
||||
CHECK(is_equal);
|
||||
}
|
||||
@ -767,14 +767,14 @@ namespace
|
||||
data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE);
|
||||
compare_data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE);
|
||||
|
||||
data.emplace(data.begin() + offset, INITIAL_VALUE);
|
||||
compare_data.emplace(compare_data.begin() + offset, INITIAL_VALUE);
|
||||
data.emplace(data.cbegin() + offset, INITIAL_VALUE);
|
||||
compare_data.emplace(compare_data.cbegin() + offset, INITIAL_VALUE);
|
||||
|
||||
CHECK_EQUAL(compare_data.size(), data.size());
|
||||
|
||||
bool is_equal = std::equal(data.begin(),
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
bool is_equal = std::equal(data.cbegin(),
|
||||
data.cend(),
|
||||
compare_data.cbegin());
|
||||
|
||||
CHECK(is_equal);
|
||||
}
|
||||
@ -790,15 +790,15 @@ namespace
|
||||
|
||||
size_t offset = 2;
|
||||
|
||||
CHECK_THROW(data.insert(data.begin() + offset, INITIAL_VALUE), etl::vector_full);
|
||||
CHECK_THROW(data.insert(data.cbegin() + offset, INITIAL_VALUE), etl::vector_full);
|
||||
|
||||
offset = 0;
|
||||
|
||||
CHECK_THROW(data.insert(data.begin() + offset, INITIAL_VALUE), etl::vector_full);
|
||||
CHECK_THROW(data.insert(data.cbegin() + offset, INITIAL_VALUE), etl::vector_full);
|
||||
|
||||
offset = data.size();
|
||||
|
||||
CHECK_THROW(data.insert(data.begin() + offset, INITIAL_VALUE), etl::vector_full);
|
||||
CHECK_THROW(data.insert(data.cbegin() + offset, INITIAL_VALUE), etl::vector_full);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
@ -815,14 +815,14 @@ namespace
|
||||
|
||||
data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE);
|
||||
compare_data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE);
|
||||
data.insert(data.begin() + offset, INSERT_SIZE, INITIAL_VALUE);
|
||||
compare_data.insert(compare_data.begin() + offset, INSERT_SIZE, INITIAL_VALUE);
|
||||
data.insert(data.cbegin() + offset, INSERT_SIZE, INITIAL_VALUE);
|
||||
compare_data.insert(compare_data.cbegin() + offset, INSERT_SIZE, INITIAL_VALUE);
|
||||
|
||||
CHECK_EQUAL(compare_data.size(), data.size());
|
||||
|
||||
bool is_equal = std::equal(data.begin(),
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
bool is_equal = std::equal(data.cbegin(),
|
||||
data.cend(),
|
||||
compare_data.cbegin());
|
||||
|
||||
CHECK(is_equal);
|
||||
}
|
||||
@ -839,19 +839,19 @@ namespace
|
||||
|
||||
size_t offset = 0;
|
||||
|
||||
CHECK_THROW(data.insert(data.begin() + offset, INSERT_SIZE, INITIAL_VALUE), etl::vector_full);
|
||||
CHECK_THROW(data.insert(data.cbegin() + offset, INSERT_SIZE, INITIAL_VALUE), etl::vector_full);
|
||||
|
||||
offset = 2;
|
||||
|
||||
CHECK_THROW(data.insert(data.begin() + offset, INSERT_SIZE, INITIAL_VALUE), etl::vector_full);
|
||||
CHECK_THROW(data.insert(data.cbegin() + offset, INSERT_SIZE, INITIAL_VALUE), etl::vector_full);
|
||||
|
||||
offset = 4;
|
||||
|
||||
CHECK_THROW(data.insert(data.begin() + offset, INSERT_SIZE, INITIAL_VALUE), etl::vector_full);
|
||||
CHECK_THROW(data.insert(data.cbegin() + offset, INSERT_SIZE, INITIAL_VALUE), etl::vector_full);
|
||||
|
||||
offset = data.size();
|
||||
|
||||
CHECK_THROW(data.insert(data.begin() + offset, INSERT_SIZE, INITIAL_VALUE), etl::vector_full);
|
||||
CHECK_THROW(data.insert(data.cbegin() + offset, INSERT_SIZE, INITIAL_VALUE), etl::vector_full);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
@ -868,14 +868,14 @@ namespace
|
||||
|
||||
data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE);
|
||||
compare_data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE);
|
||||
data.insert(data.begin() + offset, insert_data.begin(), insert_data.end());
|
||||
compare_data.insert(compare_data.begin() + offset, insert_data.begin(), insert_data.end());
|
||||
data.insert(data.cbegin() + offset, insert_data.cbegin(), insert_data.cend());
|
||||
compare_data.insert(compare_data.cbegin() + offset, insert_data.cbegin(), insert_data.cend());
|
||||
|
||||
CHECK_EQUAL(compare_data.size(), data.size());
|
||||
|
||||
bool is_equal = std::equal(data.begin(),
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
bool is_equal = std::equal(data.cbegin(),
|
||||
data.cend(),
|
||||
compare_data.cbegin());
|
||||
|
||||
CHECK(is_equal);
|
||||
}
|
||||
@ -891,31 +891,61 @@ namespace
|
||||
|
||||
size_t offset = 0;
|
||||
|
||||
CHECK_THROW(data.insert(data.begin() + offset, initial_data.begin(), initial_data.end()), etl::vector_full);
|
||||
CHECK_THROW(data.insert(data.cbegin() + offset, initial_data.cbegin(), initial_data.cend()), etl::vector_full);
|
||||
|
||||
offset = 2;
|
||||
|
||||
CHECK_THROW(data.insert(data.begin() + offset, initial_data.begin(), initial_data.end()), etl::vector_full);
|
||||
CHECK_THROW(data.insert(data.cbegin() + offset, initial_data.cbegin(), initial_data.cend()), etl::vector_full);
|
||||
|
||||
offset = 4;
|
||||
|
||||
CHECK_THROW(data.insert(data.begin() + offset, initial_data.begin(), initial_data.end()), etl::vector_full);
|
||||
CHECK_THROW(data.insert(data.cbegin() + offset, initial_data.cbegin(), initial_data.cend()), etl::vector_full);
|
||||
|
||||
offset = data.size();
|
||||
|
||||
CHECK_THROW(data.insert(data.begin() + offset, initial_data.begin(), initial_data.end()), etl::vector_full);
|
||||
CHECK_THROW(data.insert(data.cbegin() + offset, initial_data.cbegin(), initial_data.cend()), etl::vector_full);
|
||||
}
|
||||
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single)
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_iterator)
|
||||
{
|
||||
Compare_Data compare_data(initial_data.begin(), initial_data.end());
|
||||
Data data(initial_data.begin(), initial_data.end());
|
||||
|
||||
compare_data.erase(compare_data.begin() + 2);
|
||||
Compare_Data::iterator const_cdi = compare_data.begin() + 2U;
|
||||
int compare_value = *(const_cdi + 1U);
|
||||
Compare_Data::iterator cdi = compare_data.erase(const_cdi);
|
||||
CHECK_EQUAL(compare_value, *cdi);
|
||||
|
||||
data.erase(data.begin() + 2);
|
||||
Data::iterator const_di = data.begin() + 2U;
|
||||
int data_value = *(const_di + 1U);
|
||||
Data::iterator di = data.erase(const_di);
|
||||
CHECK_EQUAL(data_value, *di);
|
||||
|
||||
CHECK_EQUAL(compare_data.size(), data.size());
|
||||
|
||||
bool is_equal = std::equal(data.begin(),
|
||||
data.end(),
|
||||
compare_data.begin());
|
||||
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_erase_single_const_iterator)
|
||||
{
|
||||
Compare_Data compare_data(initial_data.begin(), initial_data.end());
|
||||
Data data(initial_data.begin(), initial_data.end());
|
||||
|
||||
Compare_Data::const_iterator const_cdi = compare_data.cbegin() + 2U;
|
||||
int compare_value = *(const_cdi + 1U);
|
||||
Compare_Data::iterator cdi = compare_data.erase(const_cdi);
|
||||
CHECK_EQUAL(compare_value, *cdi);
|
||||
|
||||
Data::const_iterator const_di = data.cbegin() + 2U;
|
||||
int data_value = *(const_di + 1U);
|
||||
Data::iterator di = data.erase(const_di);
|
||||
CHECK_EQUAL(data_value, *di);
|
||||
|
||||
CHECK_EQUAL(compare_data.size(), data.size());
|
||||
|
||||
@ -932,9 +962,15 @@ namespace
|
||||
Compare_Data compare_data(initial_data.begin(), initial_data.end());
|
||||
Data data(initial_data.begin(), initial_data.end());
|
||||
|
||||
compare_data.erase(compare_data.begin() + 2, compare_data.begin() + 4);
|
||||
Compare_Data::const_iterator const_cdi = compare_data.cbegin() + 2U;
|
||||
int compare_value = *(const_cdi + 2U);
|
||||
Compare_Data::iterator cdi = compare_data.erase(const_cdi, const_cdi + 2U);
|
||||
CHECK_EQUAL(compare_value, *cdi);
|
||||
|
||||
data.erase(data.begin() + 2, data.begin() + 4);
|
||||
Data::const_iterator const_di = data.cbegin() + 2U;
|
||||
int data_value = *(const_di + 2U);
|
||||
Data::iterator di = data.erase(const_di, const_di + 2U);
|
||||
CHECK_EQUAL(data_value, *di);
|
||||
|
||||
CHECK_EQUAL(compare_data.size(), data.size());
|
||||
|
||||
@ -1276,6 +1312,22 @@ namespace
|
||||
etl::vector<int, 10> v(5, 5);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_two_parameter_assign_same_type_not_iterator)
|
||||
{
|
||||
// No compilation error.
|
||||
etl::vector<int, 10> v;
|
||||
v.assign(5, 5);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_three_parameter_insert_same_type_not_iterator)
|
||||
{
|
||||
// No compilation error.
|
||||
etl::vector<int, 10> v;
|
||||
v.insert(v.end(), 5, 5);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST(remove)
|
||||
{
|
||||
|
||||
@ -92,7 +92,7 @@ namespace
|
||||
CHECK_EQUAL(data.max_size(), SIZE);
|
||||
}
|
||||
|
||||
#if ETL_USING_STL && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
//*************************************************************************
|
||||
TEST(test_cpp17_deduced_constructor)
|
||||
{
|
||||
|
||||
@ -99,7 +99,7 @@ namespace
|
||||
CHECK_EQUAL(data.max_size(), SIZE);
|
||||
}
|
||||
|
||||
#if ETL_USING_STL && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
#if ETL_CPP17_SUPPORTED && ETL_USING_INITIALIZER_LIST && !defined(ETL_TEMPLATE_DEDUCTION_GUIDE_TESTS_DISABLED)
|
||||
//*************************************************************************
|
||||
TEST(test_cpp17_deduced_constructor)
|
||||
{
|
||||
@ -1409,9 +1409,10 @@ namespace
|
||||
Compare_Data compare_data(initial_data.begin(), initial_data.end());
|
||||
Data data(initial_data.begin(), initial_data.end());
|
||||
|
||||
compare_data.erase(compare_data.begin() + 2);
|
||||
Compare_Data::iterator citr = compare_data.erase(compare_data.begin() + 2);
|
||||
Data::iterator ditr = data.erase(data.begin() + 2);
|
||||
|
||||
data.erase(data.begin() + 2);
|
||||
CHECK(*citr == *ditr);
|
||||
|
||||
bool is_equal = std::equal(data.begin(), data.end(), compare_data.begin());
|
||||
|
||||
@ -1419,14 +1420,31 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_const_erase_single)
|
||||
TEST_FIXTURE(SetupFixture, test_const_erase_single_iterator)
|
||||
{
|
||||
CCompare_Data compare_data(initial_data.begin(), initial_data.end());
|
||||
CData data(initial_data.begin(), initial_data.end());
|
||||
|
||||
compare_data.erase(compare_data.begin() + 2);
|
||||
CCompare_Data::iterator citr = compare_data.erase(compare_data.begin() + 2);
|
||||
CData::iterator ditr = data.erase(data.begin() + 2);
|
||||
|
||||
data.erase(data.begin() + 2);
|
||||
CHECK(*citr == *ditr);
|
||||
|
||||
bool is_equal = std::equal(data.begin(), data.end(), compare_data.begin());
|
||||
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_const_erase_single_const_iterator)
|
||||
{
|
||||
CCompare_Data compare_data(initial_data.begin(), initial_data.end());
|
||||
CData data(initial_data.begin(), initial_data.end());
|
||||
|
||||
CCompare_Data::iterator citr = compare_data.erase(compare_data.cbegin() + 2);
|
||||
CData::iterator ditr = data.erase(data.cbegin() + 2);
|
||||
|
||||
CHECK(*citr == *ditr);
|
||||
|
||||
bool is_equal = std::equal(data.begin(), data.end(), compare_data.begin());
|
||||
|
||||
@ -1439,9 +1457,10 @@ namespace
|
||||
Compare_Data compare_data(initial_data.begin(), initial_data.end());
|
||||
Data data(initial_data.begin(), initial_data.end());
|
||||
|
||||
compare_data.erase(compare_data.begin() + 2, compare_data.begin() + 4);
|
||||
Compare_Data::iterator citr = compare_data.erase(compare_data.cbegin() + 2, compare_data.cbegin() + 4);
|
||||
Data::iterator ditr = data.erase(data.cbegin() + 2, data.cbegin() + 4);
|
||||
|
||||
data.erase(data.begin() + 2, data.begin() + 4);
|
||||
CHECK(*citr == *ditr);
|
||||
|
||||
bool is_equal = std::equal(data.begin(), data.end(), compare_data.begin());
|
||||
|
||||
|
||||
@ -8422,8 +8422,6 @@
|
||||
<None Include="..\..\.gitmodules" />
|
||||
<None Include="..\..\appveyor.yml" />
|
||||
<None Include="..\..\arduino\create_arduino_library.py" />
|
||||
<None Include="..\..\arduino\examples\Example_0_import_etl\Example_0_import_etl.ino" />
|
||||
<None Include="..\..\arduino\examples\Vector_Examples\Example_Vector_1_simple_use\Example_Vector_1_simple_use.ino" />
|
||||
<None Include="..\..\etl.pspimage" />
|
||||
<None Include="..\..\etl.xar" />
|
||||
<None Include="..\..\include\etl\generators\generate.bat" />
|
||||
|
||||
@ -103,18 +103,6 @@
|
||||
<Filter Include="Source Files\Scripts">
|
||||
<UniqueIdentifier>{562466b5-677d-4448-9e9e-f70805cd71ad}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="ETL\Arduino\Examples">
|
||||
<UniqueIdentifier>{1d6ea286-57ad-4960-9343-9d2376087b24}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="ETL\Arduino\Examples\Example_0_import_etl">
|
||||
<UniqueIdentifier>{5eace791-3e53-4205-a04d-2aba3bac6b47}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="ETL\Arduino\Examples\Vector_Examples">
|
||||
<UniqueIdentifier>{2b770849-325e-4ec5-a7f3-9a192cd40dca}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="ETL\Arduino\Examples\Vector_Examples\Example_Vector_1_simple_use">
|
||||
<UniqueIdentifier>{0e4d2126-b9b7-4eef-b5ca-18363b1e01ce}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\Sanity Checks\Logs">
|
||||
<UniqueIdentifier>{5b76fd56-eb83-489f-b9a6-798c07c5fa76}</UniqueIdentifier>
|
||||
</Filter>
|
||||
@ -1161,15 +1149,15 @@
|
||||
<ClInclude Include="..\..\include\etl\multi_span.h">
|
||||
<Filter>ETL\Containers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\include\etl\profiles\determine_builtin_support.h">
|
||||
<Filter>ETL\Profiles</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\include\etl\nth_type.h">
|
||||
<Filter>ETL\Utilities</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\include\etl\profiles\determine_builtin_support.h">
|
||||
<Filter>ETL\Profiles</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\include\etl\nth_type.h">
|
||||
<Filter>ETL\Utilities</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\main.cpp">
|
||||
@ -3130,12 +3118,6 @@
|
||||
<None Include="..\runtests.sh">
|
||||
<Filter>Source Files\Scripts</Filter>
|
||||
</None>
|
||||
<None Include="..\..\arduino\examples\Example_0_import_etl\Example_0_import_etl.ino">
|
||||
<Filter>ETL\Arduino\Examples\Example_0_import_etl</Filter>
|
||||
</None>
|
||||
<None Include="..\..\arduino\examples\Vector_Examples\Example_Vector_1_simple_use\Example_Vector_1_simple_use.ino">
|
||||
<Filter>ETL\Arduino\Examples\Vector_Examples\Example_Vector_1_simple_use</Filter>
|
||||
</None>
|
||||
<None Include="..\..\.clang-format">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user