mirror of
https://github.com/ETLCPP/etl.git
synced 2026-04-30 19:09:10 +08:00
New tests for delegate
This commit is contained in:
parent
2eff7b396b
commit
7a131acc54
@ -33,6 +33,7 @@ SOFTWARE.
|
||||
|
||||
#if !defined(ETL_CRC_FORCE_CPP03_IMPLEMENTATION)
|
||||
|
||||
#include <vector>
|
||||
#include <functional>
|
||||
|
||||
namespace
|
||||
@ -1189,6 +1190,52 @@ namespace
|
||||
CHECK(function_called == FunctionCalled::Free_Int_Called);
|
||||
CHECK(parameter_correct);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_delegate_identification)
|
||||
{
|
||||
Test test1;
|
||||
Test test2;
|
||||
|
||||
auto d1 = etl::delegate<void(int, int)>::create<free_int>();
|
||||
auto d2 = etl::delegate<void(int, int)>::create<Test, &Test::member_int>(test1);
|
||||
auto d3 = etl::delegate<void(int, int)>::create<Test, &Test::member_int>(test2);
|
||||
|
||||
etl::delegate<void(int, int)> d4;
|
||||
|
||||
using Delegate_List = std::vector<etl::delegate<void(int, int)>>;
|
||||
|
||||
Delegate_List delegate_list = { d1, d2, d3 };
|
||||
|
||||
Delegate_List::const_iterator itr;
|
||||
|
||||
d4 = d1;
|
||||
|
||||
itr = std::find(delegate_list.begin(), delegate_list.end(), d4);
|
||||
CHECK(*itr == d1);
|
||||
CHECK(*itr != d2);
|
||||
CHECK(*itr != d3);
|
||||
|
||||
d4 = d2;
|
||||
|
||||
itr = std::find(delegate_list.begin(), delegate_list.end(), d4);
|
||||
CHECK(*itr != d1);
|
||||
CHECK(*itr == d2);
|
||||
CHECK(*itr != d3);
|
||||
|
||||
d4 = d3;
|
||||
|
||||
itr = std::find(delegate_list.begin(), delegate_list.end(), d4);
|
||||
CHECK(*itr != d1);
|
||||
CHECK(*itr != d2);
|
||||
CHECK(*itr == d3);
|
||||
|
||||
d4 = etl::delegate<void(int, int)>::create<Test, &Test::member_int>(test2); // Same as d3
|
||||
itr = std::find(delegate_list.begin(), delegate_list.end(), d4);
|
||||
CHECK(*itr != d1);
|
||||
CHECK(*itr != d2);
|
||||
CHECK(*itr == d3);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@ -33,6 +33,8 @@ SOFTWARE.
|
||||
#include "etl/private/delegate_cpp03.h"
|
||||
#include "etl/vector.h"
|
||||
|
||||
#include <vector>
|
||||
|
||||
namespace
|
||||
{
|
||||
//*****************************************************************************
|
||||
@ -748,5 +750,51 @@ namespace
|
||||
CHECK(function_called == FunctionCalled::Not_Called);
|
||||
CHECK(!parameter_correct);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_delegate_identification)
|
||||
{
|
||||
Test test1;
|
||||
Test test2;
|
||||
|
||||
auto d1 = etl_cpp03::delegate<void(int)>::create<free_int>();
|
||||
auto d2 = etl_cpp03::delegate<void(int)>::create<Test, &Test::member_int>(test1);
|
||||
auto d3 = etl_cpp03::delegate<void(int)>::create<Test, &Test::member_int>(test2);
|
||||
|
||||
etl_cpp03::delegate<void(int)> d4;
|
||||
|
||||
using Delegate_List = std::vector<etl_cpp03::delegate<void(int)>>;
|
||||
|
||||
Delegate_List delegate_list = { d1, d2, d3 };
|
||||
|
||||
Delegate_List::const_iterator itr;
|
||||
|
||||
d4 = d1;
|
||||
|
||||
itr = std::find(delegate_list.begin(), delegate_list.end(), d4);
|
||||
CHECK(*itr == d1);
|
||||
CHECK(*itr != d2);
|
||||
CHECK(*itr != d3);
|
||||
|
||||
d4 = d2;
|
||||
|
||||
itr = std::find(delegate_list.begin(), delegate_list.end(), d4);
|
||||
CHECK(*itr != d1);
|
||||
CHECK(*itr == d2);
|
||||
CHECK(*itr != d3);
|
||||
|
||||
d4 = d3;
|
||||
|
||||
itr = std::find(delegate_list.begin(), delegate_list.end(), d4);
|
||||
CHECK(*itr != d1);
|
||||
CHECK(*itr != d2);
|
||||
CHECK(*itr == d3);
|
||||
|
||||
d4 = etl_cpp03::delegate<void(int)>::create<Test, &Test::member_int>(test2); // Same as d3
|
||||
itr = std::find(delegate_list.begin(), delegate_list.end(), d4);
|
||||
CHECK(*itr != d1);
|
||||
CHECK(*itr != d2);
|
||||
CHECK(*itr == d3);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user