xref: /xnu-11215.81.4/tests/bounded_ptr_src/ctor.nullptr.cpp (revision d4514f0bc1d3f944c22d92e68b646ac3fb40d452)
1*d4514f0bSApple OSS Distributions //
2*d4514f0bSApple OSS Distributions // Tests for
3*d4514f0bSApple OSS Distributions //  bounded_ptr(std::nullptr_t);
4*d4514f0bSApple OSS Distributions //
5*d4514f0bSApple OSS Distributions 
6*d4514f0bSApple OSS Distributions #include <libkern/c++/bounded_ptr.h>
7*d4514f0bSApple OSS Distributions #include <darwintest.h>
8*d4514f0bSApple OSS Distributions #include <darwintest_utils.h>
9*d4514f0bSApple OSS Distributions #include "test_utils.h"
10*d4514f0bSApple OSS Distributions 
11*d4514f0bSApple OSS Distributions #define _assert(...) T_ASSERT_TRUE((__VA_ARGS__), # __VA_ARGS__)
12*d4514f0bSApple OSS Distributions 
13*d4514f0bSApple OSS Distributions struct T { };
14*d4514f0bSApple OSS Distributions 
15*d4514f0bSApple OSS Distributions template <typename T>
16*d4514f0bSApple OSS Distributions static void
tests()17*d4514f0bSApple OSS Distributions tests()
18*d4514f0bSApple OSS Distributions {
19*d4514f0bSApple OSS Distributions 	// Test with nullptr
20*d4514f0bSApple OSS Distributions 	{
21*d4514f0bSApple OSS Distributions 		test_bounded_ptr<T> p = nullptr;
22*d4514f0bSApple OSS Distributions 		_assert(p == nullptr);
23*d4514f0bSApple OSS Distributions 	}
24*d4514f0bSApple OSS Distributions 	{
25*d4514f0bSApple OSS Distributions 		test_bounded_ptr<T> p{nullptr};
26*d4514f0bSApple OSS Distributions 		_assert(p == nullptr);
27*d4514f0bSApple OSS Distributions 	}
28*d4514f0bSApple OSS Distributions 	{
29*d4514f0bSApple OSS Distributions 		test_bounded_ptr<T> p(nullptr);
30*d4514f0bSApple OSS Distributions 		_assert(p == nullptr);
31*d4514f0bSApple OSS Distributions 	}
32*d4514f0bSApple OSS Distributions 	{
33*d4514f0bSApple OSS Distributions 		test_bounded_ptr<T> p = static_cast<test_bounded_ptr<T> >(nullptr);
34*d4514f0bSApple OSS Distributions 		_assert(p == nullptr);
35*d4514f0bSApple OSS Distributions 	}
36*d4514f0bSApple OSS Distributions 	{
37*d4514f0bSApple OSS Distributions 		auto f = [](test_bounded_ptr<T> p) {
38*d4514f0bSApple OSS Distributions 			    _assert(p == nullptr);
39*d4514f0bSApple OSS Distributions 		    };
40*d4514f0bSApple OSS Distributions 		f(nullptr);
41*d4514f0bSApple OSS Distributions 	}
42*d4514f0bSApple OSS Distributions 
43*d4514f0bSApple OSS Distributions 	// Test with NULL
44*d4514f0bSApple OSS Distributions 	{
45*d4514f0bSApple OSS Distributions 		test_bounded_ptr<T> p = NULL;
46*d4514f0bSApple OSS Distributions 		_assert(p == nullptr);
47*d4514f0bSApple OSS Distributions 	}
48*d4514f0bSApple OSS Distributions 	{
49*d4514f0bSApple OSS Distributions 		test_bounded_ptr<T> p{NULL};
50*d4514f0bSApple OSS Distributions 		_assert(p == nullptr);
51*d4514f0bSApple OSS Distributions 	}
52*d4514f0bSApple OSS Distributions 	{
53*d4514f0bSApple OSS Distributions 		test_bounded_ptr<T> p(NULL);
54*d4514f0bSApple OSS Distributions 		_assert(p == nullptr);
55*d4514f0bSApple OSS Distributions 	}
56*d4514f0bSApple OSS Distributions 	{
57*d4514f0bSApple OSS Distributions 		test_bounded_ptr<T> p = static_cast<test_bounded_ptr<T> >(NULL);
58*d4514f0bSApple OSS Distributions 		_assert(p == nullptr);
59*d4514f0bSApple OSS Distributions 	}
60*d4514f0bSApple OSS Distributions 	{
61*d4514f0bSApple OSS Distributions 		auto f = [](test_bounded_ptr<T> p) {
62*d4514f0bSApple OSS Distributions 			    _assert(p == nullptr);
63*d4514f0bSApple OSS Distributions 		    };
64*d4514f0bSApple OSS Distributions 		f(NULL);
65*d4514f0bSApple OSS Distributions 	}
66*d4514f0bSApple OSS Distributions 
67*d4514f0bSApple OSS Distributions 	// Test with 0
68*d4514f0bSApple OSS Distributions 	{
69*d4514f0bSApple OSS Distributions 		test_bounded_ptr<T> p = 0;
70*d4514f0bSApple OSS Distributions 		_assert(p == nullptr);
71*d4514f0bSApple OSS Distributions 	}
72*d4514f0bSApple OSS Distributions 	{
73*d4514f0bSApple OSS Distributions 		test_bounded_ptr<T> p{0};
74*d4514f0bSApple OSS Distributions 		_assert(p == nullptr);
75*d4514f0bSApple OSS Distributions 	}
76*d4514f0bSApple OSS Distributions 	{
77*d4514f0bSApple OSS Distributions 		test_bounded_ptr<T> p(0);
78*d4514f0bSApple OSS Distributions 		_assert(p == nullptr);
79*d4514f0bSApple OSS Distributions 	}
80*d4514f0bSApple OSS Distributions 	{
81*d4514f0bSApple OSS Distributions 		test_bounded_ptr<T> p = static_cast<test_bounded_ptr<T> >(0);
82*d4514f0bSApple OSS Distributions 		_assert(p == nullptr);
83*d4514f0bSApple OSS Distributions 	}
84*d4514f0bSApple OSS Distributions 	{
85*d4514f0bSApple OSS Distributions 		auto f = [](test_bounded_ptr<T> p) {
86*d4514f0bSApple OSS Distributions 			    _assert(p == nullptr);
87*d4514f0bSApple OSS Distributions 		    };
88*d4514f0bSApple OSS Distributions 		f(0);
89*d4514f0bSApple OSS Distributions 	}
90*d4514f0bSApple OSS Distributions }
91*d4514f0bSApple OSS Distributions 
92*d4514f0bSApple OSS Distributions T_DECL(ctor_nullptr, "bounded_ptr.ctor.nullptr", T_META_TAG_VM_PREFERRED) {
93*d4514f0bSApple OSS Distributions 	tests<T>();
94*d4514f0bSApple OSS Distributions 	tests<T const>();
95*d4514f0bSApple OSS Distributions 	tests<T volatile>();
96*d4514f0bSApple OSS Distributions 	tests<T const volatile>();
97*d4514f0bSApple OSS Distributions }
98