mirror of
https://github.com/ETLCPP/etl.git
synced 2026-04-30 19:09:10 +08:00
C++11 unit tests - Work in progress
This commit is contained in:
parent
cb91c3d4d3
commit
9f4c5bbb94
@ -83,7 +83,7 @@ namespace etl
|
||||
///\ingroup array
|
||||
/// A replacement for std::array if you haven't got C++0x11.
|
||||
//***************************************************************************
|
||||
template <typename T, const size_t SIZE_>
|
||||
template <typename T, size_t SIZE_>
|
||||
class array
|
||||
{
|
||||
private:
|
||||
@ -92,10 +92,7 @@ namespace etl
|
||||
|
||||
public:
|
||||
|
||||
enum
|
||||
{
|
||||
SIZE = SIZE_
|
||||
};
|
||||
static ETL_CONSTANT size_t SIZE = SIZE_;
|
||||
|
||||
typedef T value_type;
|
||||
typedef size_t size_type;
|
||||
@ -563,6 +560,9 @@ namespace etl
|
||||
}
|
||||
};
|
||||
|
||||
template <typename T, size_t SIZE_>
|
||||
ETL_CONSTANT size_t array<T, SIZE_>::SIZE;
|
||||
|
||||
//*************************************************************************
|
||||
/// Template deduction guides.
|
||||
//*************************************************************************
|
||||
|
||||
@ -81,10 +81,10 @@ namespace etl
|
||||
typedef typename etl::larger_type<etl::message_id_t>::type fsm_internal_id_t;
|
||||
|
||||
#if ETL_USING_CPP17 && !defined(ETL_FSM_FORCE_CPP03_IMPLEMENTATION) // For C++17 and above
|
||||
template <typename, typename, const etl::fsm_state_id_t, typename...>
|
||||
template <typename, typename, etl::fsm_state_id_t, typename...>
|
||||
class fsm_state;
|
||||
#else
|
||||
template <typename, typename, const etl::fsm_state_id_t,
|
||||
template <typename, typename, etl::fsm_state_id_t,
|
||||
typename, typename, typename, typename,
|
||||
typename, typename, typename, typename,
|
||||
typename, typename, typename, typename,
|
||||
@ -179,6 +179,7 @@ namespace etl
|
||||
// Pass this whenever no state change is desired.
|
||||
// The highest unsigned value of fsm_state_id_t.
|
||||
static ETL_CONSTANT fsm_state_id_t No_State_Change = etl::integral_limits<fsm_state_id_t>::max;
|
||||
|
||||
// Pass this when this event also needs to be passed to the parent.
|
||||
static ETL_CONSTANT fsm_state_id_t Pass_To_Parent = No_State_Change - 1U;
|
||||
};
|
||||
@ -201,11 +202,14 @@ namespace etl
|
||||
friend class etl::fsm;
|
||||
friend class etl::hfsm;
|
||||
|
||||
using private_fsm::ifsm_state_helper<>::No_State_Change;
|
||||
using private_fsm::ifsm_state_helper<>::Pass_To_Parent;
|
||||
|
||||
#if ETL_USING_CPP17 && !defined(ETL_FSM_FORCE_CPP03_IMPLEMENTATION) // For C++17 and above
|
||||
template <typename, typename, const etl::fsm_state_id_t, typename...>
|
||||
template <typename, typename, etl::fsm_state_id_t, typename...>
|
||||
friend class fsm_state;
|
||||
#else
|
||||
template <typename, typename, const etl::fsm_state_id_t,
|
||||
template <typename, typename, etl::fsm_state_id_t,
|
||||
typename, typename, typename, typename,
|
||||
typename, typename, typename, typename,
|
||||
typename, typename, typename, typename,
|
||||
@ -515,7 +519,7 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// The definition for all types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_, typename... TMessageTypes>
|
||||
template <typename TContext, typename TDerived, etl::fsm_state_id_t STATE_ID_, typename... TMessageTypes>
|
||||
class fsm_state : public ifsm_state
|
||||
{
|
||||
public:
|
||||
@ -589,7 +593,7 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// The definition for all 16 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
template <typename TContext, typename TDerived, etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1 = void, typename T2 = void, typename T3 = void, typename T4 = void,
|
||||
typename T5 = void, typename T6 = void, typename T7 = void, typename T8 = void,
|
||||
typename T9 = void, typename T10 = void, typename T11 = void, typename T12 = void,
|
||||
@ -654,7 +658,7 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 15 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
template <typename TContext, typename TDerived, etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
typename T5, typename T6, typename T7, typename T8,
|
||||
typename T9, typename T10, typename T11, typename T12,
|
||||
@ -718,7 +722,7 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 14 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
template <typename TContext, typename TDerived, etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
typename T5, typename T6, typename T7, typename T8,
|
||||
typename T9, typename T10, typename T11, typename T12,
|
||||
@ -781,7 +785,7 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 13 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
template <typename TContext, typename TDerived, etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
typename T5, typename T6, typename T7, typename T8,
|
||||
typename T9, typename T10, typename T11, typename T12,
|
||||
@ -843,7 +847,7 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 12 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
template <typename TContext, typename TDerived, etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
typename T5, typename T6, typename T7, typename T8,
|
||||
typename T9, typename T10, typename T11, typename T12>
|
||||
@ -903,7 +907,7 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 11 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
template <typename TContext, typename TDerived, etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
typename T5, typename T6, typename T7, typename T8,
|
||||
typename T9, typename T10, typename T11>
|
||||
@ -962,7 +966,7 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 10 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
template <typename TContext, typename TDerived, etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
typename T5, typename T6, typename T7, typename T8,
|
||||
typename T9, typename T10>
|
||||
@ -1020,7 +1024,7 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 9 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
template <typename TContext, typename TDerived, etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
typename T5, typename T6, typename T7, typename T8,
|
||||
typename T9>
|
||||
@ -1077,7 +1081,7 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 8 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
template <typename TContext, typename TDerived, etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
typename T5, typename T6, typename T7, typename T8>
|
||||
class fsm_state<TContext, TDerived, STATE_ID_, T1, T2, T3, T4, T5, T6, T7, T8, void, void, void, void, void, void, void, void> : public ifsm_state
|
||||
@ -1132,7 +1136,7 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 7 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
template <typename TContext, typename TDerived, etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
typename T5, typename T6, typename T7>
|
||||
class fsm_state<TContext, TDerived, STATE_ID_, T1, T2, T3, T4, T5, T6, T7, void, void, void, void, void, void, void, void, void> : public ifsm_state
|
||||
@ -1186,7 +1190,7 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 6 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
template <typename TContext, typename TDerived, etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
typename T5, typename T6>
|
||||
class fsm_state<TContext, TDerived, STATE_ID_, T1, T2, T3, T4, T5, T6, void, void, void, void, void, void, void, void, void, void> : public ifsm_state
|
||||
@ -1239,7 +1243,7 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 5 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
template <typename TContext, typename TDerived, etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4,
|
||||
typename T5>
|
||||
class fsm_state<TContext, TDerived, STATE_ID_, T1, T2, T3, T4, T5, void, void, void, void, void, void, void, void, void, void, void> : public ifsm_state
|
||||
@ -1291,7 +1295,7 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 4 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
template <typename TContext, typename TDerived, etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3, typename T4>
|
||||
class fsm_state<TContext, TDerived, STATE_ID_, T1, T2, T3, T4, void, void, void, void, void, void, void, void, void, void, void, void> : public ifsm_state
|
||||
{
|
||||
@ -1341,7 +1345,7 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 3 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
template <typename TContext, typename TDerived, etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2, typename T3>
|
||||
class fsm_state<TContext, TDerived, STATE_ID_, T1, T2, T3, void, void, void, void, void, void, void, void, void, void, void, void, void> : public ifsm_state
|
||||
{
|
||||
@ -1390,7 +1394,7 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 2 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
template <typename TContext, typename TDerived, etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1, typename T2>
|
||||
class fsm_state<TContext, TDerived, STATE_ID_, T1, T2, void, void, void, void, void, void, void, void, void, void, void, void, void, void> : public ifsm_state
|
||||
{
|
||||
@ -1438,7 +1442,7 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 1 message type.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
template <typename TContext, typename TDerived, etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1>
|
||||
class fsm_state<TContext, TDerived, STATE_ID_, T1, void, void, void, void, void, void, void, void, void, void, void, void, void, void, void> : public ifsm_state
|
||||
{
|
||||
@ -1485,7 +1489,7 @@ namespace etl
|
||||
//***************************************************************************
|
||||
// Specialisation for 0 message types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_>
|
||||
template <typename TContext, typename TDerived, etl::fsm_state_id_t STATE_ID_>
|
||||
class fsm_state<TContext, TDerived, STATE_ID_, void, void, void, void, void, void, void, void, void, void, void, void, void, void, void, void> : public ifsm_state
|
||||
{
|
||||
public:
|
||||
|
||||
@ -365,11 +365,9 @@ namespace etl
|
||||
|
||||
################################################
|
||||
def generate_accepts_return_compile_time_TMessage(n):
|
||||
cog.outl(" ETL_CONSTANT etl::message_id_t id = TMessage::ID;")
|
||||
cog.outl("")
|
||||
cog.out(" return")
|
||||
for i in range(1, n + 1):
|
||||
cog.out(" T%d::ID == id" % i)
|
||||
cog.out(" T%d::ID == TMessage::ID" % i)
|
||||
if i < n:
|
||||
cog.out(" ||")
|
||||
if i % 4 == 0:
|
||||
|
||||
@ -382,17 +382,17 @@ namespace etl
|
||||
private:
|
||||
|
||||
// Determines the index of the best unsigned type for the required value.
|
||||
static ETL_CONSTANT int TYPE_INDEX = ((VALUE > UINT_LEAST8_MAX) ? 1 : 0) +
|
||||
((VALUE > UINT16_MAX) ? 1 : 0) +
|
||||
((VALUE > UINT32_MAX) ? 1 : 0);
|
||||
static ETL_CONSTANT int TYPE_INDEX = ((VALUE > UINT_LEAST8_MAX) ? 1 : 0) +
|
||||
((VALUE > UINT16_MAX) ? 1 : 0) +
|
||||
((VALUE > UINT32_MAX) ? 1 : 0);
|
||||
|
||||
public:
|
||||
|
||||
typedef typename private_smallest::best_fit_uint_type<TYPE_INDEX>::type type;
|
||||
};
|
||||
|
||||
template <size_t NBITS>
|
||||
ETL_CONSTANT int smallest_uint_for_value<NBITS>::TYPE_INDEX;
|
||||
template <uintmax_t VALUE>
|
||||
ETL_CONSTANT int smallest_uint_for_value<VALUE>::TYPE_INDEX;
|
||||
|
||||
#if ETL_USING_CPP11
|
||||
template <uintmax_t VALUE>
|
||||
@ -405,23 +405,23 @@ namespace etl
|
||||
/// Defines 'type' which is the type of the smallest signed integer.
|
||||
///\ingroup smallest
|
||||
//***************************************************************************
|
||||
template <const intmax_t VALUE>
|
||||
template <intmax_t VALUE>
|
||||
struct smallest_int_for_value
|
||||
{
|
||||
private:
|
||||
|
||||
// Determines the index of the best signed type for the required value.
|
||||
static ETL_CONSTANT int TYPE_INDEX = (((VALUE > intmax_t(INT_LEAST8_MAX)) || (VALUE < intmax_t(INT_LEAST8_MIN))) ? 1 : 0) +
|
||||
(((VALUE > intmax_t(INT16_MAX)) || (VALUE < intmax_t(INT16_MIN))) ? 1 : 0) +
|
||||
(((VALUE > intmax_t(INT32_MAX)) || (VALUE < intmax_t(INT32_MIN))) ? 1 : 0);
|
||||
(((VALUE > intmax_t(INT16_MAX)) || (VALUE < intmax_t(INT16_MIN))) ? 1 : 0) +
|
||||
(((VALUE > intmax_t(INT32_MAX)) || (VALUE < intmax_t(INT32_MIN))) ? 1 : 0);
|
||||
|
||||
public:
|
||||
|
||||
typedef typename private_smallest::best_fit_int_type<TYPE_INDEX>::type type;
|
||||
};
|
||||
|
||||
template <size_t NBITS>
|
||||
ETL_CONSTANT int smallest_int_for_value<NBITS>::TYPE_INDEX;
|
||||
template <intmax_t VALUE>
|
||||
ETL_CONSTANT int smallest_int_for_value<VALUE>::TYPE_INDEX;
|
||||
|
||||
#if ETL_USING_CPP11
|
||||
template <intmax_t VALUE>
|
||||
|
||||
@ -114,7 +114,7 @@ namespace etl
|
||||
typedef integral_constant<bool, false> false_type;
|
||||
typedef integral_constant<bool, true> true_type;
|
||||
|
||||
template <typename T, const T VALUE>
|
||||
template <typename T, T VALUE>
|
||||
const T integral_constant<T, VALUE>::value;
|
||||
|
||||
#if ETL_USING_CPP17
|
||||
@ -841,11 +841,6 @@ typedef integral_constant<bool, true> true_type;
|
||||
inline constexpr T integral_constant_v = std::integral_constant<T, VALUE>::value;
|
||||
#endif
|
||||
|
||||
#if ETL_USING_CPP17
|
||||
template <typename T, T VALUE>
|
||||
inline constexpr T integral_constant_v = std::integral_constant<T, VALUE>::value;
|
||||
#endif
|
||||
|
||||
#if ETL_USING_CPP17
|
||||
template <bool B>
|
||||
using bool_constant = std::bool_constant<B>;
|
||||
@ -864,9 +859,7 @@ typedef integral_constant<bool, true> true_type;
|
||||
///\ingroup type_traits
|
||||
#if ETL_USING_CPP17
|
||||
template <typename T>
|
||||
struct negation : std::negation<T>
|
||||
{
|
||||
};
|
||||
using negation = std::negation<T>;
|
||||
#else
|
||||
template <typename T>
|
||||
struct negation : etl::bool_constant<!bool(T::value)>
|
||||
|
||||
@ -86,16 +86,16 @@ namespace etl
|
||||
|
||||
public:
|
||||
|
||||
enum
|
||||
{
|
||||
ID = ID_
|
||||
};
|
||||
static ETL_CONSTANT etl::message_id_t ID = ID_;
|
||||
|
||||
ETL_NODISCARD etl::message_id_t get_message_id() const ETL_NOEXCEPT ETL_OVERRIDE
|
||||
{
|
||||
return ID;
|
||||
}
|
||||
};
|
||||
|
||||
template <etl::message_id_t ID_, typename TParent>
|
||||
ETL_CONSTANT etl::message_id_t message<ID_, TParent>::ID;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@ -526,12 +526,10 @@ namespace etl
|
||||
typename etl::enable_if<etl::is_base_of<etl::imessage, TMessage>::value, bool>::type
|
||||
accepts()
|
||||
{
|
||||
ETL_CONSTANT etl::message_id_t id = TMessage::ID;
|
||||
|
||||
return T1::ID == id || T2::ID == id || T3::ID == id || T4::ID == id ||
|
||||
T5::ID == id || T6::ID == id || T7::ID == id || T8::ID == id ||
|
||||
T9::ID == id || T10::ID == id || T11::ID == id || T12::ID == id ||
|
||||
T13::ID == id || T14::ID == id || T15::ID == id || T16::ID == id;
|
||||
return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
|
||||
T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
|
||||
T9::ID == TMessage::ID || T10::ID == TMessage::ID || T11::ID == TMessage::ID || T12::ID == TMessage::ID ||
|
||||
T13::ID == TMessage::ID || T14::ID == TMessage::ID || T15::ID == TMessage::ID || T16::ID == TMessage::ID;
|
||||
}
|
||||
|
||||
enum
|
||||
@ -819,12 +817,10 @@ namespace etl
|
||||
typename etl::enable_if<etl::is_base_of<etl::imessage, TMessage>::value, bool>::type
|
||||
accepts()
|
||||
{
|
||||
ETL_CONSTANT etl::message_id_t id = TMessage::ID;
|
||||
|
||||
return T1::ID == id || T2::ID == id || T3::ID == id || T4::ID == id ||
|
||||
T5::ID == id || T6::ID == id || T7::ID == id || T8::ID == id ||
|
||||
T9::ID == id || T10::ID == id || T11::ID == id || T12::ID == id ||
|
||||
T13::ID == id || T14::ID == id || T15::ID == id;
|
||||
return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
|
||||
T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
|
||||
T9::ID == TMessage::ID || T10::ID == TMessage::ID || T11::ID == TMessage::ID || T12::ID == TMessage::ID ||
|
||||
T13::ID == TMessage::ID || T14::ID == TMessage::ID || T15::ID == TMessage::ID;
|
||||
}
|
||||
|
||||
enum
|
||||
@ -1110,12 +1106,10 @@ namespace etl
|
||||
typename etl::enable_if<etl::is_base_of<etl::imessage, TMessage>::value, bool>::type
|
||||
accepts()
|
||||
{
|
||||
ETL_CONSTANT etl::message_id_t id = TMessage::ID;
|
||||
|
||||
return T1::ID == id || T2::ID == id || T3::ID == id || T4::ID == id ||
|
||||
T5::ID == id || T6::ID == id || T7::ID == id || T8::ID == id ||
|
||||
T9::ID == id || T10::ID == id || T11::ID == id || T12::ID == id ||
|
||||
T13::ID == id || T14::ID == id;
|
||||
return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
|
||||
T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
|
||||
T9::ID == TMessage::ID || T10::ID == TMessage::ID || T11::ID == TMessage::ID || T12::ID == TMessage::ID ||
|
||||
T13::ID == TMessage::ID || T14::ID == TMessage::ID;
|
||||
}
|
||||
|
||||
enum
|
||||
@ -1399,12 +1393,10 @@ namespace etl
|
||||
typename etl::enable_if<etl::is_base_of<etl::imessage, TMessage>::value, bool>::type
|
||||
accepts()
|
||||
{
|
||||
ETL_CONSTANT etl::message_id_t id = TMessage::ID;
|
||||
|
||||
return T1::ID == id || T2::ID == id || T3::ID == id || T4::ID == id ||
|
||||
T5::ID == id || T6::ID == id || T7::ID == id || T8::ID == id ||
|
||||
T9::ID == id || T10::ID == id || T11::ID == id || T12::ID == id ||
|
||||
T13::ID == id;
|
||||
return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
|
||||
T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
|
||||
T9::ID == TMessage::ID || T10::ID == TMessage::ID || T11::ID == TMessage::ID || T12::ID == TMessage::ID ||
|
||||
T13::ID == TMessage::ID;
|
||||
}
|
||||
|
||||
enum
|
||||
@ -1683,11 +1675,9 @@ namespace etl
|
||||
typename etl::enable_if<etl::is_base_of<etl::imessage, TMessage>::value, bool>::type
|
||||
accepts()
|
||||
{
|
||||
ETL_CONSTANT etl::message_id_t id = TMessage::ID;
|
||||
|
||||
return T1::ID == id || T2::ID == id || T3::ID == id || T4::ID == id ||
|
||||
T5::ID == id || T6::ID == id || T7::ID == id || T8::ID == id ||
|
||||
T9::ID == id || T10::ID == id || T11::ID == id || T12::ID == id;
|
||||
return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
|
||||
T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
|
||||
T9::ID == TMessage::ID || T10::ID == TMessage::ID || T11::ID == TMessage::ID || T12::ID == TMessage::ID;
|
||||
}
|
||||
|
||||
enum
|
||||
@ -1964,11 +1954,9 @@ namespace etl
|
||||
typename etl::enable_if<etl::is_base_of<etl::imessage, TMessage>::value, bool>::type
|
||||
accepts()
|
||||
{
|
||||
ETL_CONSTANT etl::message_id_t id = TMessage::ID;
|
||||
|
||||
return T1::ID == id || T2::ID == id || T3::ID == id || T4::ID == id ||
|
||||
T5::ID == id || T6::ID == id || T7::ID == id || T8::ID == id ||
|
||||
T9::ID == id || T10::ID == id || T11::ID == id;
|
||||
return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
|
||||
T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
|
||||
T9::ID == TMessage::ID || T10::ID == TMessage::ID || T11::ID == TMessage::ID;
|
||||
}
|
||||
|
||||
enum
|
||||
@ -2243,11 +2231,9 @@ namespace etl
|
||||
typename etl::enable_if<etl::is_base_of<etl::imessage, TMessage>::value, bool>::type
|
||||
accepts()
|
||||
{
|
||||
ETL_CONSTANT etl::message_id_t id = TMessage::ID;
|
||||
|
||||
return T1::ID == id || T2::ID == id || T3::ID == id || T4::ID == id ||
|
||||
T5::ID == id || T6::ID == id || T7::ID == id || T8::ID == id ||
|
||||
T9::ID == id || T10::ID == id;
|
||||
return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
|
||||
T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
|
||||
T9::ID == TMessage::ID || T10::ID == TMessage::ID;
|
||||
}
|
||||
|
||||
enum
|
||||
@ -2520,11 +2506,9 @@ namespace etl
|
||||
typename etl::enable_if<etl::is_base_of<etl::imessage, TMessage>::value, bool>::type
|
||||
accepts()
|
||||
{
|
||||
ETL_CONSTANT etl::message_id_t id = TMessage::ID;
|
||||
|
||||
return T1::ID == id || T2::ID == id || T3::ID == id || T4::ID == id ||
|
||||
T5::ID == id || T6::ID == id || T7::ID == id || T8::ID == id ||
|
||||
T9::ID == id;
|
||||
return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
|
||||
T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
|
||||
T9::ID == TMessage::ID;
|
||||
}
|
||||
|
||||
enum
|
||||
@ -2792,10 +2776,8 @@ namespace etl
|
||||
typename etl::enable_if<etl::is_base_of<etl::imessage, TMessage>::value, bool>::type
|
||||
accepts()
|
||||
{
|
||||
ETL_CONSTANT etl::message_id_t id = TMessage::ID;
|
||||
|
||||
return T1::ID == id || T2::ID == id || T3::ID == id || T4::ID == id ||
|
||||
T5::ID == id || T6::ID == id || T7::ID == id || T8::ID == id;
|
||||
return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
|
||||
T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID;
|
||||
}
|
||||
|
||||
enum
|
||||
@ -3061,10 +3043,8 @@ namespace etl
|
||||
typename etl::enable_if<etl::is_base_of<etl::imessage, TMessage>::value, bool>::type
|
||||
accepts()
|
||||
{
|
||||
ETL_CONSTANT etl::message_id_t id = TMessage::ID;
|
||||
|
||||
return T1::ID == id || T2::ID == id || T3::ID == id || T4::ID == id ||
|
||||
T5::ID == id || T6::ID == id || T7::ID == id;
|
||||
return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
|
||||
T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID;
|
||||
}
|
||||
|
||||
enum
|
||||
@ -3328,10 +3308,8 @@ namespace etl
|
||||
typename etl::enable_if<etl::is_base_of<etl::imessage, TMessage>::value, bool>::type
|
||||
accepts()
|
||||
{
|
||||
ETL_CONSTANT etl::message_id_t id = TMessage::ID;
|
||||
|
||||
return T1::ID == id || T2::ID == id || T3::ID == id || T4::ID == id ||
|
||||
T5::ID == id || T6::ID == id;
|
||||
return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
|
||||
T5::ID == TMessage::ID || T6::ID == TMessage::ID;
|
||||
}
|
||||
|
||||
enum
|
||||
@ -3593,10 +3571,8 @@ namespace etl
|
||||
typename etl::enable_if<etl::is_base_of<etl::imessage, TMessage>::value, bool>::type
|
||||
accepts()
|
||||
{
|
||||
ETL_CONSTANT etl::message_id_t id = TMessage::ID;
|
||||
|
||||
return T1::ID == id || T2::ID == id || T3::ID == id || T4::ID == id ||
|
||||
T5::ID == id;
|
||||
return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
|
||||
T5::ID == TMessage::ID;
|
||||
}
|
||||
|
||||
enum
|
||||
@ -3853,9 +3829,7 @@ namespace etl
|
||||
typename etl::enable_if<etl::is_base_of<etl::imessage, TMessage>::value, bool>::type
|
||||
accepts()
|
||||
{
|
||||
ETL_CONSTANT etl::message_id_t id = TMessage::ID;
|
||||
|
||||
return T1::ID == id || T2::ID == id || T3::ID == id || T4::ID == id;
|
||||
return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID;
|
||||
}
|
||||
|
||||
enum
|
||||
@ -4110,9 +4084,7 @@ namespace etl
|
||||
typename etl::enable_if<etl::is_base_of<etl::imessage, TMessage>::value, bool>::type
|
||||
accepts()
|
||||
{
|
||||
ETL_CONSTANT etl::message_id_t id = TMessage::ID;
|
||||
|
||||
return T1::ID == id || T2::ID == id || T3::ID == id;
|
||||
return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID;
|
||||
}
|
||||
|
||||
enum
|
||||
@ -4365,9 +4337,7 @@ namespace etl
|
||||
typename etl::enable_if<etl::is_base_of<etl::imessage, TMessage>::value, bool>::type
|
||||
accepts()
|
||||
{
|
||||
ETL_CONSTANT etl::message_id_t id = TMessage::ID;
|
||||
|
||||
return T1::ID == id || T2::ID == id;
|
||||
return T1::ID == TMessage::ID || T2::ID == TMessage::ID;
|
||||
}
|
||||
|
||||
enum
|
||||
@ -4618,9 +4588,7 @@ namespace etl
|
||||
typename etl::enable_if<etl::is_base_of<etl::imessage, TMessage>::value, bool>::type
|
||||
accepts()
|
||||
{
|
||||
ETL_CONSTANT etl::message_id_t id = TMessage::ID;
|
||||
|
||||
return T1::ID == id;
|
||||
return T1::ID == TMessage::ID;
|
||||
}
|
||||
|
||||
enum
|
||||
|
||||
@ -133,9 +133,9 @@ namespace etl
|
||||
/// For pointers.
|
||||
//***************************************************************************
|
||||
template <typename T>
|
||||
ETL_CONSTEXPR typename etl::enable_if<etl::is_pointer<T>::value&&
|
||||
!etl::is_integral<T>::value &&
|
||||
!etl::is_floating_point<T>::value, T>::type
|
||||
ETL_CONSTEXPR14 typename etl::enable_if<etl::is_pointer<T>::value&&
|
||||
!etl::is_integral<T>::value &&
|
||||
!etl::is_floating_point<T>::value, T>::type
|
||||
midpoint(T a, T b) ETL_NOEXCEPT
|
||||
{
|
||||
if (a > b)
|
||||
@ -153,7 +153,7 @@ namespace etl
|
||||
/// For ETL random access iterators.
|
||||
//***************************************************************************
|
||||
template <typename T>
|
||||
ETL_CONSTEXPR T midpoint(T a, T b, typename etl::enable_if<!etl::is_pointer<T>::value &&
|
||||
ETL_CONSTEXPR14 T midpoint(T a, T b, typename etl::enable_if<!etl::is_pointer<T>::value &&
|
||||
!etl::is_integral<T>::value &&
|
||||
!etl::is_floating_point<T>::value &&
|
||||
etl::is_same<typename etl::iterator_traits<T>::iterator_category, ETL_OR_STD::random_access_iterator_tag>::value , int>::type = 0)
|
||||
@ -174,11 +174,11 @@ namespace etl
|
||||
/// Parameter 'a' must be before 'b', otherwise the result is undefined.
|
||||
//***************************************************************************
|
||||
template <typename T>
|
||||
ETL_CONSTEXPR T midpoint(T a, T b, typename etl::enable_if<(!etl::is_pointer<T>::value &&
|
||||
!etl::is_integral<T>::value &&
|
||||
!etl::is_floating_point<T>::value &&
|
||||
(etl::is_same<typename etl::iterator_traits<T>::iterator_category, ETL_OR_STD::forward_iterator_tag>::value ||
|
||||
etl::is_same<typename etl::iterator_traits<T>::iterator_category, ETL_OR_STD::bidirectional_iterator_tag>::value)), int>::type = 0)
|
||||
ETL_CONSTEXPR14 T midpoint(T a, T b, typename etl::enable_if<(!etl::is_pointer<T>::value &&
|
||||
!etl::is_integral<T>::value &&
|
||||
!etl::is_floating_point<T>::value &&
|
||||
(etl::is_same<typename etl::iterator_traits<T>::iterator_category, ETL_OR_STD::forward_iterator_tag>::value ||
|
||||
etl::is_same<typename etl::iterator_traits<T>::iterator_category, ETL_OR_STD::bidirectional_iterator_tag>::value)), int>::type = 0)
|
||||
{
|
||||
etl::advance(a, etl::distance(a, b) / 2U);
|
||||
return a;
|
||||
|
||||
@ -589,7 +589,7 @@ namespace etl
|
||||
typedef typename char_ptr_type<TBase>::type char_ptr_t;
|
||||
|
||||
//***************************************************************************
|
||||
ETL_CONSTEXPR pointer element_at(size_t index) const ETL_NOEXCEPT
|
||||
pointer element_at(size_t index) const ETL_NOEXCEPT
|
||||
{
|
||||
char_ptr_t base = reinterpret_cast<char_ptr_t>(pbegin);
|
||||
return reinterpret_cast<pointer>(base + (index * element_size));
|
||||
@ -599,7 +599,7 @@ namespace etl
|
||||
/// Construct from iterator + offset + element size
|
||||
/// extent_ is ignored.
|
||||
//*************************************************************************
|
||||
ETL_CONSTEXPR poly_span(TBase* pbegin_, size_t offset_, size_t /*extent_*/, size_t element_size_) ETL_NOEXCEPT
|
||||
poly_span(TBase* pbegin_, size_t offset_, size_t /*extent_*/, size_t element_size_) ETL_NOEXCEPT
|
||||
: pbegin(reinterpret_cast<pointer>(reinterpret_cast<char_ptr_t>(pbegin_) + (offset_ * element_size_)))
|
||||
, element_size(element_size_)
|
||||
{
|
||||
@ -957,7 +957,7 @@ protected:
|
||||
//*************************************************************************
|
||||
/// Construct from iterator + offset + size + element size
|
||||
//*************************************************************************
|
||||
ETL_CONSTEXPR poly_span(TBase* pbegin_, size_t offset_, size_t extent_, size_t element_size_) ETL_NOEXCEPT
|
||||
poly_span(TBase* pbegin_, size_t offset_, size_t extent_, size_t element_size_) ETL_NOEXCEPT
|
||||
: pbegin(reinterpret_cast<pointer>(reinterpret_cast<char_ptr_t>(pbegin_) + (offset_ * element_size_)))
|
||||
, element_size(element_size_)
|
||||
, span_extent(extent_)
|
||||
@ -976,7 +976,7 @@ protected:
|
||||
typedef typename char_ptr_type<TBase>::type char_ptr_t;
|
||||
|
||||
//***************************************************************************
|
||||
ETL_CONSTEXPR pointer element_at(size_t index) const ETL_NOEXCEPT
|
||||
pointer element_at(size_t index) const ETL_NOEXCEPT
|
||||
{
|
||||
char_ptr_t base = reinterpret_cast<char_ptr_t>(pbegin);
|
||||
return reinterpret_cast<pointer>(base + (index * element_size));
|
||||
|
||||
@ -175,7 +175,7 @@ SOFTWARE.
|
||||
#endif
|
||||
|
||||
#if !defined(ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED)
|
||||
#define ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED ETL_USING_CPP14
|
||||
#define ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED ETL_USING_CPP11
|
||||
#endif
|
||||
|
||||
// Language standard
|
||||
|
||||
@ -352,17 +352,17 @@ namespace etl
|
||||
private:
|
||||
|
||||
// Determines the index of the best unsigned type for the required value.
|
||||
static ETL_CONSTANT int TYPE_INDEX = ((VALUE > UINT_LEAST8_MAX) ? 1 : 0) +
|
||||
((VALUE > UINT16_MAX) ? 1 : 0) +
|
||||
((VALUE > UINT32_MAX) ? 1 : 0);
|
||||
static ETL_CONSTANT int TYPE_INDEX = ((VALUE > UINT_LEAST8_MAX) ? 1 : 0) +
|
||||
((VALUE > UINT16_MAX) ? 1 : 0) +
|
||||
((VALUE > UINT32_MAX) ? 1 : 0);
|
||||
|
||||
public:
|
||||
|
||||
typedef typename private_smallest::best_fit_uint_type<TYPE_INDEX>::type type;
|
||||
};
|
||||
|
||||
template <uintmax_t NBITS>
|
||||
ETL_CONSTANT int smallest_uint_for_value<NBITS>::TYPE_INDEX;
|
||||
template <uintmax_t VALUE>
|
||||
ETL_CONSTANT int smallest_uint_for_value<VALUE>::TYPE_INDEX;
|
||||
|
||||
#if ETL_USING_CPP11
|
||||
template <uintmax_t VALUE>
|
||||
@ -382,16 +382,16 @@ namespace etl
|
||||
|
||||
// Determines the index of the best signed type for the required value.
|
||||
static ETL_CONSTANT int TYPE_INDEX = (((VALUE > intmax_t(INT_LEAST8_MAX)) || (VALUE < intmax_t(INT_LEAST8_MIN))) ? 1 : 0) +
|
||||
(((VALUE > intmax_t(INT16_MAX)) || (VALUE < intmax_t(INT16_MIN))) ? 1 : 0) +
|
||||
(((VALUE > intmax_t(INT32_MAX)) || (VALUE < intmax_t(INT32_MIN))) ? 1 : 0);
|
||||
(((VALUE > intmax_t(INT16_MAX)) || (VALUE < intmax_t(INT16_MIN))) ? 1 : 0) +
|
||||
(((VALUE > intmax_t(INT32_MAX)) || (VALUE < intmax_t(INT32_MIN))) ? 1 : 0);
|
||||
|
||||
public:
|
||||
|
||||
typedef typename private_smallest::best_fit_int_type<TYPE_INDEX>::type type;
|
||||
};
|
||||
|
||||
template <intmax_t NBITS>
|
||||
ETL_CONSTANT int smallest_int_for_value<NBITS>::TYPE_INDEX;
|
||||
template <intmax_t VALUE>
|
||||
ETL_CONSTANT int smallest_int_for_value<VALUE>::TYPE_INDEX;
|
||||
|
||||
#if ETL_USING_CPP11
|
||||
template <intmax_t VALUE>
|
||||
|
||||
@ -326,7 +326,7 @@ namespace etl
|
||||
//*************************************************************************
|
||||
/// Returns a const reference to the indexed value.
|
||||
//*************************************************************************
|
||||
ETL_CONSTEXPR const_reference at(size_t i) const
|
||||
const_reference at(size_t i) const
|
||||
{
|
||||
ETL_ASSERT((mbegin != ETL_NULLPTR && mend != ETL_NULLPTR), ETL_ERROR(string_view_uninitialised));
|
||||
ETL_ASSERT(i < size(), ETL_ERROR(string_view_bounds));
|
||||
|
||||
@ -813,11 +813,11 @@ namespace etl
|
||||
// Traits are derived from the STL
|
||||
//*****************************************************************************
|
||||
|
||||
//***************************************************************************
|
||||
/// integral_constant
|
||||
///\ingroup type_traits
|
||||
template <typename T, T VALUE>
|
||||
struct integral_constant : std::integral_constant<T, VALUE> {};
|
||||
//***************************************************************************
|
||||
/// integral_constant
|
||||
///\ingroup type_traits
|
||||
template <typename T, T VALUE>
|
||||
struct integral_constant : std::integral_constant<T, VALUE> {};
|
||||
|
||||
/// integral_constant specialisations
|
||||
///\ingroup type_traits
|
||||
|
||||
@ -36,7 +36,7 @@ class Container
|
||||
public:
|
||||
|
||||
//#if ETL_USING_INITIALIZER_LIST
|
||||
constexpr Container(std::initializer_list<T> init)
|
||||
ETL_CONSTEXPR14 Container(std::initializer_list<T> init)
|
||||
: length(init.size())
|
||||
, buffer()
|
||||
{
|
||||
@ -76,7 +76,7 @@ int main()
|
||||
|
||||
if (c.length != 5) result = 6;
|
||||
|
||||
constexpr Container<int> cc = { 1, 2, 3, 4, 5 };
|
||||
ETL_CONSTEXPR14 Container<int> cc = { 1, 2, 3, 4, 5 };
|
||||
|
||||
if (cc[0] != 1) result = 7;
|
||||
if (cc[1] != 2) result = 8;
|
||||
|
||||
@ -700,7 +700,7 @@ namespace
|
||||
{
|
||||
auto data = etl::make_array<char>(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
|
||||
|
||||
using Type = std::remove_reference_t<decltype(data[0])>;
|
||||
using Type = etl::remove_reference_t<decltype(data[0])>;
|
||||
CHECK((std::is_same<char, Type>::value));
|
||||
|
||||
CHECK_EQUAL(0, data[0]);
|
||||
@ -722,7 +722,7 @@ namespace
|
||||
{
|
||||
auto data = etl::make_array<Moveable>(Moveable(0), Moveable(1), Moveable(2), Moveable(3), Moveable(4), Moveable(5), Moveable(6), Moveable(7), Moveable(8), Moveable(9));
|
||||
|
||||
using Type = std::remove_reference_t<decltype(data[0])>;
|
||||
using Type = etl::remove_reference_t<decltype(data[0])>;
|
||||
CHECK((std::is_same<Moveable, Type>::value));
|
||||
|
||||
CHECK_EQUAL(Moveable(0), data[0]);
|
||||
|
||||
@ -2421,15 +2421,15 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_make_lsb_mask_8_bit)
|
||||
{
|
||||
constexpr int8_t mask0 = etl::make_lsb_mask<int8_t>(0);
|
||||
constexpr int8_t mask1 = etl::make_lsb_mask<int8_t>(1);
|
||||
constexpr int8_t mask2 = etl::make_lsb_mask<int8_t>(2);
|
||||
constexpr int8_t mask3 = etl::make_lsb_mask<int8_t>(3);
|
||||
constexpr int8_t mask4 = etl::make_lsb_mask<int8_t>(4);
|
||||
constexpr int8_t mask5 = etl::make_lsb_mask<int8_t>(5);
|
||||
constexpr int8_t mask6 = etl::make_lsb_mask<int8_t>(6);
|
||||
constexpr int8_t mask7 = etl::make_lsb_mask<int8_t>(7);
|
||||
constexpr int8_t mask8 = etl::make_lsb_mask<int8_t>(8);
|
||||
ETL_CONSTEXPR14 int8_t mask0 = etl::make_lsb_mask<int8_t>(0);
|
||||
ETL_CONSTEXPR14 int8_t mask1 = etl::make_lsb_mask<int8_t>(1);
|
||||
ETL_CONSTEXPR14 int8_t mask2 = etl::make_lsb_mask<int8_t>(2);
|
||||
ETL_CONSTEXPR14 int8_t mask3 = etl::make_lsb_mask<int8_t>(3);
|
||||
ETL_CONSTEXPR14 int8_t mask4 = etl::make_lsb_mask<int8_t>(4);
|
||||
ETL_CONSTEXPR14 int8_t mask5 = etl::make_lsb_mask<int8_t>(5);
|
||||
ETL_CONSTEXPR14 int8_t mask6 = etl::make_lsb_mask<int8_t>(6);
|
||||
ETL_CONSTEXPR14 int8_t mask7 = etl::make_lsb_mask<int8_t>(7);
|
||||
ETL_CONSTEXPR14 int8_t mask8 = etl::make_lsb_mask<int8_t>(8);
|
||||
|
||||
CHECK(int8_t(etl::b00000000) == mask0);
|
||||
CHECK(int8_t(etl::b00000001) == mask1);
|
||||
@ -2455,15 +2455,15 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_make_lsb_mask_64_bit)
|
||||
{
|
||||
constexpr int64_t mask0 = etl::make_lsb_mask<int64_t>(0);
|
||||
constexpr int64_t mask1 = etl::make_lsb_mask<int64_t>(8);
|
||||
constexpr int64_t mask2 = etl::make_lsb_mask<int64_t>(16);
|
||||
constexpr int64_t mask3 = etl::make_lsb_mask<int64_t>(24);
|
||||
constexpr int64_t mask4 = etl::make_lsb_mask<int64_t>(32);
|
||||
constexpr int64_t mask5 = etl::make_lsb_mask<int64_t>(40);
|
||||
constexpr int64_t mask6 = etl::make_lsb_mask<int64_t>(48);
|
||||
constexpr int64_t mask7 = etl::make_lsb_mask<int64_t>(56);
|
||||
constexpr int64_t mask8 = etl::make_lsb_mask<int64_t>(64);
|
||||
ETL_CONSTEXPR14 int64_t mask0 = etl::make_lsb_mask<int64_t>(0);
|
||||
ETL_CONSTEXPR14 int64_t mask1 = etl::make_lsb_mask<int64_t>(8);
|
||||
ETL_CONSTEXPR14 int64_t mask2 = etl::make_lsb_mask<int64_t>(16);
|
||||
ETL_CONSTEXPR14 int64_t mask3 = etl::make_lsb_mask<int64_t>(24);
|
||||
ETL_CONSTEXPR14 int64_t mask4 = etl::make_lsb_mask<int64_t>(32);
|
||||
ETL_CONSTEXPR14 int64_t mask5 = etl::make_lsb_mask<int64_t>(40);
|
||||
ETL_CONSTEXPR14 int64_t mask6 = etl::make_lsb_mask<int64_t>(48);
|
||||
ETL_CONSTEXPR14 int64_t mask7 = etl::make_lsb_mask<int64_t>(56);
|
||||
ETL_CONSTEXPR14 int64_t mask8 = etl::make_lsb_mask<int64_t>(64);
|
||||
|
||||
CHECK_EQUAL(int64_t(0x0000000000000000), mask0);
|
||||
CHECK_EQUAL(int64_t(0x00000000000000FF), mask1);
|
||||
@ -2517,15 +2517,15 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_make_msb_mask_8_bit)
|
||||
{
|
||||
constexpr int8_t mask0 = etl::make_msb_mask<int8_t>(0);
|
||||
constexpr int8_t mask1 = etl::make_msb_mask<int8_t>(1);
|
||||
constexpr int8_t mask2 = etl::make_msb_mask<int8_t>(2);
|
||||
constexpr int8_t mask3 = etl::make_msb_mask<int8_t>(3);
|
||||
constexpr int8_t mask4 = etl::make_msb_mask<int8_t>(4);
|
||||
constexpr int8_t mask5 = etl::make_msb_mask<int8_t>(5);
|
||||
constexpr int8_t mask6 = etl::make_msb_mask<int8_t>(6);
|
||||
constexpr int8_t mask7 = etl::make_msb_mask<int8_t>(7);
|
||||
constexpr int8_t mask8 = etl::make_msb_mask<int8_t>(8);
|
||||
ETL_CONSTEXPR14 int8_t mask0 = etl::make_msb_mask<int8_t>(0);
|
||||
ETL_CONSTEXPR14 int8_t mask1 = etl::make_msb_mask<int8_t>(1);
|
||||
ETL_CONSTEXPR14 int8_t mask2 = etl::make_msb_mask<int8_t>(2);
|
||||
ETL_CONSTEXPR14 int8_t mask3 = etl::make_msb_mask<int8_t>(3);
|
||||
ETL_CONSTEXPR14 int8_t mask4 = etl::make_msb_mask<int8_t>(4);
|
||||
ETL_CONSTEXPR14 int8_t mask5 = etl::make_msb_mask<int8_t>(5);
|
||||
ETL_CONSTEXPR14 int8_t mask6 = etl::make_msb_mask<int8_t>(6);
|
||||
ETL_CONSTEXPR14 int8_t mask7 = etl::make_msb_mask<int8_t>(7);
|
||||
ETL_CONSTEXPR14 int8_t mask8 = etl::make_msb_mask<int8_t>(8);
|
||||
|
||||
CHECK(int8_t(etl::b00000000) == mask0);
|
||||
CHECK(int8_t(etl::b10000000) == mask1);
|
||||
@ -2551,15 +2551,15 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_make_msb_mask_64_bit)
|
||||
{
|
||||
constexpr int64_t mask0 = etl::make_msb_mask<int64_t>(0);
|
||||
constexpr int64_t mask1 = etl::make_msb_mask<int64_t>(8);
|
||||
constexpr int64_t mask2 = etl::make_msb_mask<int64_t>(16);
|
||||
constexpr int64_t mask3 = etl::make_msb_mask<int64_t>(24);
|
||||
constexpr int64_t mask4 = etl::make_msb_mask<int64_t>(32);
|
||||
constexpr int64_t mask5 = etl::make_msb_mask<int64_t>(40);
|
||||
constexpr int64_t mask6 = etl::make_msb_mask<int64_t>(48);
|
||||
constexpr int64_t mask7 = etl::make_msb_mask<int64_t>(56);
|
||||
constexpr int64_t mask8 = etl::make_msb_mask<int64_t>(64);
|
||||
ETL_CONSTEXPR14 int64_t mask0 = etl::make_msb_mask<int64_t>(0);
|
||||
ETL_CONSTEXPR14 int64_t mask1 = etl::make_msb_mask<int64_t>(8);
|
||||
ETL_CONSTEXPR14 int64_t mask2 = etl::make_msb_mask<int64_t>(16);
|
||||
ETL_CONSTEXPR14 int64_t mask3 = etl::make_msb_mask<int64_t>(24);
|
||||
ETL_CONSTEXPR14 int64_t mask4 = etl::make_msb_mask<int64_t>(32);
|
||||
ETL_CONSTEXPR14 int64_t mask5 = etl::make_msb_mask<int64_t>(40);
|
||||
ETL_CONSTEXPR14 int64_t mask6 = etl::make_msb_mask<int64_t>(48);
|
||||
ETL_CONSTEXPR14 int64_t mask7 = etl::make_msb_mask<int64_t>(56);
|
||||
ETL_CONSTEXPR14 int64_t mask8 = etl::make_msb_mask<int64_t>(64);
|
||||
|
||||
CHECK_EQUAL(int64_t(0x0000000000000000), mask0);
|
||||
CHECK_EQUAL(int64_t(0xFF00000000000000), mask1);
|
||||
|
||||
@ -1249,13 +1249,13 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_find_next_github_issue_617)
|
||||
{
|
||||
etl::bitset<64> bs1(0xC000'0000'0000'0031ULL);
|
||||
etl::bitset<64> bs1(0xC000000000000031ULL);
|
||||
size_t bs1fnt1 = bs1.find_next(true, 10);
|
||||
size_t bs1fnt2 = bs1.find_next(true, 59);
|
||||
CHECK_EQUAL(62U, bs1fnt1);
|
||||
CHECK_EQUAL(62U, bs1fnt2);
|
||||
|
||||
etl::bitset<64> bs2(0x3FFF'FFFF'FFFF'FFCEULL);
|
||||
etl::bitset<64> bs2(0x3FFFFFFFFFFFFFCEULL);
|
||||
size_t bs2fnf1 = bs2.find_next(false, 10);
|
||||
size_t bs2fnf2 = bs2.find_next(false, 59);
|
||||
CHECK_EQUAL(62U, bs2fnf1);
|
||||
|
||||
@ -44,7 +44,7 @@ namespace
|
||||
|
||||
//*************************************************************************
|
||||
template <size_t Active_Bits>
|
||||
constexpr etl::bitset<Active_Bits> generate_shift_left_bitset(ull value, size_t shift)
|
||||
ETL_CONSTEXPR14 etl::bitset<Active_Bits> generate_shift_left_bitset(ull value, size_t shift)
|
||||
{
|
||||
etl::bitset<Active_Bits> data(value);
|
||||
|
||||
@ -58,7 +58,7 @@ namespace
|
||||
|
||||
//*************************************************************************
|
||||
template <size_t Active_Bits>
|
||||
constexpr etl::bitset<Active_Bits> generate_shift_left_bitset_copy(ull value, size_t shift)
|
||||
ETL_CONSTEXPR14 etl::bitset<Active_Bits> generate_shift_left_bitset_copy(ull value, size_t shift)
|
||||
{
|
||||
etl::bitset<Active_Bits> data1(value);
|
||||
etl::bitset<Active_Bits> data2;
|
||||
@ -73,7 +73,7 @@ namespace
|
||||
|
||||
//*************************************************************************
|
||||
template <size_t Active_Bits>
|
||||
constexpr etl::bitset<Active_Bits> generate_shift_right_bitset(ull value, size_t shift)
|
||||
ETL_CONSTEXPR14 etl::bitset<Active_Bits> generate_shift_right_bitset(ull value, size_t shift)
|
||||
{
|
||||
etl::bitset<Active_Bits> data(value);
|
||||
|
||||
@ -87,7 +87,7 @@ namespace
|
||||
|
||||
//*************************************************************************
|
||||
template <size_t Active_Bits>
|
||||
constexpr etl::bitset<Active_Bits> generate_shift_right_bitset_copy(ull value, size_t shift)
|
||||
ETL_CONSTEXPR14 etl::bitset<Active_Bits> generate_shift_right_bitset_copy(ull value, size_t shift)
|
||||
{
|
||||
etl::bitset<Active_Bits> data1(value);
|
||||
etl::bitset<Active_Bits> data2;
|
||||
@ -105,8 +105,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_default_constructor)
|
||||
{
|
||||
constexpr std::bitset<60> compare;
|
||||
constexpr etl::bitset<60> data;
|
||||
ETL_CONSTEXPR14 std::bitset<60> compare;
|
||||
ETL_CONSTEXPR14 etl::bitset<60> data;
|
||||
|
||||
CHECK_EQUAL(compare.size(), data.size());
|
||||
CHECK_EQUAL(compare.count(), data.count());
|
||||
@ -822,8 +822,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_construct_from_value)
|
||||
{
|
||||
constexpr std::bitset<60> compare(0x123456731234567ULL);
|
||||
constexpr etl::bitset<60> data(0x123456731234567ULL);
|
||||
ETL_CONSTEXPR14 std::bitset<60> compare(0x123456731234567ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<60> data(0x123456731234567ULL);
|
||||
|
||||
CHECK_EQUAL(compare.size(), data.size());
|
||||
CHECK_EQUAL(compare.count(), data.count());
|
||||
@ -837,9 +837,9 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_copy_construct)
|
||||
{
|
||||
constexpr std::bitset<60> compare(0x123456731234567ULL);
|
||||
constexpr etl::bitset<60> data(0x123456731234567ULL);
|
||||
constexpr etl::bitset<60> data_copy(data);
|
||||
ETL_CONSTEXPR14 std::bitset<60> compare(0x123456731234567ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<60> data(0x123456731234567ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<60> data_copy(data);
|
||||
|
||||
CHECK_EQUAL(compare.size(), data_copy.size());
|
||||
CHECK_EQUAL(compare.count(), data_copy.count());
|
||||
@ -853,8 +853,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_construct_from_excess_value)
|
||||
{
|
||||
constexpr std::bitset<60> compare(0x8765432187654321ULL);
|
||||
constexpr etl::bitset<60> data(0x8765432187654321ULL);
|
||||
ETL_CONSTEXPR14 std::bitset<60> compare(0x8765432187654321ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<60> data(0x8765432187654321ULL);
|
||||
|
||||
CHECK_EQUAL(compare.size(), data.size());
|
||||
CHECK_EQUAL(compare.count(), data.count());
|
||||
@ -1127,8 +1127,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_value_u16_min)
|
||||
{
|
||||
constexpr etl::bitset<16> data((unsigned long long)etl::integral_limits<uint16_t>::min);
|
||||
constexpr uint16_t value = data.value<uint16_t>();
|
||||
ETL_CONSTEXPR14 etl::bitset<16> data((unsigned long long)etl::integral_limits<uint16_t>::min);
|
||||
ETL_CONSTEXPR14 uint16_t value = data.value<uint16_t>();
|
||||
|
||||
CHECK_EQUAL(std::numeric_limits<uint16_t>::min(), value);
|
||||
}
|
||||
@ -1136,8 +1136,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_value_u16_max)
|
||||
{
|
||||
constexpr etl::bitset<16> data((unsigned long long)etl::integral_limits<uint16_t>::max);
|
||||
constexpr uint16_t value = data.value<uint16_t>();
|
||||
ETL_CONSTEXPR14 etl::bitset<16> data((unsigned long long)etl::integral_limits<uint16_t>::max);
|
||||
ETL_CONSTEXPR14 uint16_t value = data.value<uint16_t>();
|
||||
|
||||
CHECK_EQUAL(std::numeric_limits<uint16_t>::max(), value);
|
||||
}
|
||||
@ -1145,8 +1145,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_value_s16_min)
|
||||
{
|
||||
constexpr etl::bitset<16> data((unsigned long long)etl::integral_limits<int16_t>::min);
|
||||
constexpr int16_t value = data.value<int16_t>();
|
||||
ETL_CONSTEXPR14 etl::bitset<16> data((unsigned long long)etl::integral_limits<int16_t>::min);
|
||||
ETL_CONSTEXPR14 int16_t value = data.value<int16_t>();
|
||||
|
||||
CHECK_EQUAL(std::numeric_limits<int16_t>::min(), value);
|
||||
}
|
||||
@ -1154,8 +1154,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_value_s16_max)
|
||||
{
|
||||
constexpr etl::bitset<16> data((unsigned long long)etl::integral_limits<int16_t>::max);
|
||||
constexpr int16_t value = data.value<int16_t>();
|
||||
ETL_CONSTEXPR14 etl::bitset<16> data((unsigned long long)etl::integral_limits<int16_t>::max);
|
||||
ETL_CONSTEXPR14 int16_t value = data.value<int16_t>();
|
||||
|
||||
CHECK_EQUAL(std::numeric_limits<int16_t>::max(), value);
|
||||
}
|
||||
@ -1163,8 +1163,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_value_u32_min)
|
||||
{
|
||||
constexpr etl::bitset<32> data((unsigned long long)etl::integral_limits<uint32_t>::min);
|
||||
constexpr uint32_t value = data.value<uint32_t>();
|
||||
ETL_CONSTEXPR14 etl::bitset<32> data((unsigned long long)etl::integral_limits<uint32_t>::min);
|
||||
ETL_CONSTEXPR14 uint32_t value = data.value<uint32_t>();
|
||||
|
||||
CHECK_EQUAL(std::numeric_limits<uint32_t>::min(), value);
|
||||
}
|
||||
@ -1172,8 +1172,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_value_u32_max)
|
||||
{
|
||||
constexpr etl::bitset<32> data((unsigned long long)etl::integral_limits<uint32_t>::max);
|
||||
constexpr uint32_t value = data.value<uint32_t>();
|
||||
ETL_CONSTEXPR14 etl::bitset<32> data((unsigned long long)etl::integral_limits<uint32_t>::max);
|
||||
ETL_CONSTEXPR14 uint32_t value = data.value<uint32_t>();
|
||||
|
||||
CHECK_EQUAL(std::numeric_limits<uint32_t>::max(), value);
|
||||
}
|
||||
@ -1181,8 +1181,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_value_s32_min)
|
||||
{
|
||||
constexpr etl::bitset<32> data((unsigned long long)etl::integral_limits<int32_t>::min);
|
||||
constexpr int32_t value = data.value<int32_t>();
|
||||
ETL_CONSTEXPR14 etl::bitset<32> data((unsigned long long)etl::integral_limits<int32_t>::min);
|
||||
ETL_CONSTEXPR14 int32_t value = data.value<int32_t>();
|
||||
|
||||
CHECK_EQUAL(std::numeric_limits<int32_t>::min(), value);
|
||||
}
|
||||
@ -1190,8 +1190,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_value_s32_max)
|
||||
{
|
||||
constexpr etl::bitset<32> data((unsigned long long)etl::integral_limits<int32_t>::max);
|
||||
constexpr int32_t value = data.value<int32_t>();
|
||||
ETL_CONSTEXPR14 etl::bitset<32> data((unsigned long long)etl::integral_limits<int32_t>::max);
|
||||
ETL_CONSTEXPR14 int32_t value = data.value<int32_t>();
|
||||
|
||||
CHECK_EQUAL(std::numeric_limits<int32_t>::max(), value);
|
||||
}
|
||||
@ -1199,8 +1199,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_value_u64_min)
|
||||
{
|
||||
constexpr etl::bitset<64> data((unsigned long long)etl::integral_limits<uint64_t>::min);
|
||||
constexpr uint64_t value = data.value<uint64_t>();
|
||||
ETL_CONSTEXPR14 etl::bitset<64> data((unsigned long long)etl::integral_limits<uint64_t>::min);
|
||||
ETL_CONSTEXPR14 uint64_t value = data.value<uint64_t>();
|
||||
|
||||
CHECK_EQUAL(std::numeric_limits<uint64_t>::min(), value);
|
||||
}
|
||||
@ -1208,8 +1208,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_value_u64_max)
|
||||
{
|
||||
constexpr etl::bitset<64> data((unsigned long long)etl::integral_limits<uint64_t>::max);
|
||||
constexpr uint64_t value = data.value<uint64_t>();
|
||||
ETL_CONSTEXPR14 etl::bitset<64> data((unsigned long long)etl::integral_limits<uint64_t>::max);
|
||||
ETL_CONSTEXPR14 uint64_t value = data.value<uint64_t>();
|
||||
|
||||
CHECK_EQUAL(std::numeric_limits<uint64_t>::max(), value);
|
||||
}
|
||||
@ -1217,8 +1217,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_value_s64_min)
|
||||
{
|
||||
constexpr etl::bitset<64> data((unsigned long long)etl::integral_limits<int64_t>::min);
|
||||
constexpr int64_t value = data.value<int64_t>();
|
||||
ETL_CONSTEXPR14 etl::bitset<64> data((unsigned long long)etl::integral_limits<int64_t>::min);
|
||||
ETL_CONSTEXPR14 int64_t value = data.value<int64_t>();
|
||||
|
||||
CHECK_EQUAL(std::numeric_limits<int64_t>::min(), value);
|
||||
}
|
||||
@ -1226,8 +1226,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_value_s64_max)
|
||||
{
|
||||
constexpr etl::bitset<64> data((unsigned long long)etl::integral_limits<int64_t>::max);
|
||||
constexpr int64_t value = data.value<int64_t>();
|
||||
ETL_CONSTEXPR14 etl::bitset<64> data((unsigned long long)etl::integral_limits<int64_t>::max);
|
||||
ETL_CONSTEXPR14 int64_t value = data.value<int64_t>();
|
||||
|
||||
CHECK_EQUAL(std::numeric_limits<int64_t>::max(), value);
|
||||
}
|
||||
@ -1308,23 +1308,23 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_index_operator_read)
|
||||
{
|
||||
constexpr std::bitset<60> compare(0x3123456731234567ULL);
|
||||
constexpr etl::bitset<60> data(0x3123456731234567ULL);
|
||||
ETL_CONSTEXPR14 std::bitset<60> compare(0x3123456731234567ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<60> data(0x3123456731234567ULL);
|
||||
|
||||
constexpr bool bc0 = compare[1U];
|
||||
constexpr bool bd0 = data[1U];
|
||||
ETL_CONSTEXPR14 bool bc0 = compare[1U];
|
||||
ETL_CONSTEXPR14 bool bd0 = data[1U];
|
||||
CHECK_EQUAL(bc0, bd0);
|
||||
|
||||
constexpr bool bc3 = compare[3U];
|
||||
constexpr bool bd3 = data[3U];
|
||||
ETL_CONSTEXPR14 bool bc3 = compare[3U];
|
||||
ETL_CONSTEXPR14 bool bd3 = data[3U];
|
||||
CHECK_EQUAL(bc3, bd3);
|
||||
|
||||
constexpr bool bc7 = compare[7U];
|
||||
constexpr bool bd7 = data[7U];
|
||||
ETL_CONSTEXPR14 bool bc7 = compare[7U];
|
||||
ETL_CONSTEXPR14 bool bd7 = data[7U];
|
||||
CHECK_EQUAL(bc7, bd7);
|
||||
|
||||
constexpr bool bc13 = compare[13U];
|
||||
constexpr bool bd13 = data[13U];
|
||||
ETL_CONSTEXPR14 bool bc13 = compare[13U];
|
||||
ETL_CONSTEXPR14 bool bd13 = data[13U];
|
||||
CHECK_EQUAL(bc13, bd13);
|
||||
}
|
||||
|
||||
@ -1347,15 +1347,15 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_any)
|
||||
{
|
||||
constexpr etl::bitset<60> data1(ull(0x0000000000000000));
|
||||
constexpr etl::bitset<60> data2(ull(0x0000010000000000));
|
||||
constexpr etl::bitset<60> data3(ull(0x0000010001000100));
|
||||
constexpr etl::bitset<60> data4(ull(0x0FFFFFFFFFFFFFFF));
|
||||
ETL_CONSTEXPR14 etl::bitset<60> data1(ull(0x0000000000000000));
|
||||
ETL_CONSTEXPR14 etl::bitset<60> data2(ull(0x0000010000000000));
|
||||
ETL_CONSTEXPR14 etl::bitset<60> data3(ull(0x0000010001000100));
|
||||
ETL_CONSTEXPR14 etl::bitset<60> data4(ull(0x0FFFFFFFFFFFFFFF));
|
||||
|
||||
constexpr bool bd1 = data1.any();
|
||||
constexpr bool bd2 = data2.any();
|
||||
constexpr bool bd3 = data3.any();
|
||||
constexpr bool bd4 = data4.any();
|
||||
ETL_CONSTEXPR14 bool bd1 = data1.any();
|
||||
ETL_CONSTEXPR14 bool bd2 = data2.any();
|
||||
ETL_CONSTEXPR14 bool bd3 = data3.any();
|
||||
ETL_CONSTEXPR14 bool bd4 = data4.any();
|
||||
|
||||
CHECK_FALSE(bd1);
|
||||
CHECK_TRUE(bd2);
|
||||
@ -1366,15 +1366,15 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_none)
|
||||
{
|
||||
constexpr etl::bitset<60> data1(ull(0x0000000000000000));
|
||||
constexpr etl::bitset<60> data2(ull(0x0000010000000000));
|
||||
constexpr etl::bitset<60> data3(ull(0x0000010001000100));
|
||||
constexpr etl::bitset<60> data4(ull(0x0FFFFFFFFFFFFFFF));
|
||||
ETL_CONSTEXPR14 etl::bitset<60> data1(ull(0x0000000000000000));
|
||||
ETL_CONSTEXPR14 etl::bitset<60> data2(ull(0x0000010000000000));
|
||||
ETL_CONSTEXPR14 etl::bitset<60> data3(ull(0x0000010001000100));
|
||||
ETL_CONSTEXPR14 etl::bitset<60> data4(ull(0x0FFFFFFFFFFFFFFF));
|
||||
|
||||
constexpr bool bd1 = data1.none();
|
||||
constexpr bool bd2 = data2.none();
|
||||
constexpr bool bd3 = data3.none();
|
||||
constexpr bool bd4 = data4.none();
|
||||
ETL_CONSTEXPR14 bool bd1 = data1.none();
|
||||
ETL_CONSTEXPR14 bool bd2 = data2.none();
|
||||
ETL_CONSTEXPR14 bool bd3 = data3.none();
|
||||
ETL_CONSTEXPR14 bool bd4 = data4.none();
|
||||
|
||||
CHECK_TRUE(bd1);
|
||||
CHECK_FALSE(bd2);
|
||||
@ -1385,15 +1385,15 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_all)
|
||||
{
|
||||
constexpr etl::bitset<60> data1(ull(0x0000000000000000));
|
||||
constexpr etl::bitset<60> data2(ull(0x0000010000000000));
|
||||
constexpr etl::bitset<60> data3(ull(0x0000010001000100));
|
||||
constexpr etl::bitset<60> data4(ull(0x0FFFFFFFFFFFFFFF));
|
||||
ETL_CONSTEXPR14 etl::bitset<60> data1(ull(0x0000000000000000));
|
||||
ETL_CONSTEXPR14 etl::bitset<60> data2(ull(0x0000010000000000));
|
||||
ETL_CONSTEXPR14 etl::bitset<60> data3(ull(0x0000010001000100));
|
||||
ETL_CONSTEXPR14 etl::bitset<60> data4(ull(0x0FFFFFFFFFFFFFFF));
|
||||
|
||||
constexpr bool bd1 = data1.all();
|
||||
constexpr bool bd2 = data2.all();
|
||||
constexpr bool bd3 = data3.all();
|
||||
constexpr bool bd4 = data4.all();
|
||||
ETL_CONSTEXPR14 bool bd1 = data1.all();
|
||||
ETL_CONSTEXPR14 bool bd2 = data2.all();
|
||||
ETL_CONSTEXPR14 bool bd3 = data3.all();
|
||||
ETL_CONSTEXPR14 bool bd4 = data4.all();
|
||||
|
||||
CHECK_FALSE(bd1);
|
||||
CHECK_FALSE(bd2);
|
||||
@ -1494,12 +1494,12 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_equality_operator)
|
||||
{
|
||||
constexpr etl::bitset<60> data1(0x123456781234567ULL);
|
||||
constexpr etl::bitset<60> data2(0x123456781234567ULL);
|
||||
constexpr etl::bitset<60> data3;
|
||||
ETL_CONSTEXPR14 etl::bitset<60> data1(0x123456781234567ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<60> data2(0x123456781234567ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<60> data3;
|
||||
|
||||
constexpr bool equal = (data1 == data2);
|
||||
constexpr bool not_equal = !(data1 == data3);
|
||||
ETL_CONSTEXPR14 bool equal = (data1 == data2);
|
||||
ETL_CONSTEXPR14 bool not_equal = !(data1 == data3);
|
||||
|
||||
CHECK(equal);
|
||||
CHECK(not_equal);
|
||||
@ -1508,12 +1508,12 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_inequality_operator)
|
||||
{
|
||||
constexpr etl::bitset<60> data1(0x123456781234567ULL);
|
||||
constexpr etl::bitset<60> data2(0x123456781234567ULL);
|
||||
constexpr etl::bitset<60> data3;
|
||||
ETL_CONSTEXPR14 etl::bitset<60> data1(0x123456781234567ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<60> data2(0x123456781234567ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<60> data3;
|
||||
|
||||
constexpr bool equal = !(data1 != data2);
|
||||
constexpr bool not_equal = (data1 != data3);
|
||||
ETL_CONSTEXPR14 bool equal = !(data1 != data2);
|
||||
ETL_CONSTEXPR14 bool not_equal = (data1 != data3);
|
||||
|
||||
CHECK(equal);
|
||||
CHECK(not_equal);
|
||||
@ -1522,9 +1522,9 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_shift_left_operator)
|
||||
{
|
||||
constexpr etl::bitset<60> shift1(0x2468ACF0ULL);
|
||||
constexpr etl::bitset<60> shift2(0x48D159E0ULL);
|
||||
constexpr etl::bitset<60> shift11(0x91A2B3C000ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<60> shift1(0x2468ACF0ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<60> shift2(0x48D159E0ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<60> shift11(0x91A2B3C000ULL);
|
||||
|
||||
CHECK(generate_shift_left_bitset<60>(0x12345678ULL, 1U) == shift1);
|
||||
CHECK(generate_shift_left_bitset<60>(0x12345678ULL, 2U) == shift2);
|
||||
@ -1534,8 +1534,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_shift_left_operator_overflow)
|
||||
{
|
||||
constexpr etl::bitset<31> data(generate_shift_left_bitset<31>(0x7FFFFFFFULL, 1U));
|
||||
constexpr etl::bitset<31> shifted(0x7FFFFFFEUL);
|
||||
ETL_CONSTEXPR14 etl::bitset<31> data(generate_shift_left_bitset<31>(0x7FFFFFFFULL, 1U));
|
||||
ETL_CONSTEXPR14 etl::bitset<31> shifted(0x7FFFFFFEUL);
|
||||
|
||||
CHECK(data == shifted);
|
||||
}
|
||||
@ -1543,16 +1543,16 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_shift_left_copy_operator)
|
||||
{
|
||||
constexpr etl::bitset<60> shift8(0x1234567800ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<60> shift8(0x1234567800ULL);
|
||||
CHECK_EQUAL_HEX(shift8.value<uint64_t>(), generate_shift_left_bitset_copy<60>(0x12345678UL, 8U).value<uint64_t>());
|
||||
|
||||
constexpr etl::bitset<60> shift16(0x123456780000ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<60> shift16(0x123456780000ULL);
|
||||
CHECK_EQUAL_HEX(shift16.value<uint64_t>(), generate_shift_left_bitset_copy<60>(0x12345678UL, 16U).value<uint64_t>());
|
||||
|
||||
constexpr etl::bitset<60> shift24(0x12345678000000ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<60> shift24(0x12345678000000ULL);
|
||||
CHECK_EQUAL_HEX(shift24.value<uint64_t>(), generate_shift_left_bitset_copy<60>(0x12345678UL, 24U).value<uint64_t>());
|
||||
|
||||
constexpr etl::bitset<60> shift60(0x0000000000000000ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<60> shift60(0x0000000000000000ULL);
|
||||
CHECK_EQUAL_HEX(shift60.value<uint64_t>(), generate_shift_left_bitset_copy<60>(0x12345678UL, 60U).value<uint64_t>());
|
||||
}
|
||||
|
||||
@ -1632,9 +1632,9 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_shift_right_operator)
|
||||
{
|
||||
constexpr etl::bitset<60> shift1(0x91A2B3CULL);
|
||||
constexpr etl::bitset<60> shift2(0x48D159EULL);
|
||||
constexpr etl::bitset<60> shift11(0x2468AULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<60> shift1(0x91A2B3CULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<60> shift2(0x48D159EULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<60> shift11(0x2468AULL);
|
||||
|
||||
CHECK(generate_shift_right_bitset<60>(0x12345678ULL, 1U) == shift1);
|
||||
CHECK(generate_shift_right_bitset<60>(0x12345678ULL, 2U) == shift2);
|
||||
@ -1644,16 +1644,16 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_shift_right_copy_operator)
|
||||
{
|
||||
constexpr etl::bitset<60> shift8(0x123456ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<60> shift8(0x123456ULL);
|
||||
CHECK_EQUAL_HEX(shift8.value<uint64_t>(), generate_shift_right_bitset_copy<60>(0x12345678UL, 8U).value<uint64_t>());
|
||||
|
||||
constexpr etl::bitset<60> shift16(0x1234ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<60> shift16(0x1234ULL);
|
||||
CHECK_EQUAL_HEX(shift16.value<uint64_t>(), generate_shift_right_bitset_copy<60>(0x12345678UL, 16U).value<uint64_t>());
|
||||
|
||||
constexpr etl::bitset<60> shift24(0x12ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<60> shift24(0x12ULL);
|
||||
CHECK_EQUAL_HEX(shift24.value<uint64_t>(), generate_shift_right_bitset_copy<60>(0x12345678UL, 24U).value<uint64_t>());
|
||||
|
||||
constexpr etl::bitset<60> shift60(0x00ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<60> shift60(0x00ULL);
|
||||
CHECK_EQUAL_HEX(shift60.value<uint64_t>(), generate_shift_right_bitset_copy<60>(0x12345678UL, 60U).value<uint64_t>());
|
||||
}
|
||||
|
||||
@ -1873,45 +1873,45 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_find_first)
|
||||
{
|
||||
constexpr etl::bitset<9> bs1(ull(0x0000));
|
||||
constexpr size_t bs1fff = bs1.find_first(false);
|
||||
constexpr size_t bs1fft = bs1.find_first(true);
|
||||
ETL_CONSTEXPR14 etl::bitset<9> bs1(ull(0x0000));
|
||||
ETL_CONSTEXPR14 size_t bs1fff = bs1.find_first(false);
|
||||
ETL_CONSTEXPR14 size_t bs1fft = bs1.find_first(true);
|
||||
CHECK_EQUAL(0U, bs1fff);
|
||||
CHECK_EQUAL(etl::bitset<>::npos, bs1fft);
|
||||
|
||||
constexpr etl::bitset<9> bs2(ull(0x01FF));
|
||||
constexpr size_t bs2fff = bs2.find_first(false);
|
||||
constexpr size_t bs2fft = bs2.find_first(true);
|
||||
ETL_CONSTEXPR14 etl::bitset<9> bs2(ull(0x01FF));
|
||||
ETL_CONSTEXPR14 size_t bs2fff = bs2.find_first(false);
|
||||
ETL_CONSTEXPR14 size_t bs2fft = bs2.find_first(true);
|
||||
CHECK_EQUAL(etl::bitset<>::npos, bs2fff);
|
||||
CHECK_EQUAL(0U, bs2fft);
|
||||
|
||||
constexpr etl::bitset<9> bs3(ull(0x0001));
|
||||
constexpr size_t bs3fff = bs3.find_first(false);
|
||||
constexpr size_t bs3fft = bs3.find_first(true);
|
||||
ETL_CONSTEXPR14 etl::bitset<9> bs3(ull(0x0001));
|
||||
ETL_CONSTEXPR14 size_t bs3fff = bs3.find_first(false);
|
||||
ETL_CONSTEXPR14 size_t bs3fft = bs3.find_first(true);
|
||||
CHECK_EQUAL(1U, bs3fff);
|
||||
CHECK_EQUAL(0U, bs3fft);
|
||||
|
||||
constexpr etl::bitset<9> bs4(ull(0x0020));
|
||||
constexpr size_t bs4fff = bs4.find_first(false);
|
||||
constexpr size_t bs4fft = bs4.find_first(true);
|
||||
ETL_CONSTEXPR14 etl::bitset<9> bs4(ull(0x0020));
|
||||
ETL_CONSTEXPR14 size_t bs4fff = bs4.find_first(false);
|
||||
ETL_CONSTEXPR14 size_t bs4fft = bs4.find_first(true);
|
||||
CHECK_EQUAL(0U, bs4fff);
|
||||
CHECK_EQUAL(5U, bs4fft);
|
||||
|
||||
constexpr etl::bitset<9> bs5(ull(0x0021));
|
||||
constexpr size_t bs5fff = bs5.find_first(false);
|
||||
constexpr size_t bs5fft = bs5.find_first(true);
|
||||
ETL_CONSTEXPR14 etl::bitset<9> bs5(ull(0x0021));
|
||||
ETL_CONSTEXPR14 size_t bs5fff = bs5.find_first(false);
|
||||
ETL_CONSTEXPR14 size_t bs5fft = bs5.find_first(true);
|
||||
CHECK_EQUAL(1U, bs5fff);
|
||||
CHECK_EQUAL(0U, bs5fft);
|
||||
|
||||
constexpr etl::bitset<9> bs6(ull(0x000E));
|
||||
constexpr size_t bs6fff = bs6.find_first(false);
|
||||
constexpr size_t bs6fft = bs6.find_first(true);
|
||||
ETL_CONSTEXPR14 etl::bitset<9> bs6(ull(0x000E));
|
||||
ETL_CONSTEXPR14 size_t bs6fff = bs6.find_first(false);
|
||||
ETL_CONSTEXPR14 size_t bs6fft = bs6.find_first(true);
|
||||
CHECK_EQUAL(0U, bs6fff);
|
||||
CHECK_EQUAL(1U, bs6fft);
|
||||
|
||||
constexpr etl::bitset<9> bs7(ull(0x31));
|
||||
constexpr size_t bs7fff = bs7.find_first(false);
|
||||
constexpr size_t bs7fft = bs7.find_first(true);
|
||||
ETL_CONSTEXPR14 etl::bitset<9> bs7(ull(0x31));
|
||||
ETL_CONSTEXPR14 size_t bs7fff = bs7.find_first(false);
|
||||
ETL_CONSTEXPR14 size_t bs7fft = bs7.find_first(true);
|
||||
CHECK_EQUAL(1U, bs7fff);
|
||||
CHECK_EQUAL(0U, bs7fft);
|
||||
}
|
||||
@ -1919,34 +1919,34 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_find_next)
|
||||
{
|
||||
constexpr etl::bitset<9> bs1(ull(0x0000));
|
||||
constexpr size_t bs1fnf0 = bs1.find_next(false, 0);
|
||||
constexpr size_t bs1fnf1 = bs1.find_next(false, 1);
|
||||
constexpr size_t bs1fnt2 = bs1.find_next(true, 2);
|
||||
ETL_CONSTEXPR14 etl::bitset<9> bs1(ull(0x0000));
|
||||
ETL_CONSTEXPR14 size_t bs1fnf0 = bs1.find_next(false, 0);
|
||||
ETL_CONSTEXPR14 size_t bs1fnf1 = bs1.find_next(false, 1);
|
||||
ETL_CONSTEXPR14 size_t bs1fnt2 = bs1.find_next(true, 2);
|
||||
CHECK_EQUAL(0U, bs1fnf0);
|
||||
CHECK_EQUAL(1U, bs1fnf1);
|
||||
CHECK_EQUAL(etl::bitset<>::npos, bs1fnt2);
|
||||
|
||||
constexpr etl::bitset<9> bs2(ull(0x1FF));
|
||||
constexpr size_t bs2fnt0 = bs2.find_next(true, 0);
|
||||
constexpr size_t bs2fnt1 = bs2.find_next(true, 1);
|
||||
constexpr size_t bs2fnf2 = bs2.find_next(false, 2);
|
||||
ETL_CONSTEXPR14 etl::bitset<9> bs2(ull(0x1FF));
|
||||
ETL_CONSTEXPR14 size_t bs2fnt0 = bs2.find_next(true, 0);
|
||||
ETL_CONSTEXPR14 size_t bs2fnt1 = bs2.find_next(true, 1);
|
||||
ETL_CONSTEXPR14 size_t bs2fnf2 = bs2.find_next(false, 2);
|
||||
CHECK_EQUAL(0U, bs2fnt0);
|
||||
CHECK_EQUAL(1U, bs2fnt1);
|
||||
CHECK_EQUAL(etl::bitset<>::npos, bs2fnf2);
|
||||
|
||||
constexpr etl::bitset<9> bs3(ull(0x000E));
|
||||
constexpr size_t bs3fnf0 = bs3.find_next(false, 0);
|
||||
constexpr size_t bs3fnt1 = bs3.find_next(true, 1);
|
||||
constexpr size_t bs3fnf2 = bs3.find_next(false, 2);
|
||||
ETL_CONSTEXPR14 etl::bitset<9> bs3(ull(0x000E));
|
||||
ETL_CONSTEXPR14 size_t bs3fnf0 = bs3.find_next(false, 0);
|
||||
ETL_CONSTEXPR14 size_t bs3fnt1 = bs3.find_next(true, 1);
|
||||
ETL_CONSTEXPR14 size_t bs3fnf2 = bs3.find_next(false, 2);
|
||||
CHECK_EQUAL(0U, bs3fnf0);
|
||||
CHECK_EQUAL(1U, bs3fnt1);
|
||||
CHECK_EQUAL(4U, bs3fnf2);
|
||||
|
||||
constexpr etl::bitset<9> bs4(ull(0x0031));
|
||||
constexpr size_t bs4fnt0 = bs4.find_next(true, 0);
|
||||
constexpr size_t bs4fnf0 = bs4.find_next(false, 0);
|
||||
constexpr size_t bs4fnt1 = bs4.find_next(true, 1);
|
||||
ETL_CONSTEXPR14 etl::bitset<9> bs4(ull(0x0031));
|
||||
ETL_CONSTEXPR14 size_t bs4fnt0 = bs4.find_next(true, 0);
|
||||
ETL_CONSTEXPR14 size_t bs4fnf0 = bs4.find_next(false, 0);
|
||||
ETL_CONSTEXPR14 size_t bs4fnt1 = bs4.find_next(true, 1);
|
||||
CHECK_EQUAL(0U, bs4fnt0);
|
||||
CHECK_EQUAL(1U, bs4fnf0);
|
||||
CHECK_EQUAL(4U, bs4fnt1);
|
||||
@ -1955,21 +1955,21 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_find_next_github_issue_617)
|
||||
{
|
||||
constexpr etl::bitset<64> bs1(ull(0xC000'0000'0000'0031));
|
||||
constexpr size_t bs1fnt1 = bs1.find_next(true, 10);
|
||||
constexpr size_t bs1fnt2 = bs1.find_next(true, 59);
|
||||
ETL_CONSTEXPR14 etl::bitset<64> bs1(ull(0xC000000000000031));
|
||||
ETL_CONSTEXPR14 size_t bs1fnt1 = bs1.find_next(true, 10);
|
||||
ETL_CONSTEXPR14 size_t bs1fnt2 = bs1.find_next(true, 59);
|
||||
CHECK_EQUAL(62U, bs1fnt1);
|
||||
CHECK_EQUAL(62U, bs1fnt2);
|
||||
|
||||
constexpr etl::bitset<64> bs2(ull(0x3FFF'FFFF'FFFF'FFCE));
|
||||
constexpr size_t bs2fnf1 = bs2.find_next(false, 10);
|
||||
constexpr size_t bs2fnf2 = bs2.find_next(false, 59);
|
||||
ETL_CONSTEXPR14 etl::bitset<64> bs2(ull(0x3FFFFFFFFFFFFFCE));
|
||||
ETL_CONSTEXPR14 size_t bs2fnf1 = bs2.find_next(false, 10);
|
||||
ETL_CONSTEXPR14 size_t bs2fnf2 = bs2.find_next(false, 59);
|
||||
CHECK_EQUAL(62U, bs2fnf1);
|
||||
CHECK_EQUAL(62U, bs2fnf2);
|
||||
|
||||
constexpr etl::bitset<64, uint32_t> bs32(ull(0xC000'0000'0000'0031));
|
||||
constexpr size_t bs32fnt1 = bs32.find_next(true, 10);
|
||||
constexpr size_t bs32fnt2 = bs32.find_next(true, 59);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, uint32_t> bs32(ull(0xC000000000000031));
|
||||
ETL_CONSTEXPR14 size_t bs32fnt1 = bs32.find_next(true, 10);
|
||||
ETL_CONSTEXPR14 size_t bs32fnt2 = bs32.find_next(true, 59);
|
||||
CHECK_EQUAL(62U, bs32fnt1);
|
||||
CHECK_EQUAL(62U, bs32fnt2);
|
||||
}
|
||||
@ -2020,7 +2020,7 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_to_string)
|
||||
{
|
||||
constexpr etl::bitset<32> b(0x12345678UL);
|
||||
ETL_CONSTEXPR14 etl::bitset<32> b(0x12345678UL);
|
||||
|
||||
etl::string<32> text = b.to_string('.', '*');
|
||||
std::string stdtext = b.to_string<std::string>('.', '*');
|
||||
@ -2032,7 +2032,7 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_to_wstring)
|
||||
{
|
||||
constexpr etl::bitset<32> b(0x12345678UL);
|
||||
ETL_CONSTEXPR14 etl::bitset<32> b(0x12345678UL);
|
||||
|
||||
etl::wstring<32> text = b.to_string<etl::wstring<32>>(L'.', L'*');
|
||||
std::wstring stdtext = b.to_string<std::wstring>(L'.', L'*');
|
||||
@ -2044,7 +2044,7 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_to_u16string)
|
||||
{
|
||||
constexpr etl::bitset<32> b(0x12345678UL);
|
||||
ETL_CONSTEXPR14 etl::bitset<32> b(0x12345678UL);
|
||||
|
||||
etl::u16string<32> text = b.to_string<etl::u16string<32>>(u'.', u'*');
|
||||
std::u16string stdtext = b.to_string<std::u16string>(u'.', u'*');
|
||||
@ -2056,7 +2056,7 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_to_u32string)
|
||||
{
|
||||
constexpr etl::bitset<32> b(0x12345678UL);
|
||||
ETL_CONSTEXPR14 etl::bitset<32> b(0x12345678UL);
|
||||
|
||||
etl::u32string<32> text = b.to_string<etl::u32string<32>>(U'.', U'*');
|
||||
std::u32string stdtext = b.to_string<std::u32string>(U'.', U'*');
|
||||
|
||||
@ -44,7 +44,7 @@ namespace
|
||||
|
||||
//*************************************************************************
|
||||
template <size_t Active_Bits, typename TElement>
|
||||
constexpr etl::bitset<Active_Bits, TElement> generate_shift_left_bitset(ull value, size_t shift)
|
||||
ETL_CONSTEXPR14 etl::bitset<Active_Bits, TElement> generate_shift_left_bitset(ull value, size_t shift)
|
||||
{
|
||||
ull mask = 0ULL;
|
||||
|
||||
@ -71,7 +71,7 @@ namespace
|
||||
|
||||
//*************************************************************************
|
||||
template <size_t Active_Bits, typename TElement>
|
||||
constexpr etl::bitset<Active_Bits, TElement> generate_shift_left_bitset_copy(ull value, size_t shift)
|
||||
ETL_CONSTEXPR14 etl::bitset<Active_Bits, TElement> generate_shift_left_bitset_copy(ull value, size_t shift)
|
||||
{
|
||||
etl::bitset<Active_Bits, TElement> data1(value);
|
||||
etl::bitset<Active_Bits, TElement> data2;
|
||||
@ -86,7 +86,7 @@ namespace
|
||||
|
||||
//*************************************************************************
|
||||
template <size_t Active_Bits, typename TElement>
|
||||
constexpr etl::bitset<Active_Bits, TElement> generate_shift_right_bitset(ull value, size_t shift)
|
||||
ETL_CONSTEXPR14 etl::bitset<Active_Bits, TElement> generate_shift_right_bitset(ull value, size_t shift)
|
||||
{
|
||||
etl::bitset<Active_Bits, TElement> data(value);
|
||||
|
||||
@ -104,7 +104,7 @@ namespace
|
||||
|
||||
//*************************************************************************
|
||||
template <size_t Active_Bits, typename TElement>
|
||||
constexpr etl::bitset<Active_Bits, TElement> generate_shift_right_bitset_copy(ull value, size_t shift)
|
||||
ETL_CONSTEXPR14 etl::bitset<Active_Bits, TElement> generate_shift_right_bitset_copy(ull value, size_t shift)
|
||||
{
|
||||
etl::bitset<Active_Bits, TElement> data1(value);
|
||||
etl::bitset<Active_Bits, TElement> data2;
|
||||
@ -122,8 +122,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_default_constructor)
|
||||
{
|
||||
constexpr std::bitset<64> compare;
|
||||
constexpr etl::bitset<64, int64_t> data;
|
||||
ETL_CONSTEXPR14 std::bitset<64> compare;
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data;
|
||||
|
||||
CHECK_EQUAL(compare.size(), data.size());
|
||||
CHECK_EQUAL(compare.count(), data.count());
|
||||
@ -151,8 +151,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_construct_from_value)
|
||||
{
|
||||
constexpr std::bitset<64> compare(0x123456731234567ULL);
|
||||
constexpr etl::bitset<64, int64_t> data(0x123456731234567ULL);
|
||||
ETL_CONSTEXPR14 std::bitset<64> compare(0x123456731234567ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data(0x123456731234567ULL);
|
||||
|
||||
CHECK_EQUAL(compare.size(), data.size());
|
||||
CHECK_EQUAL(compare.count(), data.count());
|
||||
@ -167,9 +167,9 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_copy_construct)
|
||||
{
|
||||
constexpr std::bitset<64> compare(0x123456731234567ULL);
|
||||
constexpr etl::bitset<64, int64_t> data(0x123456731234567ULL);
|
||||
constexpr etl::bitset<64, int64_t> data_copy(data);
|
||||
ETL_CONSTEXPR14 std::bitset<64> compare(0x123456731234567ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data(0x123456731234567ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data_copy(data);
|
||||
|
||||
CHECK_EQUAL(compare.size(), data_copy.size());
|
||||
CHECK_EQUAL(compare.count(), data_copy.count());
|
||||
@ -183,8 +183,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_construct_from_excess_value)
|
||||
{
|
||||
constexpr std::bitset<64> compare(0x8765432187654321ULL);
|
||||
constexpr etl::bitset<64, int64_t> data(0x8765432187654321ULL);
|
||||
ETL_CONSTEXPR14 std::bitset<64> compare(0x8765432187654321ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data(0x8765432187654321ULL);
|
||||
|
||||
CHECK_EQUAL(compare.size(), data.size());
|
||||
CHECK_EQUAL(compare.count(), data.count());
|
||||
@ -276,7 +276,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
constexpr etl::bitset<64, int64_t> test_set_helper()
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> test_set_helper()
|
||||
{
|
||||
etl::bitset<64, int64_t> data;
|
||||
data.set();
|
||||
@ -287,15 +287,15 @@ namespace
|
||||
TEST(test_set)
|
||||
{
|
||||
std::bitset<64> compare;
|
||||
constexpr etl::bitset<64, int64_t> data(test_set_helper());
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data(test_set_helper());
|
||||
|
||||
compare.set();
|
||||
|
||||
constexpr auto size = data.size();
|
||||
constexpr auto count = data.count();
|
||||
constexpr auto none = data.none();
|
||||
constexpr auto any = data.any();
|
||||
constexpr auto all = data.all();
|
||||
ETL_CONSTEXPR14 auto size = data.size();
|
||||
ETL_CONSTEXPR14 auto count = data.count();
|
||||
ETL_CONSTEXPR14 auto none = data.none();
|
||||
ETL_CONSTEXPR14 auto any = data.any();
|
||||
ETL_CONSTEXPR14 auto all = data.all();
|
||||
|
||||
CHECK_EQUAL(compare.size(), size);
|
||||
CHECK_EQUAL(compare.count(), count);
|
||||
@ -472,8 +472,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_value_u8_min)
|
||||
{
|
||||
constexpr etl::bitset<8> data((unsigned long long)etl::integral_limits<uint8_t>::min);
|
||||
constexpr uint8_t value = data.value<uint8_t>();
|
||||
ETL_CONSTEXPR14 etl::bitset<8> data((unsigned long long)etl::integral_limits<uint8_t>::min);
|
||||
ETL_CONSTEXPR14 uint8_t value = data.value<uint8_t>();
|
||||
|
||||
CHECK_EQUAL(std::numeric_limits<uint8_t>::min(), value);
|
||||
}
|
||||
@ -481,8 +481,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_value_u8_max)
|
||||
{
|
||||
constexpr etl::bitset<8> data((unsigned long long)etl::integral_limits<uint8_t>::max);
|
||||
constexpr uint8_t value = data.value<uint8_t>();
|
||||
ETL_CONSTEXPR14 etl::bitset<8> data((unsigned long long)etl::integral_limits<uint8_t>::max);
|
||||
ETL_CONSTEXPR14 uint8_t value = data.value<uint8_t>();
|
||||
|
||||
CHECK_EQUAL(std::numeric_limits<uint8_t>::max(), value);
|
||||
}
|
||||
@ -490,8 +490,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_value_s8_min)
|
||||
{
|
||||
constexpr etl::bitset<8> data((unsigned long long)etl::integral_limits<int8_t>::min);
|
||||
constexpr int8_t value = data.value<int8_t>();
|
||||
ETL_CONSTEXPR14 etl::bitset<8> data((unsigned long long)etl::integral_limits<int8_t>::min);
|
||||
ETL_CONSTEXPR14 int8_t value = data.value<int8_t>();
|
||||
|
||||
CHECK_EQUAL(std::numeric_limits<int8_t>::min(), value);
|
||||
}
|
||||
@ -499,8 +499,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_value_s8_max)
|
||||
{
|
||||
constexpr etl::bitset<8> data((unsigned long long)etl::integral_limits<int8_t>::max);
|
||||
constexpr int8_t value = data.value<int8_t>();
|
||||
ETL_CONSTEXPR14 etl::bitset<8> data((unsigned long long)etl::integral_limits<int8_t>::max);
|
||||
ETL_CONSTEXPR14 int8_t value = data.value<int8_t>();
|
||||
|
||||
CHECK_EQUAL(std::numeric_limits<int8_t>::max(), value);
|
||||
}
|
||||
@ -508,8 +508,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_value_u16_min)
|
||||
{
|
||||
constexpr etl::bitset<16> data((unsigned long long)etl::integral_limits<uint16_t>::min);
|
||||
constexpr uint16_t value = data.value<uint16_t>();
|
||||
ETL_CONSTEXPR14 etl::bitset<16> data((unsigned long long)etl::integral_limits<uint16_t>::min);
|
||||
ETL_CONSTEXPR14 uint16_t value = data.value<uint16_t>();
|
||||
|
||||
CHECK_EQUAL(std::numeric_limits<uint16_t>::min(), value);
|
||||
}
|
||||
@ -517,8 +517,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_value_u16_max)
|
||||
{
|
||||
constexpr etl::bitset<16> data((unsigned long long)etl::integral_limits<uint16_t>::max);
|
||||
constexpr uint16_t value = data.value<uint16_t>();
|
||||
ETL_CONSTEXPR14 etl::bitset<16> data((unsigned long long)etl::integral_limits<uint16_t>::max);
|
||||
ETL_CONSTEXPR14 uint16_t value = data.value<uint16_t>();
|
||||
|
||||
CHECK_EQUAL(std::numeric_limits<uint16_t>::max(), value);
|
||||
}
|
||||
@ -526,8 +526,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_value_s16_min)
|
||||
{
|
||||
constexpr etl::bitset<16> data((unsigned long long)etl::integral_limits<int16_t>::min);
|
||||
constexpr int16_t value = data.value<int16_t>();
|
||||
ETL_CONSTEXPR14 etl::bitset<16> data((unsigned long long)etl::integral_limits<int16_t>::min);
|
||||
ETL_CONSTEXPR14 int16_t value = data.value<int16_t>();
|
||||
|
||||
CHECK_EQUAL(std::numeric_limits<int16_t>::min(), value);
|
||||
}
|
||||
@ -535,8 +535,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_value_s16_max)
|
||||
{
|
||||
constexpr etl::bitset<16> data((unsigned long long)etl::integral_limits<int16_t>::max);
|
||||
constexpr int16_t value = data.value<int16_t>();
|
||||
ETL_CONSTEXPR14 etl::bitset<16> data((unsigned long long)etl::integral_limits<int16_t>::max);
|
||||
ETL_CONSTEXPR14 int16_t value = data.value<int16_t>();
|
||||
|
||||
CHECK_EQUAL(std::numeric_limits<int16_t>::max(), value);
|
||||
}
|
||||
@ -544,8 +544,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_value_u32_min)
|
||||
{
|
||||
constexpr etl::bitset<32> data((unsigned long long)etl::integral_limits<int32_t>::min);
|
||||
constexpr int32_t value = data.value<int32_t>();
|
||||
ETL_CONSTEXPR14 etl::bitset<32> data((unsigned long long)etl::integral_limits<int32_t>::min);
|
||||
ETL_CONSTEXPR14 int32_t value = data.value<int32_t>();
|
||||
|
||||
CHECK_EQUAL(std::numeric_limits<int32_t>::min(), value);
|
||||
}
|
||||
@ -553,8 +553,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_value_u32_max)
|
||||
{
|
||||
constexpr etl::bitset<32> data((unsigned long long)etl::integral_limits<int32_t>::max);
|
||||
constexpr int32_t value = data.value<int32_t>();
|
||||
ETL_CONSTEXPR14 etl::bitset<32> data((unsigned long long)etl::integral_limits<int32_t>::max);
|
||||
ETL_CONSTEXPR14 int32_t value = data.value<int32_t>();
|
||||
|
||||
CHECK_EQUAL(std::numeric_limits<int32_t>::max(), value);
|
||||
}
|
||||
@ -562,8 +562,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_value_s32_min)
|
||||
{
|
||||
constexpr etl::bitset<32> data((unsigned long long)etl::integral_limits<int32_t>::min);
|
||||
constexpr int32_t value = data.value<int32_t>();
|
||||
ETL_CONSTEXPR14 etl::bitset<32> data((unsigned long long)etl::integral_limits<int32_t>::min);
|
||||
ETL_CONSTEXPR14 int32_t value = data.value<int32_t>();
|
||||
|
||||
CHECK_EQUAL(std::numeric_limits<int32_t>::min(), value);
|
||||
}
|
||||
@ -571,8 +571,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_value_s32_max)
|
||||
{
|
||||
constexpr etl::bitset<32> data((unsigned long long)etl::integral_limits<int32_t>::max);
|
||||
constexpr int32_t value = data.value<int32_t>();
|
||||
ETL_CONSTEXPR14 etl::bitset<32> data((unsigned long long)etl::integral_limits<int32_t>::max);
|
||||
ETL_CONSTEXPR14 int32_t value = data.value<int32_t>();
|
||||
|
||||
CHECK_EQUAL(std::numeric_limits<int32_t>::max(), value);
|
||||
}
|
||||
@ -580,8 +580,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_value_u64_min)
|
||||
{
|
||||
constexpr etl::bitset<64> data((unsigned long long)etl::integral_limits<int64_t>::min);
|
||||
constexpr int64_t value = data.value<int64_t>();
|
||||
ETL_CONSTEXPR14 etl::bitset<64> data((unsigned long long)etl::integral_limits<int64_t>::min);
|
||||
ETL_CONSTEXPR14 int64_t value = data.value<int64_t>();
|
||||
|
||||
CHECK_EQUAL(std::numeric_limits<int64_t>::min(), value);
|
||||
}
|
||||
@ -589,8 +589,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_value_u64_max)
|
||||
{
|
||||
constexpr etl::bitset<64> data((unsigned long long)etl::integral_limits<int64_t>::max);
|
||||
constexpr int64_t value = data.value<int64_t>();
|
||||
ETL_CONSTEXPR14 etl::bitset<64> data((unsigned long long)etl::integral_limits<int64_t>::max);
|
||||
ETL_CONSTEXPR14 int64_t value = data.value<int64_t>();
|
||||
|
||||
CHECK_EQUAL(std::numeric_limits<int64_t>::max(), value);
|
||||
}
|
||||
@ -598,8 +598,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_value_s64_min)
|
||||
{
|
||||
constexpr etl::bitset<64> data((unsigned long long)etl::integral_limits<int64_t>::min);
|
||||
constexpr int64_t value = data.value<int64_t>();
|
||||
ETL_CONSTEXPR14 etl::bitset<64> data((unsigned long long)etl::integral_limits<int64_t>::min);
|
||||
ETL_CONSTEXPR14 int64_t value = data.value<int64_t>();
|
||||
|
||||
CHECK_EQUAL(std::numeric_limits<int64_t>::min(), value);
|
||||
}
|
||||
@ -607,8 +607,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_value_s64_max)
|
||||
{
|
||||
constexpr etl::bitset<64> data((unsigned long long)etl::integral_limits<int64_t>::max);
|
||||
constexpr int64_t value = data.value<int64_t>();
|
||||
ETL_CONSTEXPR14 etl::bitset<64> data((unsigned long long)etl::integral_limits<int64_t>::max);
|
||||
ETL_CONSTEXPR14 int64_t value = data.value<int64_t>();
|
||||
|
||||
CHECK_EQUAL(std::numeric_limits<int64_t>::max(), value);
|
||||
}
|
||||
@ -638,7 +638,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
constexpr etl::bitset<64, int64_t> test_reset_helper()
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> test_reset_helper()
|
||||
{
|
||||
etl::bitset<64, int64_t> data(0xFFFFFFFFFFFFFFFULL);
|
||||
data.reset();
|
||||
@ -649,7 +649,7 @@ namespace
|
||||
TEST(test_reset)
|
||||
{
|
||||
std::bitset<64> compare(0xFFFFFFFFFFFFFFFULL);
|
||||
constexpr etl::bitset<64, int64_t> data(test_reset_helper());
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data(test_reset_helper());
|
||||
|
||||
compare.reset();
|
||||
|
||||
@ -666,7 +666,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
constexpr etl::bitset<64, int64_t> test_position_reset_helper()
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> test_position_reset_helper()
|
||||
{
|
||||
etl::bitset<64, int64_t> data(0xFFFFFFFFFFFFFFFULL);
|
||||
data.reset(1);
|
||||
@ -680,7 +680,7 @@ namespace
|
||||
TEST(test_position_reset)
|
||||
{
|
||||
std::bitset<64> compare(0xFFFFFFFFFFFFFFFULL);
|
||||
constexpr etl::bitset<64, int64_t> data(test_position_reset_helper());
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data(test_position_reset_helper());
|
||||
|
||||
compare.reset(1);
|
||||
compare.reset(3);
|
||||
@ -702,28 +702,28 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_index_operator_read)
|
||||
{
|
||||
constexpr std::bitset<64> compare(0x3123456731234567ULL);
|
||||
constexpr etl::bitset<64, int64_t> data(0x3123456731234567ULL);
|
||||
ETL_CONSTEXPR14 std::bitset<64> compare(0x3123456731234567ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data(0x3123456731234567ULL);
|
||||
|
||||
constexpr bool bc0 = compare[1U];
|
||||
constexpr bool bd0 = data[1U];
|
||||
ETL_CONSTEXPR14 bool bc0 = compare[1U];
|
||||
ETL_CONSTEXPR14 bool bd0 = data[1U];
|
||||
CHECK_EQUAL(bc0, bd0);
|
||||
|
||||
constexpr bool bc3 = compare[3U];
|
||||
constexpr bool bd3 = data[3U];
|
||||
ETL_CONSTEXPR14 bool bc3 = compare[3U];
|
||||
ETL_CONSTEXPR14 bool bd3 = data[3U];
|
||||
CHECK_EQUAL(bc3, bd3);
|
||||
|
||||
constexpr bool bc7 = compare[7U];
|
||||
constexpr bool bd7 = data[7U];
|
||||
ETL_CONSTEXPR14 bool bc7 = compare[7U];
|
||||
ETL_CONSTEXPR14 bool bd7 = data[7U];
|
||||
CHECK_EQUAL(bc7, bd7);
|
||||
|
||||
constexpr bool bc13 = compare[13U];
|
||||
constexpr bool bd13 = data[13U];
|
||||
ETL_CONSTEXPR14 bool bc13 = compare[13U];
|
||||
ETL_CONSTEXPR14 bool bd13 = data[13U];
|
||||
CHECK_EQUAL(bc13, bd13);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
constexpr etl::bitset<64, int64_t> test_index_operator_write_helper()
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> test_index_operator_write_helper()
|
||||
{
|
||||
etl::bitset<64, int64_t> data;
|
||||
|
||||
@ -737,7 +737,7 @@ namespace
|
||||
|
||||
TEST(test_index_operator_write)
|
||||
{
|
||||
constexpr etl::bitset<64, int64_t> data(test_index_operator_write_helper());
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data(test_index_operator_write_helper());
|
||||
|
||||
CHECK(data[1U]);
|
||||
CHECK(data[3U]);
|
||||
@ -748,15 +748,15 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_any)
|
||||
{
|
||||
constexpr etl::bitset<64, int64_t> data1(ull(0x0000000000000000));
|
||||
constexpr etl::bitset<64, int64_t> data2(ull(0x0000010000000000));
|
||||
constexpr etl::bitset<64, int64_t> data3(ull(0x1000010001000100));
|
||||
constexpr etl::bitset<64, int64_t> data4(ull(0xFFFFFFFFFFFFFFFF));
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data1(ull(0x0000000000000000));
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data2(ull(0x0000010000000000));
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data3(ull(0x1000010001000100));
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data4(ull(0xFFFFFFFFFFFFFFFF));
|
||||
|
||||
constexpr bool bd1 = data1.any();
|
||||
constexpr bool bd2 = data2.any();
|
||||
constexpr bool bd3 = data3.any();
|
||||
constexpr bool bd4 = data4.any();
|
||||
ETL_CONSTEXPR14 bool bd1 = data1.any();
|
||||
ETL_CONSTEXPR14 bool bd2 = data2.any();
|
||||
ETL_CONSTEXPR14 bool bd3 = data3.any();
|
||||
ETL_CONSTEXPR14 bool bd4 = data4.any();
|
||||
|
||||
CHECK_FALSE(bd1);
|
||||
CHECK_TRUE(bd2);
|
||||
@ -767,17 +767,17 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_any_with_mask)
|
||||
{
|
||||
constexpr etl::bitset<64, int64_t> data1(ull(0xF000000000000000));
|
||||
constexpr etl::bitset<64, int64_t> data2(ull(0x0000010000000000));
|
||||
constexpr etl::bitset<64, int64_t> data3(ull(0x1000010001000100));
|
||||
constexpr etl::bitset<64, int64_t> data4(ull(0xFFFFFFFFFFFFFFFF));
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data1(ull(0xF000000000000000));
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data2(ull(0x0000010000000000));
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data3(ull(0x1000010001000100));
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data4(ull(0xFFFFFFFFFFFFFFFF));
|
||||
|
||||
constexpr ull mask = ull(0x0FFFFFFFFFFFFFFF);
|
||||
ETL_CONSTEXPR14 ull mask = ull(0x0FFFFFFFFFFFFFFF);
|
||||
|
||||
constexpr bool bd1 = data1.any(mask);
|
||||
constexpr bool bd2 = data2.any(mask);
|
||||
constexpr bool bd3 = data3.any(mask);
|
||||
constexpr bool bd4 = data4.any(mask);
|
||||
ETL_CONSTEXPR14 bool bd1 = data1.any(mask);
|
||||
ETL_CONSTEXPR14 bool bd2 = data2.any(mask);
|
||||
ETL_CONSTEXPR14 bool bd3 = data3.any(mask);
|
||||
ETL_CONSTEXPR14 bool bd4 = data4.any(mask);
|
||||
|
||||
CHECK_FALSE(bd1);
|
||||
CHECK_TRUE(bd2);
|
||||
@ -788,15 +788,15 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_none)
|
||||
{
|
||||
constexpr etl::bitset<64, int64_t> data1(ull(0x0000000000000000));
|
||||
constexpr etl::bitset<64, int64_t> data2(ull(0x0000010000000000));
|
||||
constexpr etl::bitset<64, int64_t> data3(ull(0x1000010001000100));
|
||||
constexpr etl::bitset<64, int64_t> data4(ull(0xFFFFFFFFFFFFFFFF));
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data1(ull(0x0000000000000000));
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data2(ull(0x0000010000000000));
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data3(ull(0x1000010001000100));
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data4(ull(0xFFFFFFFFFFFFFFFF));
|
||||
|
||||
constexpr bool bd1 = data1.none();
|
||||
constexpr bool bd2 = data2.none();
|
||||
constexpr bool bd3 = data3.none();
|
||||
constexpr bool bd4 = data4.none();
|
||||
ETL_CONSTEXPR14 bool bd1 = data1.none();
|
||||
ETL_CONSTEXPR14 bool bd2 = data2.none();
|
||||
ETL_CONSTEXPR14 bool bd3 = data3.none();
|
||||
ETL_CONSTEXPR14 bool bd4 = data4.none();
|
||||
|
||||
CHECK_TRUE(bd1);
|
||||
CHECK_FALSE(bd2);
|
||||
@ -807,17 +807,17 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_none_with_mask)
|
||||
{
|
||||
constexpr etl::bitset<64, int64_t> data1(ull(0xF000000000000000));
|
||||
constexpr etl::bitset<64, int64_t> data2(ull(0x0000010000000000));
|
||||
constexpr etl::bitset<64, int64_t> data3(ull(0x1000010001000100));
|
||||
constexpr etl::bitset<64, int64_t> data4(ull(0xFFFFFFFFFFFFFFFF));
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data1(ull(0xF000000000000000));
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data2(ull(0x0000010000000000));
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data3(ull(0x1000010001000100));
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data4(ull(0xFFFFFFFFFFFFFFFF));
|
||||
|
||||
constexpr ull mask = ull(0x0FFFFFFFFFFFFFFF);
|
||||
ETL_CONSTEXPR14 ull mask = ull(0x0FFFFFFFFFFFFFFF);
|
||||
|
||||
constexpr bool bd1 = data1.none(mask);
|
||||
constexpr bool bd2 = data2.none(mask);
|
||||
constexpr bool bd3 = data3.none(mask);
|
||||
constexpr bool bd4 = data4.none(mask);
|
||||
ETL_CONSTEXPR14 bool bd1 = data1.none(mask);
|
||||
ETL_CONSTEXPR14 bool bd2 = data2.none(mask);
|
||||
ETL_CONSTEXPR14 bool bd3 = data3.none(mask);
|
||||
ETL_CONSTEXPR14 bool bd4 = data4.none(mask);
|
||||
|
||||
CHECK_TRUE(bd1);
|
||||
CHECK_FALSE(bd2);
|
||||
@ -828,15 +828,15 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_all)
|
||||
{
|
||||
constexpr etl::bitset<64, int64_t> data1(ull(0x0000000000000000));
|
||||
constexpr etl::bitset<64, int64_t> data2(ull(0x0000010000000000));
|
||||
constexpr etl::bitset<64, int64_t> data3(ull(0x1000010001000100));
|
||||
constexpr etl::bitset<64, int64_t> data4(ull(0xFFFFFFFFFFFFFFFF));
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data1(ull(0x0000000000000000));
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data2(ull(0x0000010000000000));
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data3(ull(0x1000010001000100));
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data4(ull(0xFFFFFFFFFFFFFFFF));
|
||||
|
||||
constexpr bool bd1 = data1.all();
|
||||
constexpr bool bd2 = data2.all();
|
||||
constexpr bool bd3 = data3.all();
|
||||
constexpr bool bd4 = data4.all();
|
||||
ETL_CONSTEXPR14 bool bd1 = data1.all();
|
||||
ETL_CONSTEXPR14 bool bd2 = data2.all();
|
||||
ETL_CONSTEXPR14 bool bd3 = data3.all();
|
||||
ETL_CONSTEXPR14 bool bd4 = data4.all();
|
||||
|
||||
CHECK_FALSE(bd1);
|
||||
CHECK_FALSE(bd2);
|
||||
@ -847,17 +847,17 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_all_with_mask)
|
||||
{
|
||||
constexpr etl::bitset<64, int64_t> data1(ull(0x0000000000000000));
|
||||
constexpr etl::bitset<64, int64_t> data2(ull(0x0000010000000000));
|
||||
constexpr etl::bitset<64, int64_t> data3(ull(0x1000010001000100));
|
||||
constexpr etl::bitset<64, int64_t> data4(ull(0x0FFFFFFFFFFFFFFF));
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data1(ull(0x0000000000000000));
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data2(ull(0x0000010000000000));
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data3(ull(0x1000010001000100));
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data4(ull(0x0FFFFFFFFFFFFFFF));
|
||||
|
||||
constexpr ull mask = ull(0x0FFFFFFFFFFFFFFF);
|
||||
ETL_CONSTEXPR14 ull mask = ull(0x0FFFFFFFFFFFFFFF);
|
||||
|
||||
constexpr bool bd1 = data1.all(mask);
|
||||
constexpr bool bd2 = data2.all(mask);
|
||||
constexpr bool bd3 = data3.all(mask);
|
||||
constexpr bool bd4 = data4.all(mask);
|
||||
ETL_CONSTEXPR14 bool bd1 = data1.all(mask);
|
||||
ETL_CONSTEXPR14 bool bd2 = data2.all(mask);
|
||||
ETL_CONSTEXPR14 bool bd3 = data3.all(mask);
|
||||
ETL_CONSTEXPR14 bool bd4 = data4.all(mask);
|
||||
|
||||
CHECK_FALSE(bd1);
|
||||
CHECK_FALSE(bd2);
|
||||
@ -866,7 +866,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
constexpr etl::bitset<64, int64_t> test_flip_helper()
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> test_flip_helper()
|
||||
{
|
||||
etl::bitset<64, int64_t> data;
|
||||
data.flip();
|
||||
@ -877,7 +877,7 @@ namespace
|
||||
TEST(test_flip)
|
||||
{
|
||||
std::bitset<64> compare;
|
||||
constexpr etl::bitset<64, int64_t> data(test_flip_helper());
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data(test_flip_helper());
|
||||
|
||||
compare.flip();
|
||||
|
||||
@ -888,7 +888,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
constexpr etl::bitset<64, int64_t> test_flip_position_helper()
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> test_flip_position_helper()
|
||||
{
|
||||
etl::bitset<64, int64_t> data;
|
||||
data.flip(1);
|
||||
@ -902,7 +902,7 @@ namespace
|
||||
TEST(test_flip_position)
|
||||
{
|
||||
std::bitset<64> compare;
|
||||
constexpr etl::bitset<64, int64_t> data(test_flip_position_helper());
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data(test_flip_position_helper());
|
||||
|
||||
compare.flip(1);
|
||||
compare.flip(3);
|
||||
@ -916,7 +916,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
constexpr etl::bitset<64, int64_t> test_flip_reference_helper()
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> test_flip_reference_helper()
|
||||
{
|
||||
etl::bitset<64, int64_t> data;
|
||||
data[1].flip();
|
||||
@ -930,7 +930,7 @@ namespace
|
||||
TEST(test_flip_reference)
|
||||
{
|
||||
std::bitset<64> compare;
|
||||
constexpr etl::bitset<64, int64_t> data(test_flip_reference_helper());
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data(test_flip_reference_helper());
|
||||
|
||||
compare[1].flip();
|
||||
compare[3].flip();
|
||||
@ -955,7 +955,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
constexpr etl::bitset<64, int64_t> test_assignment_operator_helper(etl::bitset<64, int64_t> to, const etl::bitset<64, int64_t>& from)
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> test_assignment_operator_helper(etl::bitset<64, int64_t> to, const etl::bitset<64, int64_t>& from)
|
||||
{
|
||||
to = from;
|
||||
|
||||
@ -964,9 +964,9 @@ namespace
|
||||
|
||||
TEST(test_assignment_operator)
|
||||
{
|
||||
constexpr std::bitset<64> compare(0xFFFFFFFFFFFFFFFULL);
|
||||
constexpr etl::bitset<64, int64_t> data1(0xFFFFFFFFFFFFFFFULL);
|
||||
constexpr etl::bitset<64, int64_t> data2(test_assignment_operator_helper(etl::bitset<64, int64_t>(), data1));
|
||||
ETL_CONSTEXPR14 std::bitset<64> compare(0xFFFFFFFFFFFFFFFULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data1(0xFFFFFFFFFFFFFFFULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data2(test_assignment_operator_helper(etl::bitset<64, int64_t>(), data1));
|
||||
|
||||
for (size_t i = 0UL; i < data2.size(); ++i)
|
||||
{
|
||||
@ -977,12 +977,12 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_equality_operator)
|
||||
{
|
||||
constexpr etl::bitset<64, int64_t> data1(0x123456781234567ULL);
|
||||
constexpr etl::bitset<64, int64_t> data2(0x123456781234567ULL);
|
||||
constexpr etl::bitset<64, int64_t> data3;
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data1(0x123456781234567ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data2(0x123456781234567ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data3;
|
||||
|
||||
constexpr bool equal = (data1 == data2);
|
||||
constexpr bool not_equal = !(data1 == data3);
|
||||
ETL_CONSTEXPR14 bool equal = (data1 == data2);
|
||||
ETL_CONSTEXPR14 bool not_equal = !(data1 == data3);
|
||||
|
||||
CHECK(equal);
|
||||
CHECK(not_equal);
|
||||
@ -991,12 +991,12 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_inequality_operator)
|
||||
{
|
||||
constexpr etl::bitset<64, int64_t> data1(0x123456781234567ULL);
|
||||
constexpr etl::bitset<64, int64_t> data2(0x123456781234567ULL);
|
||||
constexpr etl::bitset<64, int64_t> data3;
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data1(0x123456781234567ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data2(0x123456781234567ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data3;
|
||||
|
||||
constexpr bool equal = !(data1 != data2);
|
||||
constexpr bool not_equal = (data1 != data3);
|
||||
ETL_CONSTEXPR14 bool equal = !(data1 != data2);
|
||||
ETL_CONSTEXPR14 bool not_equal = (data1 != data3);
|
||||
|
||||
CHECK(equal);
|
||||
CHECK(not_equal);
|
||||
@ -1005,9 +1005,9 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_shift_left_operator)
|
||||
{
|
||||
constexpr etl::bitset<64, int64_t> shift1(0x2468ACF0ULL);
|
||||
constexpr etl::bitset<64, int64_t> shift2(0x48D159E0ULL);
|
||||
constexpr etl::bitset<64, int64_t> shift11(0x91A2B3C000ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> shift1(0x2468ACF0ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> shift2(0x48D159E0ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> shift11(0x91A2B3C000ULL);
|
||||
|
||||
CHECK((generate_shift_left_bitset<64, int64_t>(0x12345678ULL, 1U)) == shift1);
|
||||
CHECK((generate_shift_left_bitset<64, int64_t>(0x12345678ULL, 2U)) == shift2);
|
||||
@ -1017,8 +1017,8 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_shift_left_operator_overflow)
|
||||
{
|
||||
constexpr etl::bitset<32, int32_t> data(generate_shift_left_bitset<32, int32_t>(0x7FFFFFFFULL, 1U));
|
||||
constexpr etl::bitset<32, int32_t> shifted(0xFFFFFFFEUL);
|
||||
ETL_CONSTEXPR14 etl::bitset<32, int32_t> data(generate_shift_left_bitset<32, int32_t>(0x7FFFFFFFULL, 1U));
|
||||
ETL_CONSTEXPR14 etl::bitset<32, int32_t> shifted(0xFFFFFFFEUL);
|
||||
|
||||
CHECK_EQUAL_HEX(shifted.value<int32_t>(), data.value<int32_t>());
|
||||
}
|
||||
@ -1026,16 +1026,16 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_shift_left_copy_operator)
|
||||
{
|
||||
constexpr etl::bitset<64, int64_t> shift8(0x1234567800ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> shift8(0x1234567800ULL);
|
||||
CHECK_EQUAL_HEX(shift8.value<int64_t>(), (generate_shift_left_bitset_copy<64, int64_t>(0x12345678UL, 8U).value<int64_t>()));
|
||||
|
||||
constexpr etl::bitset<64, int64_t> shift16(0x123456780000ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> shift16(0x123456780000ULL);
|
||||
CHECK_EQUAL_HEX(shift16.value<int64_t>(), (generate_shift_left_bitset_copy<64, int64_t>(0x12345678UL, 16U).value<int64_t>()));
|
||||
|
||||
constexpr etl::bitset<64, int64_t> shift24(0x12345678000000ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> shift24(0x12345678000000ULL);
|
||||
CHECK_EQUAL_HEX(shift24.value<int64_t>(), (generate_shift_left_bitset_copy<64, int64_t>(0x12345678UL, 24U).value<int64_t>()));
|
||||
|
||||
constexpr etl::bitset<64, int64_t> shift64(0x0000000000000000ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> shift64(0x0000000000000000ULL);
|
||||
CHECK_EQUAL_HEX(shift64.value<int64_t>(), (generate_shift_left_bitset_copy<64, int64_t>(0x12345678UL, 64U).value<int64_t>()));
|
||||
}
|
||||
|
||||
@ -1114,9 +1114,9 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_shift_right_operator)
|
||||
{
|
||||
constexpr etl::bitset<64, int64_t> shift1(0x91A2B3CULL);
|
||||
constexpr etl::bitset<64, int64_t> shift2(0x48D159EULL);
|
||||
constexpr etl::bitset<64, int64_t> shift11(0x2468AULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> shift1(0x91A2B3CULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> shift2(0x48D159EULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> shift11(0x2468AULL);
|
||||
|
||||
CHECK_EQUAL_HEX(shift1.value<int64_t>(), (generate_shift_right_bitset<64, int64_t>(0x12345678ULL, 1U).value<int64_t>()));
|
||||
CHECK_EQUAL_HEX(shift2.value<int64_t>(), (generate_shift_right_bitset<64, int64_t>(0x12345678ULL, 2U).value<int64_t>()));
|
||||
@ -1126,16 +1126,16 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_shift_right_copy_operator)
|
||||
{
|
||||
constexpr etl::bitset<64, int64_t> shift8(0x123456ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> shift8(0x123456ULL);
|
||||
CHECK_EQUAL_HEX(shift8.value<int64_t>(), (generate_shift_right_bitset_copy<64, int64_t>(0x12345678UL, 8U).value<int64_t>()));
|
||||
|
||||
constexpr etl::bitset<64, int64_t> shift16(0x1234ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> shift16(0x1234ULL);
|
||||
CHECK_EQUAL_HEX(shift16.value<int64_t>(), (generate_shift_right_bitset_copy<64, int64_t>(0x12345678UL, 16U).value<int64_t>()));
|
||||
|
||||
constexpr etl::bitset<64, int64_t> shift24(0x12ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> shift24(0x12ULL);
|
||||
CHECK_EQUAL_HEX(shift24.value<int64_t>(), (generate_shift_right_bitset_copy<64, int64_t>(0x12345678UL, 24U).value<int64_t>()));
|
||||
|
||||
constexpr etl::bitset<64, int64_t> shift60(0x00ULL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> shift60(0x00ULL);
|
||||
CHECK_EQUAL_HEX(shift60.value<int64_t>(), (generate_shift_right_bitset_copy<64, int64_t>(0x12345678UL, 60U).value<int64_t>()));
|
||||
}
|
||||
|
||||
@ -1287,16 +1287,16 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_and_operator)
|
||||
{
|
||||
constexpr etl::bitset<64, int64_t> data1(0x12345678UL);
|
||||
constexpr etl::bitset<64, int64_t> data2(0x23456789UL);
|
||||
constexpr etl::bitset<64, int64_t> data4(0x12345678UL & 0x23456789UL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data1(0x12345678UL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data2(0x23456789UL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data4(0x12345678UL & 0x23456789UL);
|
||||
|
||||
constexpr etl::bitset<64, int64_t> data3 = data1 & data2;
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data3 = data1 & data2;
|
||||
CHECK(data3 == data4);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
constexpr etl::bitset<64, int64_t> test_and_equals_operator_helper(etl::bitset<64, int64_t> data1, const etl::bitset<64, int64_t>& data2)
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> test_and_equals_operator_helper(etl::bitset<64, int64_t> data1, const etl::bitset<64, int64_t>& data2)
|
||||
{
|
||||
data1 &= data2;
|
||||
|
||||
@ -1305,10 +1305,10 @@ namespace
|
||||
|
||||
TEST(test_and_equals_operator)
|
||||
{
|
||||
constexpr etl::bitset<64, int64_t> data1(0x12345678UL);
|
||||
constexpr etl::bitset<64, int64_t> data2(0x23456789UL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data1(0x12345678UL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data2(0x23456789UL);
|
||||
|
||||
constexpr etl::bitset<64, int64_t> data3(test_and_equals_operator_helper(data1, data2));
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data3(test_and_equals_operator_helper(data1, data2));
|
||||
|
||||
CHECK((data1 & data2) == data3);
|
||||
}
|
||||
@ -1316,16 +1316,16 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_or_operator)
|
||||
{
|
||||
constexpr etl::bitset<64, int64_t> data1(0x12345678UL);
|
||||
constexpr etl::bitset<64, int64_t> data2(0x23456789UL);
|
||||
constexpr etl::bitset<64, int64_t> data4(0x12345678UL | 0x23456789UL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data1(0x12345678UL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data2(0x23456789UL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data4(0x12345678UL | 0x23456789UL);
|
||||
|
||||
constexpr etl::bitset<64, int64_t> data3 = data1 | data2;
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data3 = data1 | data2;
|
||||
CHECK(data3 == data4);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
constexpr etl::bitset<64, int64_t> test_or_equals_operator_helper(etl::bitset<64, int64_t> data1, const etl::bitset<64, int64_t>& data2)
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> test_or_equals_operator_helper(etl::bitset<64, int64_t> data1, const etl::bitset<64, int64_t>& data2)
|
||||
{
|
||||
data1 |= data2;
|
||||
|
||||
@ -1334,10 +1334,10 @@ namespace
|
||||
|
||||
TEST(test_or_equals_operator)
|
||||
{
|
||||
constexpr etl::bitset<64, int64_t> data1(0x12345678UL);
|
||||
constexpr etl::bitset<64, int64_t> data2(0x23456789UL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data1(0x12345678UL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data2(0x23456789UL);
|
||||
|
||||
constexpr etl::bitset<64, int64_t> data3(test_or_equals_operator_helper(data1, data2));
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data3(test_or_equals_operator_helper(data1, data2));
|
||||
|
||||
CHECK((data1 | data2) == data3);
|
||||
}
|
||||
@ -1345,16 +1345,16 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_xor_operator)
|
||||
{
|
||||
constexpr etl::bitset<64, int64_t> data1(0x12345678UL);
|
||||
constexpr etl::bitset<64, int64_t> data2(0x23456789UL);
|
||||
constexpr etl::bitset<64, int64_t> data4(0x12345678UL ^ 0x23456789UL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data1(0x12345678UL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data2(0x23456789UL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data4(0x12345678UL ^ 0x23456789UL);
|
||||
|
||||
constexpr etl::bitset<64, int64_t> data3 = data1 ^ data2;
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data3 = data1 ^ data2;
|
||||
CHECK(data3 == data4);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
constexpr etl::bitset<64, int64_t> test_xor_equals_operator_helper(etl::bitset<64, int64_t> data1, const etl::bitset<64, int64_t>& data2)
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> test_xor_equals_operator_helper(etl::bitset<64, int64_t> data1, const etl::bitset<64, int64_t>& data2)
|
||||
{
|
||||
data1 ^= data2;
|
||||
|
||||
@ -1363,10 +1363,10 @@ namespace
|
||||
|
||||
TEST(test_xor_equals_operator)
|
||||
{
|
||||
constexpr etl::bitset<64, int64_t> data1(0x12345678UL);
|
||||
constexpr etl::bitset<64, int64_t> data2(0x23456789UL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data1(0x12345678UL);
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data2(0x23456789UL);
|
||||
|
||||
constexpr etl::bitset<64, int64_t> data3(test_xor_equals_operator_helper(data1, data2));
|
||||
ETL_CONSTEXPR14 etl::bitset<64, int64_t> data3(test_xor_equals_operator_helper(data1, data2));
|
||||
|
||||
CHECK((data1 ^ data2) == data3);
|
||||
}
|
||||
@ -1374,45 +1374,45 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_find_first)
|
||||
{
|
||||
constexpr etl::bitset<8, int8_t> bs1(ull(0x00));
|
||||
constexpr size_t bs1fff = bs1.find_first(false);
|
||||
constexpr size_t bs1fft = bs1.find_first(true);
|
||||
ETL_CONSTEXPR14 etl::bitset<8, int8_t> bs1(ull(0x00));
|
||||
ETL_CONSTEXPR14 size_t bs1fff = bs1.find_first(false);
|
||||
ETL_CONSTEXPR14 size_t bs1fft = bs1.find_first(true);
|
||||
CHECK_EQUAL(0U, bs1fff);
|
||||
CHECK_EQUAL(etl::bitset<>::npos, bs1fft);
|
||||
|
||||
constexpr etl::bitset<8, int8_t> bs2(ull(0xFF));
|
||||
constexpr size_t bs2fff = bs2.find_first(false);
|
||||
constexpr size_t bs2fft = bs2.find_first(true);
|
||||
ETL_CONSTEXPR14 etl::bitset<8, int8_t> bs2(ull(0xFF));
|
||||
ETL_CONSTEXPR14 size_t bs2fff = bs2.find_first(false);
|
||||
ETL_CONSTEXPR14 size_t bs2fft = bs2.find_first(true);
|
||||
CHECK_EQUAL(etl::bitset<>::npos, bs2fff);
|
||||
CHECK_EQUAL(0U, bs2fft);
|
||||
|
||||
constexpr etl::bitset<8, int8_t> bs3(ull(0x01));
|
||||
constexpr size_t bs3fff = bs3.find_first(false);
|
||||
constexpr size_t bs3fft = bs3.find_first(true);
|
||||
ETL_CONSTEXPR14 etl::bitset<8, int8_t> bs3(ull(0x01));
|
||||
ETL_CONSTEXPR14 size_t bs3fff = bs3.find_first(false);
|
||||
ETL_CONSTEXPR14 size_t bs3fft = bs3.find_first(true);
|
||||
CHECK_EQUAL(1U, bs3fff);
|
||||
CHECK_EQUAL(0U, bs3fft);
|
||||
|
||||
constexpr etl::bitset<8, int8_t> bs4(ull(0x20));
|
||||
constexpr size_t bs4fff = bs4.find_first(false);
|
||||
constexpr size_t bs4fft = bs4.find_first(true);
|
||||
ETL_CONSTEXPR14 etl::bitset<8, int8_t> bs4(ull(0x20));
|
||||
ETL_CONSTEXPR14 size_t bs4fff = bs4.find_first(false);
|
||||
ETL_CONSTEXPR14 size_t bs4fft = bs4.find_first(true);
|
||||
CHECK_EQUAL(0U, bs4fff);
|
||||
CHECK_EQUAL(5U, bs4fft);
|
||||
|
||||
constexpr etl::bitset<8, int8_t> bs5(ull(0x21));
|
||||
constexpr size_t bs5fff = bs5.find_first(false);
|
||||
constexpr size_t bs5fft = bs5.find_first(true);
|
||||
ETL_CONSTEXPR14 etl::bitset<8, int8_t> bs5(ull(0x21));
|
||||
ETL_CONSTEXPR14 size_t bs5fff = bs5.find_first(false);
|
||||
ETL_CONSTEXPR14 size_t bs5fft = bs5.find_first(true);
|
||||
CHECK_EQUAL(1U, bs5fff);
|
||||
CHECK_EQUAL(0U, bs5fft);
|
||||
|
||||
constexpr etl::bitset<8, int8_t> bs6(ull(0x0E));
|
||||
constexpr size_t bs6fff = bs6.find_first(false);
|
||||
constexpr size_t bs6fft = bs6.find_first(true);
|
||||
ETL_CONSTEXPR14 etl::bitset<8, int8_t> bs6(ull(0x0E));
|
||||
ETL_CONSTEXPR14 size_t bs6fff = bs6.find_first(false);
|
||||
ETL_CONSTEXPR14 size_t bs6fft = bs6.find_first(true);
|
||||
CHECK_EQUAL(0U, bs6fff);
|
||||
CHECK_EQUAL(1U, bs6fft);
|
||||
|
||||
constexpr etl::bitset<8, int8_t> bs7(ull(0x31));
|
||||
constexpr size_t bs7fff = bs7.find_first(false);
|
||||
constexpr size_t bs7fft = bs7.find_first(true);
|
||||
ETL_CONSTEXPR14 etl::bitset<8, int8_t> bs7(ull(0x31));
|
||||
ETL_CONSTEXPR14 size_t bs7fff = bs7.find_first(false);
|
||||
ETL_CONSTEXPR14 size_t bs7fft = bs7.find_first(true);
|
||||
CHECK_EQUAL(1U, bs7fff);
|
||||
CHECK_EQUAL(0U, bs7fft);
|
||||
}
|
||||
@ -1420,41 +1420,41 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_find_next)
|
||||
{
|
||||
constexpr etl::bitset<8, int8_t> bs1(ull(0x00));
|
||||
constexpr size_t bs1fnf0 = bs1.find_next(false, 0);
|
||||
constexpr size_t bs1fnf1 = bs1.find_next(false, 1);
|
||||
constexpr size_t bs1fnt2 = bs1.find_next(true, 2);
|
||||
ETL_CONSTEXPR14 etl::bitset<8, int8_t> bs1(ull(0x00));
|
||||
ETL_CONSTEXPR14 size_t bs1fnf0 = bs1.find_next(false, 0);
|
||||
ETL_CONSTEXPR14 size_t bs1fnf1 = bs1.find_next(false, 1);
|
||||
ETL_CONSTEXPR14 size_t bs1fnt2 = bs1.find_next(true, 2);
|
||||
CHECK_EQUAL(0U, bs1fnf0);
|
||||
CHECK_EQUAL(1U, bs1fnf1);
|
||||
CHECK_EQUAL(etl::bitset<>::npos, bs1fnt2);
|
||||
|
||||
constexpr etl::bitset<8, int8_t> bs2(ull(0xFF));
|
||||
constexpr size_t bs2fnt0 = bs2.find_next(true, 0);
|
||||
constexpr size_t bs2fnt1 = bs2.find_next(true, 1);
|
||||
constexpr size_t bs2fnf2 = bs2.find_next(false, 2);
|
||||
ETL_CONSTEXPR14 etl::bitset<8, int8_t> bs2(ull(0xFF));
|
||||
ETL_CONSTEXPR14 size_t bs2fnt0 = bs2.find_next(true, 0);
|
||||
ETL_CONSTEXPR14 size_t bs2fnt1 = bs2.find_next(true, 1);
|
||||
ETL_CONSTEXPR14 size_t bs2fnf2 = bs2.find_next(false, 2);
|
||||
CHECK_EQUAL(0U, bs2fnt0);
|
||||
CHECK_EQUAL(1U, bs2fnt1);
|
||||
CHECK_EQUAL(etl::bitset<>::npos, bs2fnf2);
|
||||
|
||||
constexpr etl::bitset<8, int8_t> bs3(ull(0x0E));
|
||||
constexpr size_t bs3fnf0 = bs3.find_next(false, 0);
|
||||
constexpr size_t bs3fnt1 = bs3.find_next(true, 1);
|
||||
constexpr size_t bs3fnf2 = bs3.find_next(false, 2);
|
||||
ETL_CONSTEXPR14 etl::bitset<8, int8_t> bs3(ull(0x0E));
|
||||
ETL_CONSTEXPR14 size_t bs3fnf0 = bs3.find_next(false, 0);
|
||||
ETL_CONSTEXPR14 size_t bs3fnt1 = bs3.find_next(true, 1);
|
||||
ETL_CONSTEXPR14 size_t bs3fnf2 = bs3.find_next(false, 2);
|
||||
CHECK_EQUAL(0U, bs3fnf0);
|
||||
CHECK_EQUAL(1U, bs3fnt1);
|
||||
CHECK_EQUAL(4U, bs3fnf2);
|
||||
|
||||
constexpr etl::bitset<8, int8_t> bs4(ull(0x31));
|
||||
constexpr size_t bs4fnt0 = bs4.find_next(true, 0);
|
||||
constexpr size_t bs4fnf0 = bs4.find_next(false, 0);
|
||||
constexpr size_t bs4fnt1 = bs4.find_next(true, 1);
|
||||
ETL_CONSTEXPR14 etl::bitset<8, int8_t> bs4(ull(0x31));
|
||||
ETL_CONSTEXPR14 size_t bs4fnt0 = bs4.find_next(true, 0);
|
||||
ETL_CONSTEXPR14 size_t bs4fnf0 = bs4.find_next(false, 0);
|
||||
ETL_CONSTEXPR14 size_t bs4fnt1 = bs4.find_next(true, 1);
|
||||
CHECK_EQUAL(0U, bs4fnt0);
|
||||
CHECK_EQUAL(1U, bs4fnf0);
|
||||
CHECK_EQUAL(4U, bs4fnt1);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
constexpr std::pair<etl::bitset<8, int8_t>, etl::bitset<8, int8_t>> test_swap_helper()
|
||||
ETL_CONSTEXPR14 std::pair<etl::bitset<8, int8_t>, etl::bitset<8, int8_t>> test_swap_helper()
|
||||
{
|
||||
etl::bitset<8, int8_t> data1(ull(0x2A));
|
||||
etl::bitset<8, int8_t> data2(ull(0x15));
|
||||
@ -1466,10 +1466,10 @@ namespace
|
||||
|
||||
TEST(test_swap)
|
||||
{
|
||||
constexpr etl::bitset<8, int8_t> compare1(0x2A);
|
||||
constexpr etl::bitset<8, int8_t> compare2(0x15);
|
||||
ETL_CONSTEXPR14 etl::bitset<8, int8_t> compare1(0x2A);
|
||||
ETL_CONSTEXPR14 etl::bitset<8, int8_t> compare2(0x15);
|
||||
|
||||
constexpr std::pair<etl::bitset<8, int8_t>, etl::bitset<8, int8_t>> swapped = test_swap_helper();
|
||||
ETL_CONSTEXPR14 std::pair<etl::bitset<8, int8_t>, etl::bitset<8, int8_t>> swapped = test_swap_helper();
|
||||
|
||||
CHECK(swapped.first == compare2);
|
||||
CHECK(swapped.second == compare1);
|
||||
@ -1502,7 +1502,7 @@ namespace
|
||||
{
|
||||
using bs32 = etl::bitset<32, int32_t>;
|
||||
|
||||
constexpr bs32 b(0x12345678UL);
|
||||
ETL_CONSTEXPR14 bs32 b(0x12345678UL);
|
||||
|
||||
etl::string<32> text = b.to_string('.', '*');
|
||||
std::string stdtext = b.to_string<std::string>('.', '*');
|
||||
@ -1517,7 +1517,7 @@ namespace
|
||||
{
|
||||
using bs32 = etl::bitset<32, int32_t>;
|
||||
|
||||
constexpr bs32 b(0x12345678UL);
|
||||
ETL_CONSTEXPR14 bs32 b(0x12345678UL);
|
||||
|
||||
etl::wstring<32> text = b.to_string<etl::wstring<32>>(L'.', L'*');
|
||||
std::wstring stdtext = b.to_string<std::wstring>(L'.', L'*');
|
||||
@ -1531,7 +1531,7 @@ namespace
|
||||
{
|
||||
using bs32 = etl::bitset<32, int32_t>;
|
||||
|
||||
constexpr bs32 b(0x12345678UL);
|
||||
ETL_CONSTEXPR14 bs32 b(0x12345678UL);
|
||||
|
||||
etl::u16string<32> text = b.to_string<etl::u16string<32>>(u'.', u'*');
|
||||
std::u16string stdtext = b.to_string<std::u16string>(u'.', u'*');
|
||||
@ -1545,7 +1545,7 @@ namespace
|
||||
{
|
||||
using bs32 = etl::bitset<32, int32_t>;
|
||||
|
||||
constexpr bs32 b(0x12345678UL);
|
||||
ETL_CONSTEXPR14 bs32 b(0x12345678UL);
|
||||
|
||||
etl::u32string<32> text = b.to_string<etl::u32string<32>>(U'.', U'*');
|
||||
std::u32string stdtext = b.to_string<std::u32string>(U'.', U'*');
|
||||
|
||||
@ -1802,13 +1802,13 @@ namespace
|
||||
etl::bitset_ext<64>::element_type buffer1[etl::bitset_ext<64>::Number_Of_Elements];
|
||||
etl::bitset_ext<64>::element_type buffer2[etl::bitset_ext<64>::Number_Of_Elements];
|
||||
|
||||
etl::bitset_ext<64> bs1(ull(0xC000'0000'0000'0031), buffer1);
|
||||
etl::bitset_ext<64> bs1(ull(0xC000000000000031), buffer1);
|
||||
size_t bs1fnt1 = bs1.find_next(true, 10);
|
||||
size_t bs1fnt2 = bs1.find_next(true, 59);
|
||||
CHECK_EQUAL(62U, bs1fnt1);
|
||||
CHECK_EQUAL(62U, bs1fnt2);
|
||||
|
||||
etl::bitset_ext<64> bs2(ull(0x3FFF'FFFF'FFFF'FFCE), buffer2);
|
||||
etl::bitset_ext<64> bs2(ull(0x3FFFFFFFFFFFFFCE), buffer2);
|
||||
size_t bs2fnf1 = bs2.find_next(false, 10);
|
||||
size_t bs2fnf2 = bs2.find_next(false, 59);
|
||||
CHECK_EQUAL(62U, bs2fnf1);
|
||||
|
||||
@ -31,8 +31,20 @@ SOFTWARE.
|
||||
#include <forward_list>
|
||||
#include <array>
|
||||
|
||||
#include "etl/iterator.h"
|
||||
#include "etl/circular_iterator.h"
|
||||
|
||||
#if ETL_USING_STL
|
||||
#if ETL_USING_CPP14
|
||||
#define ETL_OR_STD_R std
|
||||
#else
|
||||
// STL doesn't have rbegin() or rend() before C++14
|
||||
#define ETL_OR_STD_R etl
|
||||
#endif
|
||||
#else
|
||||
#define ETL_OR_STD_R etl
|
||||
#endif
|
||||
|
||||
namespace
|
||||
{
|
||||
using DataE = std::array<int, 10U>;
|
||||
@ -151,7 +163,7 @@ namespace
|
||||
{
|
||||
const DataL data = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
|
||||
|
||||
etl::circular_iterator<DataL::const_reverse_iterator> ci(std::rbegin(data), std::rend(data));
|
||||
etl::circular_iterator<DataL::const_reverse_iterator> ci(ETL_OR_STD_R::rbegin(data), ETL_OR_STD_R::rend(data));
|
||||
|
||||
CHECK(data.rbegin() == ci.begin());
|
||||
CHECK(data.rend() == ci.end());
|
||||
@ -164,10 +176,10 @@ namespace
|
||||
{
|
||||
const DataL data = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
|
||||
|
||||
DataL::const_reverse_iterator start = std::rbegin(data);
|
||||
DataL::const_reverse_iterator start = ETL_OR_STD_R::rbegin(data);
|
||||
start++;
|
||||
|
||||
etl::circular_iterator<DataL::const_reverse_iterator> ci(std::rbegin(data), std::rend(data), start);
|
||||
etl::circular_iterator<DataL::const_reverse_iterator> ci(ETL_OR_STD_R::rbegin(data), ETL_OR_STD_R::rend(data), start);
|
||||
|
||||
CHECK(data.rbegin() == ci.begin());
|
||||
CHECK(data.rend() == ci.end());
|
||||
@ -293,7 +305,7 @@ namespace
|
||||
const int data[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
|
||||
const DataE expected = { 8, 7, 6, 5, 4, 3, 2, 1, 0, 9 };
|
||||
|
||||
etl::circular_iterator<ConstReversePointer> ci(std::rbegin(data), std::rend(data));
|
||||
etl::circular_iterator<ConstReversePointer> ci(ETL_OR_STD_R::rbegin(data), ETL_OR_STD_R::rend(data));
|
||||
|
||||
for (int i = 0; i < 20; ++i)
|
||||
{
|
||||
@ -307,7 +319,7 @@ namespace
|
||||
const DataL data = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
|
||||
const DataE expected = { 8, 7, 6, 5, 4, 3, 2, 1, 0, 9 };
|
||||
|
||||
etl::circular_iterator<DataL::const_reverse_iterator> ci(std::rbegin(data), std::rend(data));
|
||||
etl::circular_iterator<DataL::const_reverse_iterator> ci(ETL_OR_STD_R::rbegin(data), ETL_OR_STD_R::rend(data));
|
||||
|
||||
for (int i = 0; i < 20; ++i)
|
||||
{
|
||||
@ -321,7 +333,7 @@ namespace
|
||||
const int data[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
|
||||
const DataE expected = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
|
||||
|
||||
etl::circular_iterator<ConstReversePointer> ci(std::rbegin(data), std::rend(data));
|
||||
etl::circular_iterator<ConstReversePointer> ci(ETL_OR_STD_R::rbegin(data), ETL_OR_STD_R::rend(data));
|
||||
|
||||
for (int i = 0; i < 20; ++i)
|
||||
{
|
||||
@ -335,7 +347,7 @@ namespace
|
||||
const DataL data = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
|
||||
const DataE expected = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
|
||||
|
||||
etl::circular_iterator<DataL::const_reverse_iterator> ci(std::rbegin(data), std::rend(data));
|
||||
etl::circular_iterator<DataL::const_reverse_iterator> ci(ETL_OR_STD_R::rbegin(data), ETL_OR_STD_R::rend(data));
|
||||
|
||||
for (int i = 0; i < 20; ++i)
|
||||
{
|
||||
@ -377,7 +389,7 @@ namespace
|
||||
const int data[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
|
||||
const DataE expected = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
|
||||
|
||||
etl::circular_iterator<ConstReversePointer> ci(std::rbegin(data), std::rend(data));
|
||||
etl::circular_iterator<ConstReversePointer> ci(ETL_OR_STD_R::rbegin(data), ETL_OR_STD_R::rend(data));
|
||||
|
||||
for (int i = 0; i < 20; ++i)
|
||||
{
|
||||
@ -391,7 +403,7 @@ namespace
|
||||
const DataL data = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
|
||||
const DataE expected = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
|
||||
|
||||
etl::circular_iterator<DataL::const_reverse_iterator> ci(std::rbegin(data), std::rend(data));
|
||||
etl::circular_iterator<DataL::const_reverse_iterator> ci(ETL_OR_STD_R::rbegin(data), ETL_OR_STD_R::rend(data));
|
||||
|
||||
for (int i = 0; i < 20; ++i)
|
||||
{
|
||||
@ -433,7 +445,7 @@ namespace
|
||||
const int data[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
|
||||
const DataE expected = { 9, 0, 1, 2, 3, 4, 5, 6, 7, 8 };
|
||||
|
||||
etl::circular_iterator<ConstReversePointer> ci(std::rbegin(data), std::rend(data));
|
||||
etl::circular_iterator<ConstReversePointer> ci(ETL_OR_STD_R::rbegin(data), ETL_OR_STD_R::rend(data));
|
||||
|
||||
for (int i = 0; i < 20; ++i)
|
||||
{
|
||||
@ -447,7 +459,7 @@ namespace
|
||||
const DataL data = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
|
||||
const DataE expected = { 9, 0, 1, 2, 3, 4, 5, 6, 7, 8 };
|
||||
|
||||
etl::circular_iterator<DataL::const_reverse_iterator> ci(std::rbegin(data), std::rend(data));
|
||||
etl::circular_iterator<DataL::const_reverse_iterator> ci(ETL_OR_STD_R::rbegin(data), ETL_OR_STD_R::rend(data));
|
||||
|
||||
for (int i = 0; i < 20; ++i)
|
||||
{
|
||||
|
||||
@ -270,6 +270,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST_FIXTURE(SetupFixture, test_constexpr_is_valid_false)
|
||||
{
|
||||
constexpr etl::delegate<void(void)> d;
|
||||
@ -279,6 +280,7 @@ namespace
|
||||
|
||||
CHECK_THROW(d(), etl::delegate_uninitialised);
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_is_valid_true)
|
||||
@ -301,6 +303,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST_FIXTURE(SetupFixture, test_free_void_constexpr)
|
||||
{
|
||||
constexpr auto d = etl::delegate<void(void)>::create<free_void>();
|
||||
@ -309,6 +312,7 @@ namespace
|
||||
|
||||
CHECK(function_called == FunctionCalled::Free_Void_Called);
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_free_int)
|
||||
@ -322,6 +326,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST_FIXTURE(SetupFixture, test_free_int_constexpr)
|
||||
{
|
||||
constexpr auto d = etl::delegate<void(int, int)>::create<free_int>();
|
||||
@ -331,6 +336,7 @@ namespace
|
||||
CHECK(function_called == FunctionCalled::Free_Int_Called);
|
||||
CHECK(parameter_correct);
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_free_reference)
|
||||
@ -347,6 +353,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST_FIXTURE(SetupFixture, test_free_reference_constexpr)
|
||||
{
|
||||
constexpr etl::delegate<void(const Data&, int)> d = etl::delegate<void(const Data&, int)>::create<free_reference>();
|
||||
@ -359,6 +366,7 @@ namespace
|
||||
CHECK(function_called == FunctionCalled::Free_Reference_Called);
|
||||
CHECK(parameter_correct);
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_free_moveableonly)
|
||||
@ -375,6 +383,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST_FIXTURE(SetupFixture, test_free_moveableonly_constexpr)
|
||||
{
|
||||
constexpr auto d = etl::delegate<void(MoveableOnlyData&&)>::create<free_moveableonly>();
|
||||
@ -387,6 +396,7 @@ namespace
|
||||
CHECK(function_called == FunctionCalled::Free_Moveableonly_Called);
|
||||
CHECK(parameter_correct);
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_lambda_int)
|
||||
@ -437,6 +447,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST_FIXTURE(SetupFixture, test_member_operator_void_create_constexpr)
|
||||
{
|
||||
static Test test;
|
||||
@ -447,6 +458,7 @@ namespace
|
||||
|
||||
CHECK(function_called == FunctionCalled::Operator_Called);
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_member_operator_void_const)
|
||||
@ -472,6 +484,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST_FIXTURE(SetupFixture, test_member_operator_void_compile_time_constexpr)
|
||||
{
|
||||
constexpr auto d = etl::delegate<void(void)>::create<Test, test_static>();
|
||||
@ -480,6 +493,7 @@ namespace
|
||||
|
||||
CHECK(function_called == FunctionCalled::Operator_Called);
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_member_operator_void_compile_time_const)
|
||||
@ -492,6 +506,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST_FIXTURE(SetupFixture, test_member_operator_void_compile_time_const_constexpr)
|
||||
{
|
||||
constexpr auto d = etl::delegate<void(void)>::create<const Test, const_test_static>();
|
||||
@ -500,6 +515,7 @@ namespace
|
||||
|
||||
CHECK(function_called == FunctionCalled::Operator_Const_Called);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
@ -529,6 +545,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST_FIXTURE(SetupFixture, test_member_void_constexpr)
|
||||
{
|
||||
static Test test;
|
||||
@ -539,6 +556,7 @@ namespace
|
||||
|
||||
CHECK(function_called == FunctionCalled::Member_Void_Called);
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_member_void_const)
|
||||
@ -553,6 +571,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST_FIXTURE(SetupFixture, test_member_void_const_constexpr)
|
||||
{
|
||||
static const Test test;
|
||||
@ -563,6 +582,7 @@ namespace
|
||||
|
||||
CHECK(function_called == FunctionCalled::Member_Void_Const_Called);
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_member_int)
|
||||
@ -578,6 +598,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST_FIXTURE(SetupFixture, test_member_int_constexpr)
|
||||
{
|
||||
static Test test;
|
||||
@ -589,6 +610,7 @@ namespace
|
||||
CHECK(function_called == FunctionCalled::Member_Int_Called);
|
||||
CHECK(parameter_correct);
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_member_int_const)
|
||||
@ -604,6 +626,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST_FIXTURE(SetupFixture, test_member_int_const_constexpr)
|
||||
{
|
||||
static const Test test;
|
||||
@ -615,6 +638,7 @@ namespace
|
||||
CHECK(function_called == FunctionCalled::Member_Int_Const_Called);
|
||||
CHECK(parameter_correct);
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_member_reference)
|
||||
@ -632,6 +656,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST_FIXTURE(SetupFixture, test_member_reference_constexpr)
|
||||
{
|
||||
static Test test;
|
||||
@ -645,6 +670,7 @@ namespace
|
||||
CHECK(function_called == FunctionCalled::Member_Reference_Called);
|
||||
CHECK(parameter_correct);
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_member_reference_const)
|
||||
@ -662,6 +688,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST_FIXTURE(SetupFixture, test_member_reference_const_constexpr)
|
||||
{
|
||||
static const Test test;
|
||||
@ -675,6 +702,7 @@ namespace
|
||||
CHECK(function_called == FunctionCalled::Member_Reference_Const_Called);
|
||||
CHECK(parameter_correct);
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_member_moveableonly)
|
||||
@ -692,6 +720,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST_FIXTURE(SetupFixture, test_member_moveableonly_constexpr)
|
||||
{
|
||||
static Test test;
|
||||
@ -705,6 +734,7 @@ namespace
|
||||
CHECK(function_called == FunctionCalled::Member_Moveableonly_Called);
|
||||
CHECK(parameter_correct);
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_member_static)
|
||||
@ -721,6 +751,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST_FIXTURE(SetupFixture, test_member_static_constexpr)
|
||||
{
|
||||
constexpr auto d = etl::delegate<void(const Data&, int)>::create<Test::member_static>();
|
||||
@ -733,6 +764,7 @@ namespace
|
||||
CHECK(function_called == FunctionCalled::Member_Static_Called);
|
||||
CHECK(parameter_correct);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !(defined(ETL_COMPILER_GCC) && (__GNUC__ <= 5))
|
||||
//*************************************************************************
|
||||
@ -746,6 +778,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST_FIXTURE(SetupFixture, test_member_void_compile_time_constexpr)
|
||||
{
|
||||
constexpr auto d = etl::delegate<void(void)>::create<Test, test_static, &Test::member_void>();
|
||||
@ -754,6 +787,7 @@ namespace
|
||||
|
||||
CHECK(function_called == FunctionCalled::Member_Void_Called);
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_member_void_const_compile_time)
|
||||
@ -766,6 +800,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST_FIXTURE(SetupFixture, test_member_void_const_compile_time_constexpr)
|
||||
{
|
||||
constexpr auto d = etl::delegate<void(void)>::create<Test, const_test_static, &Test::member_void_const>();
|
||||
@ -774,6 +809,7 @@ namespace
|
||||
|
||||
CHECK(function_called == FunctionCalled::Member_Void_Const_Called);
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_member_int_compile_time)
|
||||
@ -787,6 +823,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST_FIXTURE(SetupFixture, test_member_int_compile_time_constexpr)
|
||||
{
|
||||
constexpr auto d = etl::delegate<void(int, int)>::create<Test, test_static, &Test::member_int>();
|
||||
@ -796,6 +833,7 @@ namespace
|
||||
CHECK(function_called == FunctionCalled::Member_Int_Called);
|
||||
CHECK(parameter_correct);
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_member_int_const_compile_time)
|
||||
@ -809,6 +847,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST_FIXTURE(SetupFixture, test_member_int_const_compile_time_constexpr)
|
||||
{
|
||||
constexpr auto d = etl::delegate<void(int, int)>::create<Test, const_test_static, &Test::member_int_const>();
|
||||
@ -818,6 +857,7 @@ namespace
|
||||
CHECK(function_called == FunctionCalled::Member_Int_Const_Called);
|
||||
CHECK(parameter_correct);
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_member_reference_compile_time)
|
||||
@ -834,6 +874,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST_FIXTURE(SetupFixture, test_member_reference_compile_time_constexpr)
|
||||
{
|
||||
constexpr auto d = etl::delegate<void(const Data&, int)>::create<Test, test_static, &Test::member_reference>();
|
||||
@ -846,6 +887,7 @@ namespace
|
||||
CHECK(function_called == FunctionCalled::Member_Reference_Called);
|
||||
CHECK(parameter_correct);
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_member_reference_const_compile_time)
|
||||
@ -862,6 +904,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST_FIXTURE(SetupFixture, test_member_reference_const_compile_time_constexpr)
|
||||
{
|
||||
constexpr auto d = etl::delegate<void(const Data&, int)>::create<Test, const_test_static, &Test::member_reference_const>();
|
||||
@ -874,6 +917,7 @@ namespace
|
||||
CHECK(function_called == FunctionCalled::Member_Reference_Const_Called);
|
||||
CHECK(parameter_correct);
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_set_free_int)
|
||||
@ -983,6 +1027,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST_FIXTURE(SetupFixture, test_copy_construct_constexpr)
|
||||
{
|
||||
static Test test;
|
||||
@ -995,6 +1040,7 @@ namespace
|
||||
CHECK(function_called == FunctionCalled::Member_Int_Called);
|
||||
CHECK(parameter_correct);
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_assignment)
|
||||
|
||||
@ -96,13 +96,13 @@ namespace
|
||||
Test test;
|
||||
|
||||
// Callback for 'member2'.
|
||||
constexpr Service::delegate_type member_callback = Service::delegate_type::create<Test, test, &Test::member2>();
|
||||
ETL_CONSTEXPR14 Service::delegate_type member_callback = Service::delegate_type::create<Test, test, &Test::member2>();
|
||||
|
||||
// Callback for 'global'.
|
||||
constexpr Service::delegate_type global_callback = Service::delegate_type::create<global>();
|
||||
ETL_CONSTEXPR14 Service::delegate_type global_callback = Service::delegate_type::create<global>();
|
||||
|
||||
// Callback for 'unhandled'.
|
||||
constexpr Service::delegate_type unhandled_callback = Service::delegate_type::create<unhandled>();
|
||||
ETL_CONSTEXPR14 Service::delegate_type unhandled_callback = Service::delegate_type::create<unhandled>();
|
||||
|
||||
//*****************************************************************************
|
||||
// Initialises the test results.
|
||||
|
||||
@ -85,15 +85,15 @@ namespace
|
||||
Test test;
|
||||
|
||||
// Callback for 'member'.
|
||||
constexpr etl::delegate<void(size_t)> member_callback = etl::delegate<void(size_t)>::create<Test, test, &Test::member>();
|
||||
ETL_CONSTEXPR14 etl::delegate<void(size_t)> member_callback = etl::delegate<void(size_t)>::create<Test, test, &Test::member>();
|
||||
|
||||
// Callback for 'global'.
|
||||
constexpr etl::delegate<void(size_t)> global_callback = etl::delegate<void(size_t)>::create<global>();
|
||||
ETL_CONSTEXPR14 etl::delegate<void(size_t)> global_callback = etl::delegate<void(size_t)>::create<global>();
|
||||
|
||||
// Callback for 'unhandled'.
|
||||
constexpr etl::delegate<void(size_t)> unhandled_callback = etl::delegate<void(size_t)>::create<unhandled>();
|
||||
ETL_CONSTEXPR14 etl::delegate<void(size_t)> unhandled_callback = etl::delegate<void(size_t)>::create<unhandled>();
|
||||
|
||||
constexpr etl::delegate<void(size_t)> delegate_list[]
|
||||
ETL_CONSTEXPR14 etl::delegate<void(size_t)> delegate_list[]
|
||||
{
|
||||
global_callback,
|
||||
member_callback,
|
||||
|
||||
@ -62,6 +62,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST(test_constexpr_values)
|
||||
{
|
||||
constexpr enum_test zero = enum_test::ZERO;
|
||||
@ -85,6 +86,7 @@ namespace
|
||||
CHECK_EQUAL(0, enum_zero2.get_value());
|
||||
CHECK_EQUAL(std::string("ZERO"), std::string(string_zero));
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_c_str)
|
||||
|
||||
@ -89,6 +89,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST(test_constexpr)
|
||||
{
|
||||
constexpr Flags cef1;
|
||||
@ -176,6 +177,7 @@ namespace
|
||||
CHECK(!is_not_same2);
|
||||
CHECK(!is_not_same3);
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_value_masked)
|
||||
|
||||
@ -92,6 +92,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST(test_format_constexpr)
|
||||
{
|
||||
constexpr etl::format_spec format = etl::format_spec().base(16).boolalpha(true).fill('?').left().precision(6).show_base(true).upper_case(true).width(10);
|
||||
@ -116,6 +117,7 @@ namespace
|
||||
CHECK_EQUAL(true, show_base);
|
||||
CHECK_EQUAL(true, upper_case);
|
||||
}
|
||||
#endif
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@ -72,7 +72,7 @@ namespace
|
||||
return reinterpret_cast<char*>(uintptr_t(i));
|
||||
}
|
||||
|
||||
std::aligned_storage_t<Size, Alignment> buffer;
|
||||
typename std::aligned_storage<Size, Alignment>::type buffer;
|
||||
|
||||
SUITE(test_mem_cast_ptr)
|
||||
{
|
||||
|
||||
@ -712,7 +712,7 @@ namespace
|
||||
using CSet = std::multiset<int, std::less<int>>;
|
||||
CSet compare_data(initial_data.begin(), initial_data.end());
|
||||
|
||||
using ESet = etl::multiset<int, MAX_SIZE, std::less<>>;
|
||||
using ESet = etl::multiset<int, MAX_SIZE, etl::less<>>;
|
||||
ESet data(initial_data.begin(), initial_data.end());
|
||||
|
||||
size_t compare_count = compare_data.erase(2);
|
||||
@ -857,7 +857,7 @@ namespace
|
||||
using CSet = std::multiset<int, std::less<int>>;
|
||||
const CSet compare_data(initial_data.begin(), initial_data.end());
|
||||
|
||||
using ESet = etl::multiset<int, MAX_SIZE, std::less<>>;
|
||||
using ESet = etl::multiset<int, MAX_SIZE, etl::less<>>;
|
||||
const ESet data(initial_data.begin(), initial_data.end());
|
||||
|
||||
CHECK_EQUAL(compare_data.count(-1), data.count(Key(-1)));
|
||||
@ -976,7 +976,7 @@ namespace
|
||||
using CSet = std::multiset<int, std::less<int>>;
|
||||
CSet compare_data(initial_data.begin(), initial_data.end());
|
||||
|
||||
using ESet = etl::multiset<int, MAX_SIZE, std::less<>>;
|
||||
using ESet = etl::multiset<int, MAX_SIZE, etl::less<>>;
|
||||
ESet data(initial_data.begin(), initial_data.end());
|
||||
|
||||
ESet::iterator i_data = data.find(Key(0));
|
||||
@ -1069,7 +1069,7 @@ namespace
|
||||
using CSet = std::multiset<int, std::less<int>>;
|
||||
CSet compare_data(initial_data.begin(), initial_data.end());
|
||||
|
||||
using ESet = etl::multiset<int, MAX_SIZE, std::less<>>;
|
||||
using ESet = etl::multiset<int, MAX_SIZE, etl::less<>>;
|
||||
ESet data(initial_data.begin(), initial_data.end());
|
||||
|
||||
ESet::const_iterator i_data = data.find(Key(0));
|
||||
@ -1176,7 +1176,7 @@ namespace
|
||||
using CSet = std::multiset<int, std::less<int>>;
|
||||
CSet compare_data(initial_data.begin(), initial_data.end());
|
||||
|
||||
using ESet = etl::multiset<int, MAX_SIZE, std::less<>>;
|
||||
using ESet = etl::multiset<int, MAX_SIZE, etl::less<>>;
|
||||
ESet data(initial_data.begin(), initial_data.end());
|
||||
|
||||
CSet::iterator i_compare = compare_data.lower_bound(2);
|
||||
@ -1233,7 +1233,7 @@ namespace
|
||||
using CSet = std::multiset<int, std::less<int>>;
|
||||
CSet compare_data(initial_data.begin(), initial_data.end());
|
||||
|
||||
using ESet = etl::multiset<int, MAX_SIZE, std::less<>>;
|
||||
using ESet = etl::multiset<int, MAX_SIZE, etl::less<>>;
|
||||
ESet data(initial_data.begin(), initial_data.end());
|
||||
|
||||
CSet::const_iterator i_compare = compare_data.lower_bound(4);
|
||||
@ -1290,7 +1290,7 @@ namespace
|
||||
using CSet = std::multiset<int, std::less<int>>;
|
||||
CSet compare_data(initial_data.begin(), initial_data.end());
|
||||
|
||||
using ESet = etl::multiset<int, MAX_SIZE, std::less<>>;
|
||||
using ESet = etl::multiset<int, MAX_SIZE, etl::less<>>;
|
||||
ESet data(initial_data.begin(), initial_data.end());
|
||||
|
||||
CSet::iterator i_compare = compare_data.upper_bound(1);
|
||||
@ -1347,7 +1347,7 @@ namespace
|
||||
using CSet = std::multiset<int, std::less<int>>;
|
||||
const CSet compare_data(initial_data.begin(), initial_data.end());
|
||||
|
||||
using ESet = etl::multiset<int, MAX_SIZE, std::less<>>;
|
||||
using ESet = etl::multiset<int, MAX_SIZE, etl::less<>>;
|
||||
const ESet data(initial_data.begin(), initial_data.end());
|
||||
|
||||
CSet::const_iterator i_compare = compare_data.upper_bound(3);
|
||||
@ -1387,7 +1387,7 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_key_compare_using_transparent_comparator)
|
||||
{
|
||||
using ESet = etl::multiset<int, MAX_SIZE, std::less<>>;
|
||||
using ESet = etl::multiset<int, MAX_SIZE, etl::less<>>;
|
||||
const ESet data(initial_data.begin(), initial_data.end());
|
||||
|
||||
ESet::key_compare compare = data.key_comp();
|
||||
@ -1483,7 +1483,7 @@ namespace
|
||||
using CSet = std::multiset<int, std::less<int>>;
|
||||
CSet compare(initial_data.begin(), initial_data.end());
|
||||
|
||||
using ESet = etl::multiset<int, MAX_SIZE, std::less<>>;
|
||||
using ESet = etl::multiset<int, MAX_SIZE, etl::less<>>;
|
||||
ESet data(initial_data.begin(), initial_data.end());
|
||||
|
||||
std::vector<int> tab(test_data.begin(), test_data.end());
|
||||
|
||||
@ -44,7 +44,7 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_murmur3_32_constructor)
|
||||
{
|
||||
std::aligned_storage_t<sizeof(char), std::alignment_of<uint32_t>::value> storage[10];
|
||||
typename std::aligned_storage<sizeof(char), std::alignment_of<uint32_t>::value>::type storage[10];
|
||||
std::string data("123456789");
|
||||
|
||||
char* begin = (char*)&storage[0];
|
||||
@ -61,7 +61,7 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_murmur3_32_add_values)
|
||||
{
|
||||
std::aligned_storage_t<sizeof(char), std::alignment_of<uint32_t>::value> storage[10];
|
||||
typename std::aligned_storage<sizeof(char), std::alignment_of<uint32_t>::value>::type storage[10];
|
||||
std::string data("123456789");
|
||||
|
||||
char* begin = (char*)&storage[0];
|
||||
@ -85,7 +85,7 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_murmur3_32_add_range)
|
||||
{
|
||||
std::aligned_storage_t<sizeof(char), std::alignment_of<uint32_t>::value> storage[10];
|
||||
typename std::aligned_storage<sizeof(char), std::alignment_of<uint32_t>::value>::type storage[10];
|
||||
std::string data("123456789");
|
||||
|
||||
char* begin = (char*)&storage[0];
|
||||
|
||||
@ -43,7 +43,10 @@ SOFTWARE.
|
||||
|
||||
namespace
|
||||
{
|
||||
typedef etl::string_view View;
|
||||
using View = etl::string_view;
|
||||
using WView = etl::wstring_view;
|
||||
using U16View = etl::u16string_view;
|
||||
using U32View = etl::u32string_view;
|
||||
|
||||
etl::string<11> etltext = "Hello World";
|
||||
std::string text = "Hello World";
|
||||
@ -54,16 +57,20 @@ namespace
|
||||
std::string text_shorter = "Hello Worl";
|
||||
std::string text_different = "Goodbye!!!!";
|
||||
|
||||
constexpr char cctext[] = { 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '\0' };
|
||||
constexpr wchar_t cwtext[] = { L'H', L'e', L'l', L'l', L'o', L' ', L'W', L'o', L'r', L'l', L'd', L'\0' };
|
||||
constexpr char cctext[] = { 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '\0' };
|
||||
constexpr wchar_t cwtext[] = { L'H', L'e', L'l', L'l', L'o', L' ', L'W', L'o', L'r', L'l', L'd', L'\0' };
|
||||
constexpr char16_t cu16text[] = { u'H', u'e', u'l', u'l', u'o', u' ', u'W', u'o', u'r', u'l', u'd', u'\0' };
|
||||
constexpr char32_t cu32text[] = { U'H', U'e', U'l', U'l', U'o', U' ', U'W', U'o', U'r', U'l', U'd', U'\0' };
|
||||
|
||||
const char* pctext = cctext;
|
||||
const char* pctext = cctext;
|
||||
const wchar_t* pwtext = cwtext;
|
||||
const char16_t* pu16text = cu16text;
|
||||
const char32_t* pu32text = cu32text;
|
||||
|
||||
SUITE(test_string_view)
|
||||
{
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST(test_constexpr)
|
||||
{
|
||||
constexpr const char* text = "Hello";
|
||||
@ -83,6 +90,7 @@ namespace
|
||||
CHECK_ARRAY_EQUAL(text, str3, 5U);
|
||||
CHECK_ARRAY_EQUAL(text, str4, 5U);
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_default_constructor)
|
||||
@ -95,9 +103,45 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_constructor_pointer_range)
|
||||
TEST(test_constructor_pointer_range_char)
|
||||
{
|
||||
View view(pctext, pctext + strlen(pctext));
|
||||
View view(pctext, pctext + etl::strlen(pctext));
|
||||
|
||||
CHECK(text.size() == view.size());
|
||||
CHECK(text.size() == view.max_size());
|
||||
|
||||
bool isEqual = std::equal(view.begin(), view.end(), text.begin());
|
||||
CHECK(isEqual);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_constructor_pointer_range_wchar_t)
|
||||
{
|
||||
WView view(pwtext, pwtext + etl::strlen(pwtext));
|
||||
|
||||
CHECK(text.size() == view.size());
|
||||
CHECK(text.size() == view.max_size());
|
||||
|
||||
bool isEqual = std::equal(view.begin(), view.end(), text.begin());
|
||||
CHECK(isEqual);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_constructor_pointer_range_u16char_t)
|
||||
{
|
||||
U16View view(pu16text, pu16text + etl::strlen(pu16text));
|
||||
|
||||
CHECK(text.size() == view.size());
|
||||
CHECK(text.size() == view.max_size());
|
||||
|
||||
bool isEqual = std::equal(view.begin(), view.end(), text.begin());
|
||||
CHECK(isEqual);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_constructor_pointer_range_u32char_t)
|
||||
{
|
||||
U32View view(pu32text, pu32text + etl::strlen(pu32text));
|
||||
|
||||
CHECK(text.size() == view.size());
|
||||
CHECK(text.size() == view.max_size());
|
||||
@ -169,6 +213,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST(test_constexpr_make_string_view)
|
||||
{
|
||||
constexpr auto cview = etl::make_string_view(cctext);
|
||||
@ -181,6 +226,7 @@ namespace
|
||||
CHECK(std::equal(u16view.begin(), u16view.end(), text.begin()));
|
||||
CHECK(std::equal(u32view.begin(), u32view.end(), text.begin()));
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_make_string_view_check_consistent_strings_from_arrays_of_char)
|
||||
|
||||
@ -1029,6 +1029,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST(test_constexpr_integral)
|
||||
{
|
||||
constexpr Text::const_pointer text{ STR("123") };
|
||||
@ -1038,6 +1039,7 @@ namespace
|
||||
|
||||
CHECK_EQUAL(123, i);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1006,6 +1006,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST(test_constexpr_integral)
|
||||
{
|
||||
constexpr Text::const_pointer text{ STR("123") };
|
||||
@ -1015,5 +1016,6 @@ namespace
|
||||
|
||||
CHECK_EQUAL(123, i);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@ -1006,6 +1006,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST(test_constexpr_integral)
|
||||
{
|
||||
constexpr Text::const_pointer text{ STR("123") };
|
||||
@ -1015,5 +1016,6 @@ namespace
|
||||
|
||||
CHECK_EQUAL(123, i);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@ -1006,6 +1006,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
#if ETL_USING_CPP14
|
||||
TEST(test_constexpr_integral)
|
||||
{
|
||||
constexpr Text::const_pointer text{ STR("123") };
|
||||
@ -1015,5 +1016,6 @@ namespace
|
||||
|
||||
CHECK_EQUAL(123, i);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@ -31,6 +31,8 @@ SOFTWARE.
|
||||
#include "etl/unaligned_type.h"
|
||||
#include "etl/integral_limits.h"
|
||||
|
||||
#if ETL_USING_CPP14
|
||||
|
||||
namespace
|
||||
{
|
||||
SUITE(test_unaligned_type_constexpr)
|
||||
@ -638,3 +640,5 @@ namespace
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
@ -1379,7 +1379,7 @@ namespace
|
||||
{
|
||||
auto data = etl::make_vector<char>(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
|
||||
|
||||
using Type = std::remove_reference_t<decltype(data[0])>;
|
||||
using Type = typename std::remove_reference<decltype(data[0])>::type;
|
||||
CHECK((std::is_same<int, Type>::value));
|
||||
|
||||
CHECK_EQUAL(0, data[0]);
|
||||
|
||||
@ -1185,6 +1185,7 @@
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
<AdditionalOptions>/Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
|
||||
<TreatWarningAsError>true</TreatWarningAsError>
|
||||
<CCppSupport>Cpp17Support</CCppSupport>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user