MCPcopy Create free account
hub / github.com/apache/arrow / TEST

Function TEST

cpp/src/arrow/array/array_binary_test.cc:386–471  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

384}
385
386TEST(StringViewArray, Validate) {
387 // Since this is a test of validation, we need to be able to construct invalid arrays.
388 auto buffer_s = Buffer::FromString("supercalifragilistic(sp?)");
389 auto buffer_y = Buffer::FromString("yyyyyyyyyyyyyyyyyyyyyyyyy");
390
391 // empty array is valid
392 EXPECT_THAT(MakeBinaryViewArray({}, {}), Ok());
393
394 // empty array with some data buffers is valid
395 EXPECT_THAT(MakeBinaryViewArray({buffer_s, buffer_y}, {}), Ok());
396
397 // inline views need not have a corresponding buffer
398 EXPECT_THAT(MakeBinaryViewArray({},
399 {
400 util::ToInlineBinaryView("hello"),
401 util::ToInlineBinaryView("world"),
402 util::ToInlineBinaryView("inline me"),
403 }),
404 Ok());
405
406 // Variadic buffer slots, when present, must contain real buffers.
407 EXPECT_THAT(MakeBinaryViewArray({nullptr},
408 {
409 util::ToInlineBinaryView("hello"),
410 util::ToInlineBinaryView("world"),
411 }),
412 Raises(StatusCode::Invalid,
413 ::testing::HasSubstr("null variadic buffer at buffer index #2 "
414 "(variadic buffer index #0)")));
415
416 // non-inline views are expected to reference only buffers managed by the array
417 EXPECT_THAT(
418 MakeBinaryViewArray(
419 {buffer_s, buffer_y},
420 {util::ToBinaryView("supe", static_cast<int32_t>(buffer_s->size()), 0, 0),
421 util::ToBinaryView("yyyy", static_cast<int32_t>(buffer_y->size()), 1, 0)}),
422 Ok());
423
424 // views may not reference data buffers not present in the array
425 EXPECT_THAT(
426 MakeBinaryViewArray(
427 {}, {util::ToBinaryView("supe", static_cast<int32_t>(buffer_s->size()), 0, 0)}),
428 Raises(StatusCode::IndexError));
429 // ... or ranges which overflow the referenced data buffer
430 EXPECT_THAT(
431 MakeBinaryViewArray(
432 {buffer_s}, {util::ToBinaryView(
433 "supe", static_cast<int32_t>(buffer_s->size() + 50), 0, 0)}),
434 Raises(StatusCode::IndexError));
435
436 // Additionally, the prefixes of non-inline views must match the data buffer
437 EXPECT_THAT(
438 MakeBinaryViewArray(
439 {buffer_s, buffer_y},
440 {util::ToBinaryView("SUPE", static_cast<int32_t>(buffer_s->size()), 0, 0),
441 util::ToBinaryView("yyyy", static_cast<int32_t>(buffer_y->size()), 1, 0)}),
442 Raises(StatusCode::Invalid));
443

Callers

nothing calls this directly

Calls 15

FromStringFunction · 0.85
MakeBinaryViewArrayFunction · 0.85
OkFunction · 0.85
ToInlineBinaryViewFunction · 0.85
RaisesFunction · 0.85
ToBinaryViewFunction · 0.85
AllocateEmptyBitmapFunction · 0.85
ValidateArrayFullFunction · 0.85
ValueOrDieMethod · 0.80
sizeMethod · 0.45
dataMethod · 0.45
AppendMethod · 0.45

Tested by

no test coverage detected