diff options
Diffstat (limited to 'libcxx/test/std/utilities')
2 files changed, 60 insertions, 22 deletions
diff --git a/libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.observers/get_deleter.pass.cpp b/libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.observers/get_deleter.pass.cpp index 4496740715a..a3bb1a0cc2a 100644 --- a/libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.observers/get_deleter.pass.cpp +++ b/libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.observers/get_deleter.pass.cpp @@ -15,23 +15,42 @@ #include <memory> #include <cassert> +#include "test_macros.h" -struct Deleter -{ - void operator()(void*) {} +struct Deleter { + void operator()(void*) const {} - int test() {return 5;} - int test() const {return 6;} + int test() { return 5; } + int test() const { return 6; } }; -int main() -{ - { +int main() { + { std::unique_ptr<int[], Deleter> p; assert(p.get_deleter().test() == 5); - } - { + } + { const std::unique_ptr<int[], Deleter> p; assert(p.get_deleter().test() == 6); - } + } + { + typedef std::unique_ptr<int[], const Deleter&> UPtr; + const Deleter d; + UPtr p(nullptr, d); + const UPtr& cp = p; + ASSERT_SAME_TYPE(decltype(p.get_deleter()), const Deleter&); + ASSERT_SAME_TYPE(decltype(cp.get_deleter()), const Deleter&); + assert(p.get_deleter().test() == 6); + assert(cp.get_deleter().test() == 6); + } + { + typedef std::unique_ptr<int[], Deleter&> UPtr; + Deleter d; + UPtr p(nullptr, d); + const UPtr& cp = p; + ASSERT_SAME_TYPE(decltype(p.get_deleter()), Deleter&); + ASSERT_SAME_TYPE(decltype(cp.get_deleter()), Deleter&); + assert(p.get_deleter().test() == 5); + assert(cp.get_deleter().test() == 5); + } } diff --git a/libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.observers/get_deleter.pass.cpp b/libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.observers/get_deleter.pass.cpp index 5ed8a22b14c..3262abb5e28 100644 --- a/libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.observers/get_deleter.pass.cpp +++ b/libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.observers/get_deleter.pass.cpp @@ -15,23 +15,42 @@ #include <memory> #include <cassert> +#include "test_macros.h" -struct Deleter -{ - void operator()(void*) {} +struct Deleter { + void operator()(void*) const {} - int test() {return 5;} - int test() const {return 6;} + int test() { return 5; } + int test() const { return 6; } }; -int main() -{ - { +int main() { + { std::unique_ptr<int, Deleter> p; assert(p.get_deleter().test() == 5); - } - { + } + { const std::unique_ptr<int, Deleter> p; assert(p.get_deleter().test() == 6); - } + } + { + typedef std::unique_ptr<int, const Deleter&> UPtr; + const Deleter d; + UPtr p(nullptr, d); + const UPtr& cp = p; + ASSERT_SAME_TYPE(decltype(p.get_deleter()), const Deleter&); + ASSERT_SAME_TYPE(decltype(cp.get_deleter()), const Deleter&); + assert(p.get_deleter().test() == 6); + assert(cp.get_deleter().test() == 6); + } + { + typedef std::unique_ptr<int, Deleter&> UPtr; + Deleter d; + UPtr p(nullptr, d); + const UPtr& cp = p; + ASSERT_SAME_TYPE(decltype(p.get_deleter()), Deleter&); + ASSERT_SAME_TYPE(decltype(cp.get_deleter()), Deleter&); + assert(p.get_deleter().test() == 5); + assert(cp.get_deleter().test() == 5); + } } |

