4#ifndef XGBOOST_TEST_SPAN_H_
5#define XGBOOST_TEST_SPAN_H_
8#include <xgboost/span.h>
10template <
typename Iter>
13 for (Iter i = _begin; i != _end; ++i, ++j) {
21#define SPAN_ASSERT_TRUE(cond, status) \
26#define SPAN_ASSERT_FALSE(cond, status) \
40 SPAN_ASSERT_TRUE(
false, status_);
55 float arr[] = {3, 4, 5};
58 SPAN_ASSERT_TRUE(s2.size() == 3, status_);
59 SPAN_ASSERT_TRUE(s2.data() == &arr[0], status_);
62 SPAN_ASSERT_TRUE(s2.empty(), status_);
76 InitializeRange(arr, arr + 16);
82 SPAN_ASSERT_TRUE(end == beg + 16, status_);
83 SPAN_ASSERT_TRUE(*beg == arr[0], status_);
84 SPAN_ASSERT_TRUE(*(end - 1) == arr[15], status_);
98 InitializeRange(arr, arr + 16);
102#if defined(__CUDA_ARCH__)
103 auto rbeg = dh::trbegin(s);
104 auto rend = dh::trend(s);
106 Span<float>::reverse_iterator rbeg{s.rbegin()};
107 Span<float>::reverse_iterator rend{s.rend()};
110 SPAN_ASSERT_TRUE(rbeg + 16 == rend, status_);
111 SPAN_ASSERT_TRUE(*(rbeg) == arr[15], status_);
112 SPAN_ASSERT_TRUE(*(rend - 1) == arr[0], status_);
127 float *arr =
nullptr;
128 Span<float> s(arr,
static_cast<Span<float>::index_type
>(0));
129 SPAN_ASSERT_TRUE(s.empty(), status_);
134 float* arr =
new float[16];
136 SPAN_ASSERT_TRUE(s.size() == 16, status_);
137 SPAN_ASSERT_TRUE(s.size_bytes() == 16 *
sizeof(
float), status_);
152 float lhs_arr[16], rhs_arr[16];
153 InitializeRange(lhs_arr, lhs_arr + 16);
154 InitializeRange(rhs_arr, rhs_arr + 16);
159 SPAN_ASSERT_TRUE(lhs == rhs, status_);
160 SPAN_ASSERT_FALSE(lhs != rhs, status_);
162 SPAN_ASSERT_TRUE(lhs <= rhs, status_);
163 SPAN_ASSERT_TRUE(lhs >= rhs, status_);
167 SPAN_ASSERT_FALSE(lhs == rhs, status_);
168 SPAN_ASSERT_TRUE(lhs < rhs, status_);
169 SPAN_ASSERT_FALSE(lhs > rhs, status_);
184 SPAN_ASSERT_TRUE(it1 == it2, status_);
188 SPAN_ASSERT_TRUE(cit1 == cit2, status_);
202 InitializeRange(arr, arr + 16);
205 SPAN_ASSERT_TRUE(*(s.begin()) == s[0], status_);
206 SPAN_ASSERT_TRUE(*(s.end() - 1) == s[15], status_);
220 InitializeRange(arr, arr + 16);
226 SPAN_ASSERT_TRUE(*beg == 4, status_);
229 SPAN_ASSERT_TRUE(*beg == 2, status_);
232 SPAN_ASSERT_TRUE(*beg == 3, status_);
235 SPAN_ASSERT_TRUE(*beg == 2, status_);
239 SPAN_ASSERT_TRUE(*beg == 2, status_);
253 InitializeRange(arr, arr + 16);
261 SPAN_ASSERT_TRUE(left == right, status_);
263 SPAN_ASSERT_TRUE(left >= right, status_);
264 SPAN_ASSERT_TRUE(left <= right, status_);
267 SPAN_ASSERT_TRUE(right > left, status_);
268 SPAN_ASSERT_TRUE(left < right, status_);
269 SPAN_ASSERT_TRUE(left <= right, status_);
283 InitializeRange(arr, arr + 16);
288 SPAN_ASSERT_TRUE(bs.size() == s.size_bytes(), status_);
289 SPAN_ASSERT_TRUE(
static_cast<const void*
>(bs.data()) ==
290 static_cast<const void*
>(s.data()),
297 SPAN_ASSERT_TRUE(bs.size() == s.size(), status_);
298 SPAN_ASSERT_TRUE(bs.size() == 0, status_);
299 SPAN_ASSERT_TRUE(bs.size_bytes() == 0, status_);
300 SPAN_ASSERT_TRUE(
static_cast<const void*
>(bs.data()) ==
301 static_cast<const void*
>(s.data()),
303 SPAN_ASSERT_TRUE(bs.data() ==
nullptr, status_);
318 InitializeRange(arr, arr + 16);
323 SPAN_ASSERT_TRUE(bs.size() == s.size(), status_);
324 SPAN_ASSERT_TRUE(bs.size_bytes() == s.size_bytes(), status_);
325 SPAN_ASSERT_TRUE(bs.size() == 0, status_);
326 SPAN_ASSERT_TRUE(bs.size_bytes() == 0, status_);
327 SPAN_ASSERT_TRUE(bs.data() ==
nullptr, status_);
328 SPAN_ASSERT_TRUE(
static_cast<void*
>(bs.data()) ==
329 static_cast<void*
>(s.data()), status_);
335 SPAN_ASSERT_TRUE(s.size_bytes() == bs.size_bytes(), status_);
336 SPAN_ASSERT_TRUE(
static_cast<void*
>(bs.data()) ==
337 static_cast<void*
>(s.data()), status_);
span class implementation, based on ISO++20 span<T>. The interface should be the same.
Definition span.h:424
Copyright 2015-2023 by XGBoost Contributors.
#define XGBOOST_DEVICE
Tag function as usable by device.
Definition base.h:64
namespace of xgboost
Definition base.h:90
Definition test_span.h:273
Definition test_span.h:308
Definition test_span.h:44
Definition test_span.h:66
Definition test_span.h:143
Definition test_span.h:210
Definition test_span.h:243
Definition test_span.h:173
Definition test_span.h:192
Definition test_span.h:116
Definition test_span.h:88
Definition test_span.h:31