mirror of
https://github.com/ETLCPP/etl.git
synced 2026-04-30 19:09:10 +08:00
Fixed copy and move assignment bug
This commit is contained in:
parent
e090f1a18c
commit
60b04b55f6
@ -1088,6 +1088,7 @@ namespace etl
|
||||
{
|
||||
if (this != &other)
|
||||
{
|
||||
this->clear();
|
||||
this->push(other.begin(), other.end());
|
||||
}
|
||||
|
||||
@ -1119,8 +1120,10 @@ namespace etl
|
||||
{
|
||||
if (this != &other)
|
||||
{
|
||||
this->clear();
|
||||
|
||||
for (typename etl::icircular_buffer<T>::const_iterator itr = other.begin(); itr != other.end(); ++itr)
|
||||
{
|
||||
{
|
||||
this->push(etl::move(*itr));
|
||||
}
|
||||
}
|
||||
@ -1203,8 +1206,10 @@ namespace etl
|
||||
//*************************************************************************
|
||||
circular_buffer_ext& operator =(const circular_buffer_ext& other)
|
||||
{
|
||||
|
||||
if (this != &other)
|
||||
{
|
||||
this->clear();
|
||||
this->push(other.begin(), other.end());
|
||||
}
|
||||
|
||||
@ -1236,8 +1241,10 @@ namespace etl
|
||||
{
|
||||
if (this != &other)
|
||||
{
|
||||
this->clear();
|
||||
|
||||
for (typename etl::icircular_buffer<T>::iterator itr = other.begin(); itr != other.end(); ++itr)
|
||||
{
|
||||
{
|
||||
this->push(etl::move(*itr));
|
||||
}
|
||||
}
|
||||
|
||||
@ -746,13 +746,14 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_assignment)
|
||||
{
|
||||
Compare input1{ Ndc("0"), Ndc("1"), Ndc("2"), Ndc("3"), Ndc("4"), Ndc("5"), Ndc("6"), Ndc("7"), Ndc("8"), Ndc("9") };
|
||||
Compare input2{ Ndc("9"), Ndc("8"), Ndc("7"), Ndc("6"), Ndc("5"), Ndc("4"), Ndc("3"), Ndc("2"), Ndc("1"), Ndc("0") };
|
||||
Compare input1{ Ndc("0"), Ndc("1"), Ndc("2"), Ndc("3"), Ndc("4"), Ndc("5"), Ndc("6"), Ndc("7"), Ndc("8") };
|
||||
Compare input2{ Ndc("8"), Ndc("7"), Ndc("6"), Ndc("5"), Ndc("4"), Ndc("3"), Ndc("2"), Ndc("1"), Ndc("0") };
|
||||
Data data1;
|
||||
data1.push(input1.begin(), input1.end());
|
||||
|
||||
// Copy construct from data1
|
||||
Data data2;
|
||||
data2.push(Ndc("0"));
|
||||
|
||||
data2 = data1;
|
||||
|
||||
@ -768,6 +769,32 @@ namespace
|
||||
CHECK(isEqual);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_move_assignment)
|
||||
{
|
||||
Compare input1{ Ndc("0"), Ndc("1"), Ndc("2"), Ndc("3"), Ndc("4"), Ndc("5"), Ndc("6"), Ndc("7"), Ndc("8") };
|
||||
Compare input2{ Ndc("8"), Ndc("7"), Ndc("6"), Ndc("5"), Ndc("4"), Ndc("3"), Ndc("2"), Ndc("1"), Ndc("0") };
|
||||
Data data1;
|
||||
data1.push(input1.begin(), input1.end());
|
||||
|
||||
// Copy construct from data1
|
||||
Data data2;
|
||||
data2.push(Ndc("0"));
|
||||
|
||||
data2 = etl::move(data1);
|
||||
|
||||
// Now change data1
|
||||
data1.clear();
|
||||
data1.push(input2.begin(), input2.end());
|
||||
|
||||
CHECK(data2.begin() != data2.end());
|
||||
CHECK(data2.cbegin() != data2.cend());
|
||||
CHECK_EQUAL(input1.size(), data2.size());
|
||||
|
||||
bool isEqual = std::equal(input1.begin(), input1.end(), data2.begin());
|
||||
CHECK(isEqual);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_swap_iterator)
|
||||
{
|
||||
|
||||
@ -755,13 +755,14 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST(test_assignment)
|
||||
{
|
||||
Compare input1{ Ndc("0"), Ndc("1"), Ndc("2"), Ndc("3"), Ndc("4"), Ndc("5"), Ndc("6"), Ndc("7"), Ndc("8"), Ndc("9") };
|
||||
Compare input2{ Ndc("9"), Ndc("8"), Ndc("7"), Ndc("6"), Ndc("5"), Ndc("4"), Ndc("3"), Ndc("2"), Ndc("1"), Ndc("0") };
|
||||
Compare input1{ Ndc("0"), Ndc("1"), Ndc("2"), Ndc("3"), Ndc("4"), Ndc("5"), Ndc("6"), Ndc("7"), Ndc("8") };
|
||||
Compare input2{ Ndc("8"), Ndc("7"), Ndc("6"), Ndc("5"), Ndc("4"), Ndc("3"), Ndc("2"), Ndc("1"), Ndc("0") };
|
||||
Data data1(buffer1.raw, SIZE);
|
||||
data1.push(input1.begin(), input1.end());
|
||||
|
||||
// Copy construct from data1
|
||||
Data data2(buffer2.raw, SIZE);
|
||||
data2.push(Ndc("0"));
|
||||
|
||||
data2 = data1;
|
||||
|
||||
@ -777,6 +778,32 @@ namespace
|
||||
CHECK(isEqual);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_move_assignment)
|
||||
{
|
||||
Compare input1{ Ndc("0"), Ndc("1"), Ndc("2"), Ndc("3"), Ndc("4"), Ndc("5"), Ndc("6"), Ndc("7"), Ndc("8") };
|
||||
Compare input2{ Ndc("8"), Ndc("7"), Ndc("6"), Ndc("5"), Ndc("4"), Ndc("3"), Ndc("2"), Ndc("1"), Ndc("0") };
|
||||
Data data1(buffer1.raw, SIZE);
|
||||
data1.push(input1.begin(), input1.end());
|
||||
|
||||
// Copy construct from data1
|
||||
Data data2(buffer2.raw, SIZE);
|
||||
data2.push(Ndc("0"));
|
||||
|
||||
data2 = etl::move(data1);
|
||||
|
||||
// Now change data1
|
||||
data1.clear();
|
||||
data1.push(input2.begin(), input2.end());
|
||||
|
||||
CHECK(data2.begin() != data2.end());
|
||||
CHECK(data2.cbegin() != data2.cend());
|
||||
CHECK_EQUAL(input1.size(), data2.size());
|
||||
|
||||
bool isEqual = std::equal(input1.begin(), input1.end(), data2.begin());
|
||||
CHECK(isEqual);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_swap_iterator)
|
||||
{
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user