Line data Source code
1 : /////////////////////////////////////////////////////////////////////////// 2 : // Spetabaru - Berenger Bramas MPCDF - 2017 3 : // Under LGPL Licence, please you must read the LICENCE file. 4 : /////////////////////////////////////////////////////////////////////////// 5 : 6 : #include "UTester.hpp" 7 : 8 : #include "Data/SpDataAccessMode.hpp" 9 : #include "Utils/SpUtils.hpp" 10 : 11 : #include "Task/SpTask.hpp" 12 : #include "Legacy/SpRuntime.hpp" 13 : 14 : 15 : class TestCopyMove : public UTester< TestCopyMove > { 16 : using Parent = UTester< TestCopyMove >; 17 : 18 1 : void TestBasic(){ 19 : class NotMovableNotCopyableClass { 20 : public: 21 : NotMovableNotCopyableClass() = default; 22 : NotMovableNotCopyableClass(const NotMovableNotCopyableClass&) = delete; 23 : NotMovableNotCopyableClass(const NotMovableNotCopyableClass&&) = delete; 24 : NotMovableNotCopyableClass& operator=(const NotMovableNotCopyableClass&) = delete; 25 : NotMovableNotCopyableClass& operator=(const NotMovableNotCopyableClass&&) = delete; 26 : 27 : NotMovableNotCopyableClass* clone() const{ 28 : return nullptr; 29 : } 30 : }; 31 : 32 : 33 1 : const int NumThreads = SpUtils::DefaultNumThreads(); 34 2 : SpRuntime runtime(NumThreads); 35 : 36 : NotMovableNotCopyableClass testclass; 37 : { 38 0 : auto descriptor = runtime.task(SpRead(testclass), 39 2 : [this, &testclass](const NotMovableNotCopyableClass& testclassParam){ 40 1 : UASSERTETRUE(&testclassParam == &testclass); 41 3 : }); 42 : 43 1 : descriptor.wait(); 44 : } 45 : 46 : { 47 0 : auto descriptor = runtime.task(SpWrite(testclass), 48 2 : [this, &testclass](NotMovableNotCopyableClass& testclassParam){ 49 1 : UASSERTETRUE(&testclassParam == &testclass); 50 3 : }); 51 : 52 1 : descriptor.wait(); 53 : } 54 1 : } 55 : 56 1 : void SetTests() { 57 1 : Parent::AddTest(&TestCopyMove::TestBasic, "Basic test for vec type"); 58 1 : } 59 : }; 60 : 61 : // You must do this 62 1 : TestClass(TestCopyMove)