]> git.saurik.com Git - apple/xnu.git/blob - tests/safe_allocation_src/operator.bool.cpp
xnu-7195.101.1.tar.gz
[apple/xnu.git] / tests / safe_allocation_src / operator.bool.cpp
1 //
2 // Tests for
3 // explicit operator bool() const;
4 //
5
6 #include <libkern/c++/safe_allocation.h>
7 #include <darwintest.h>
8 #include "test_utils.h"
9 #include <type_traits>
10
11 struct T {
12 int i;
13 };
14
15 template <typename T>
16 static void
17 tests()
18 {
19 {
20 test_safe_allocation<T> const array(10, libkern::allocate_memory);
21 CHECK(static_cast<bool>(array));
22 if (array) {
23 } else {
24 CHECK(FALSE);
25 }
26 }
27 {
28 test_safe_allocation<T> const array = nullptr;
29 CHECK(!static_cast<bool>(array));
30 if (!array) {
31 } else {
32 CHECK(FALSE);
33 }
34 }
35
36 static_assert(!std::is_convertible_v<test_safe_allocation<T>, bool>);
37 }
38
39 T_DECL(operator_bool, "safe_allocation.operator.bool") {
40 tests<T>();
41 tests<T const>();
42 }