| 425 | }; |
| 426 | |
| 427 | TEST_F(OutputBufferManagerTest, arbitrayBuffer) { |
| 428 | { |
| 429 | ArbitraryBuffer buffer; |
| 430 | ASSERT_TRUE(buffer.empty()); |
| 431 | ASSERT_FALSE(buffer.hasNoMoreData()); |
| 432 | ASSERT_EQ( |
| 433 | buffer.toString(), "[ARBITRARY_BUFFER PAGES[0] NO MORE DATA[false]]"); |
| 434 | BOLT_ASSERT_THROW(buffer.enqueue(nullptr), "Unexpected null page"); |
| 435 | ASSERT_EQ( |
| 436 | buffer.toString(), "[ARBITRARY_BUFFER PAGES[0] NO MORE DATA[false]]"); |
| 437 | buffer.noMoreData(); |
| 438 | ASSERT_EQ( |
| 439 | buffer.toString(), "[ARBITRARY_BUFFER PAGES[0] NO MORE DATA[true]]"); |
| 440 | } |
| 441 | |
| 442 | { |
| 443 | ArbitraryBuffer buffer; |
| 444 | ASSERT_TRUE(buffer.empty()); |
| 445 | ASSERT_FALSE(buffer.hasNoMoreData()); |
| 446 | auto page1 = makeSerializedPage(rowType_, 100); |
| 447 | auto* rawPage1 = page1.get(); |
| 448 | buffer.enqueue(std::move(page1)); |
| 449 | ASSERT_FALSE(buffer.empty()); |
| 450 | ASSERT_FALSE(buffer.hasNoMoreData()); |
| 451 | ASSERT_EQ( |
| 452 | buffer.toString(), "[ARBITRARY_BUFFER PAGES[1] NO MORE DATA[false]]"); |
| 453 | auto page2 = makeSerializedPage(rowType_, 100); |
| 454 | auto* rawPage2 = page2.get(); |
| 455 | buffer.enqueue(std::move(page2)); |
| 456 | ASSERT_FALSE(buffer.empty()); |
| 457 | ASSERT_FALSE(buffer.hasNoMoreData()); |
| 458 | ASSERT_EQ( |
| 459 | buffer.toString(), "[ARBITRARY_BUFFER PAGES[2] NO MORE DATA[false]]"); |
| 460 | |
| 461 | auto pages = buffer.getPages(1); |
| 462 | ASSERT_EQ(pages.size(), 1); |
| 463 | ASSERT_EQ(pages[0].get(), rawPage1); |
| 464 | auto page3 = makeSerializedPage(rowType_, 100); |
| 465 | auto* rawPage3 = page3.get(); |
| 466 | buffer.enqueue(std::move(page3)); |
| 467 | ASSERT_EQ( |
| 468 | buffer.toString(), "[ARBITRARY_BUFFER PAGES[2] NO MORE DATA[false]]"); |
| 469 | buffer.noMoreData(); |
| 470 | ASSERT_FALSE(buffer.empty()); |
| 471 | ASSERT_TRUE(buffer.hasNoMoreData()); |
| 472 | ASSERT_EQ( |
| 473 | buffer.toString(), "[ARBITRARY_BUFFER PAGES[2] NO MORE DATA[true]]"); |
| 474 | pages = buffer.getPages(1'000'000'000); |
| 475 | ASSERT_EQ(pages.size(), 3); |
| 476 | ASSERT_EQ(pages[0].get(), rawPage2); |
| 477 | ASSERT_EQ(pages[1].get(), rawPage3); |
| 478 | ASSERT_EQ(pages[2].get(), nullptr); |
| 479 | ASSERT_TRUE(buffer.empty()); |
| 480 | ASSERT_TRUE(buffer.hasNoMoreData()); |
| 481 | ASSERT_EQ( |
| 482 | buffer.toString(), "[ARBITRARY_BUFFER PAGES[0] NO MORE DATA[true]]"); |
| 483 | auto page4 = makeSerializedPage(rowType_, 100); |
| 484 | BOLT_ASSERT_THROW( |
nothing calls this directly
no test coverage detected