Skip to content
Snippets Groups Projects
Commit d85899b2 authored by Jan Trávníček's avatar Jan Trávníček
Browse files

std: improve vector test

parent 469b68bf
No related branches found
No related tags found
1 merge request!206Merge jt
......@@ -3,6 +3,7 @@
#include <ext/type_traits>
#include <ext/algorithm>
#include <ext/iostream>
#include <ext/pair>
 
namespace {
class Moveable {
......@@ -11,15 +12,13 @@ namespace {
 
public:
Moveable(int& moves, int& copies) : m_moves(moves), m_copies(copies) {
m_moves = 0;
m_copies = 0;
}
 
Moveable(const Moveable& src) : m_moves(src.m_moves), m_copies(src.m_copies) {
m_copies++;
}
 
Moveable(Moveable&& src) : m_moves(src.m_moves), m_copies(src.m_copies) {
Moveable(Moveable&& src) noexcept : m_moves(src.m_moves), m_copies(src.m_copies) {
m_moves++;
}
 
......@@ -28,11 +27,13 @@ namespace {
return * this;
}
 
Moveable & operator = ( Moveable && ) {
Moveable & operator = ( Moveable && ) noexcept {
m_moves ++;
return * this;
}
 
~Moveable ( ) noexcept = default;
bool operator<(const Moveable&) const {
return false;
}
......@@ -64,8 +65,8 @@ TEST_CASE ( "Vector", "[unit][std][container]" ) {
 
CHECK ( data == dataRef );
 
int moves;
int copies;
int moves = 0;
int copies = 0;
 
ext::vector < Moveable > vec;
vec.push_back ( Moveable ( moves, copies ) );
......@@ -383,8 +384,8 @@ TEST_CASE ( "Vector", "[unit][std][container]" ) {
 
CHECK ( data == data2 );
 
int moves;
int copies;
int moves = 0;
int copies = 0;
 
ext::vector < Moveable > vec;
vec.push_back ( Moveable ( moves, copies ) );
......@@ -396,4 +397,21 @@ TEST_CASE ( "Vector", "[unit][std][container]" ) {
 
CHECK ( copies == 0 );
}
SECTION ( "Move vs Copy" ) {
int moves = 0;
int copies = 0;
auto maker = [&](){
return ext::make_pair ( Moveable ( moves, copies ), Moveable ( moves, copies ) );
};
ext::vector < ext::pair < Moveable, Moveable > > data;
data.push_back ( maker ( ) );
data.push_back ( maker ( ) );
data.push_back ( maker ( ) );
data.push_back ( maker ( ) );
CHECK ( copies == 0 );
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment