| 332 | |
| 333 | template <class T> |
| 334 | void check_subarray( |
| 335 | tiledb::sm::Subarray& subarray, const SubarrayRanges<T>& ranges) { |
| 336 | // Check empty subarray |
| 337 | auto subarray_range_num = subarray.range_num(); |
| 338 | if (ranges.empty()) { |
| 339 | CHECK(subarray_range_num == 0); |
| 340 | return; |
| 341 | } |
| 342 | uint64_t range_num = 1; |
| 343 | for (const auto& dim_ranges : ranges) |
| 344 | range_num *= dim_ranges.size() / 2; |
| 345 | CHECK(subarray_range_num == range_num); |
| 346 | |
| 347 | // Check dim num |
| 348 | auto dim_num = subarray.dim_num(); |
| 349 | CHECK(dim_num == ranges.size()); |
| 350 | |
| 351 | // Check ranges |
| 352 | uint64_t dim_range_num = 0; |
| 353 | const type::Range* range; |
| 354 | for (unsigned i = 0; i < dim_num; ++i) { |
| 355 | CHECK_NOTHROW(subarray.get_range_num(i, &dim_range_num)); |
| 356 | CHECK(dim_range_num == ranges[i].size() / 2); |
| 357 | for (uint64_t j = 0; j < dim_range_num; ++j) { |
| 358 | CHECK_NOTHROW(subarray.get_range(i, j, &range)); |
| 359 | auto r = (const T*)range->data(); |
| 360 | |
| 361 | CHECK(r[0] == ranges[i][2 * j]); |
| 362 | CHECK(r[1] == ranges[i][2 * j + 1]); |
| 363 | } |
| 364 | } |
| 365 | } |
| 366 | |
| 367 | template <class T> |
| 368 | void check_subarray( |
no test coverage detected