1 // 2 // Tests for 3 // __unsafe_forge_span functions 4 // 5 6 #include <span> 7 #include <vector> 8 #include <os/cxx_safe_buffers.h> 9 #include <darwintest.h> 10 11 #define CHECK(...) T_ASSERT_TRUE((__VA_ARGS__), # __VA_ARGS__) 12 13 struct S { 14 int i; 15 }; 16 17 template <typename T> 18 static void tests()19tests() 20 { 21 { 22 T * p = new T[10]; 23 std::span<T> span = os::span::__unsafe_forge_span(p, 10); 24 25 CHECK(span.data() == p && span.size() == 10); 26 delete[] p; 27 } 28 { 29 std::vector<T> v; 30 std::span<T> span = os::span::__unsafe_forge_span(v.begin(), v.end()); 31 32 CHECK(span.data() == v.data() && span.size() == 0); 33 } 34 } 35 36 T_DECL(unsafe_forge_span, "cxx_safe_buffers.unsafe_forge_span") 37 { 38 tests<S>(); 39 } 40