]>
git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/opentelemetry-cpp/third_party/ms-gsl/tests/bounds_tests.cpp
1 ///////////////////////////////////////////////////////////////////////////////
3 // Copyright (c) 2015 Microsoft Corporation. All rights reserved.
5 // This code is licensed under the MIT License (MIT).
7 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
8 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
9 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
10 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
11 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
12 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
15 ///////////////////////////////////////////////////////////////////////////////
17 #include <gtest/gtest.h>
19 #include <gsl/multi_span> // for static_bounds, static_bounds_dynamic_range_t
21 #include <cstddef> // for ptrdiff_t, size_t
28 void use(std::ptrdiff_t&) {}
31 TEST(bounds_tests
, basic_bounds
)
33 for (auto point
: static_bounds
<dynamic_range
, 3, 4>{2}) {
34 for (decltype(point
)::size_type j
= 0;
35 j
< static_cast<decltype(point
)::size_type
>(decltype(point
)::rank
); j
++)
38 use(point
[static_cast<std::size_t>(j
)]);
43 TEST(bounds_tests
, bounds_basic
)
45 static_bounds
<3, 4, 5> b
;
46 const auto a
= b
.slice();
48 static_bounds
<4, dynamic_range
, 2> x
{4};
52 TEST(bounds_tests
, arrayview_iterator
)
54 static_bounds
<4, dynamic_range
, 2> bounds
{3};
56 const auto itr
= bounds
.begin();
58 #ifdef CONFIRM_COMPILATION_ERRORS
59 multi_span
<int, 4, dynamic_range
, 2> av(nullptr, bounds
);
61 auto itr2
= av
.cbegin();
66 fill(av
.begin(), av
.end(), 0);
70 TEST(bounds_tests
, bounds_convertible
)
72 static_bounds
<7, 4, 2> b1
;
73 static_bounds
<7, dynamic_range
, 2> b2
= b1
;
75 #ifdef CONFIRM_COMPILATION_ERRORS
76 static_bounds
<7, dynamic_range
, 1> b4
= b2
;
79 static_bounds
<dynamic_range
, dynamic_range
, dynamic_range
> b3
= b1
;
80 static_bounds
<7, 4, 2> b4
= b3
;
83 static_bounds
<dynamic_range
> b5
;
86 std::set_terminate([] {
87 std::cerr
<< "Expected Death. bounds_convertible";
91 b5
= static_bounds
<20>();
92 EXPECT_DEATH(b6
= b5
, ".*");
93 b5
= static_bounds
<34>();
96 EXPECT_TRUE(b5
== b6
);
97 EXPECT_TRUE(b5
.size() == b6
.size());
100 #ifdef CONFIRM_COMPILATION_ERRORS
101 copy(src_span_static
, dst_span_static
);