1 //
2 // Tests for
3 //  size_t size() const;
4 //
5 
6 #include <libkern/c++/bounded_array_ref.h>
7 #include "test_policy.h"
8 #include <cstddef>
9 #include <darwintest.h>
10 #include <darwintest_utils.h>
11 
12 struct T { int i; };
13 
14 template <typename T>
15 static void
16 tests()
17 {
18 	T array[5] = {T{0}, T{1}, T{2}, T{3}, T{4}};
19 
20 	{
21 		test_bounded_array_ref<T> const view(&array[0], static_cast<std::size_t>(0));
22 		std::size_t size = view.size();
23 		CHECK(size == 0);
24 	}
25 	{
26 		test_bounded_array_ref<T> const view(&array[0], 1);
27 		std::size_t size = view.size();
28 		CHECK(size == 1);
29 	}
30 	{
31 		test_bounded_array_ref<T> const view(&array[0], 2);
32 		std::size_t size = view.size();
33 		CHECK(size == 2);
34 	}
35 	{
36 		test_bounded_array_ref<T> const view(&array[0], 5);
37 		std::size_t size = view.size();
38 		CHECK(size == 5);
39 	}
40 }
41 
42 T_DECL(size, "bounded_array_ref.size") {
43 	tests<T>();
44 	tests<T const>();
45 }
46