equal.pass.cpp (2096B)
1 //===----------------------------------------------------------------------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is dual licensed under the MIT and the University of Illinois Open 6 // Source Licenses. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 // UNSUPPORTED: c++98, c++03 11 12 // <experimental/memory_resource> 13 14 // bool operator==(memory_resource const &, memory_resource const &) noexcept; 15 16 #include <experimental/memory_resource> 17 #include <type_traits> 18 #include <cassert> 19 20 #include "test_macros.h" 21 #include "test_memory_resource.hpp" 22 23 namespace ex = std::experimental::pmr; 24 25 int main() 26 { 27 // check return types 28 { 29 ex::memory_resource const * mr1(nullptr); 30 ex::memory_resource const * mr2(nullptr); 31 static_assert(std::is_same<decltype(*mr1 == *mr2), bool>::value, ""); 32 static_assert(noexcept(*mr1 == *mr2), ""); 33 } 34 // equal 35 { 36 TestResource r1(1); 37 TestResource r2(1); 38 ex::memory_resource const & mr1 = r1; 39 ex::memory_resource const & mr2 = r2; 40 41 assert(mr1 == mr2); 42 assert(r1.checkIsEqualCalledEq(1)); 43 assert(r2.checkIsEqualCalledEq(0)); 44 45 assert(mr2 == mr1); 46 assert(r1.checkIsEqualCalledEq(1)); 47 assert(r2.checkIsEqualCalledEq(1)); 48 } 49 // equal same object 50 { 51 TestResource r1(1); 52 ex::memory_resource const & mr1 = r1; 53 ex::memory_resource const & mr2 = r1; 54 55 assert(mr1 == mr2); 56 assert(r1.checkIsEqualCalledEq(0)); 57 58 assert(mr2 == mr1); 59 assert(r1.checkIsEqualCalledEq(0)); 60 } 61 // not equal 62 { 63 TestResource r1(1); 64 TestResource r2(2); 65 ex::memory_resource const & mr1 = r1; 66 ex::memory_resource const & mr2 = r2; 67 68 assert(!(mr1 == mr2)); 69 assert(r1.checkIsEqualCalledEq(1)); 70 assert(r2.checkIsEqualCalledEq(0)); 71 72 assert(!(mr2 == mr1)); 73 assert(r1.checkIsEqualCalledEq(1)); 74 assert(r2.checkIsEqualCalledEq(1)); 75 } 76 }