diff options
author | Devtools Arcadia <[email protected]> | 2022-02-07 18:08:42 +0300 |
---|---|---|
committer | Devtools Arcadia <[email protected]> | 2022-02-07 18:08:42 +0300 |
commit | 1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch) | |
tree | e26c9fed0de5d9873cce7e00bc214573dc2195b7 /util/stream/buffer_ut.cpp |
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'util/stream/buffer_ut.cpp')
-rw-r--r-- | util/stream/buffer_ut.cpp | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/util/stream/buffer_ut.cpp b/util/stream/buffer_ut.cpp new file mode 100644 index 00000000000..34946961907 --- /dev/null +++ b/util/stream/buffer_ut.cpp @@ -0,0 +1,85 @@ +#include "buffer.h" + +#include <library/cpp/testing/unittest/registar.h> + +#include <util/generic/buffer.h> + +#include <cstring> + +#include "str.h" + +Y_UNIT_TEST_SUITE(TBufferTest) { + Y_UNIT_TEST(Transfer) { + TBuffer buffer("razrazraz", 9); + TBufferInput input(buffer); + + input.Skip(3); + + TStringStream output; + TransferData(&input, &output); + + UNIT_ASSERT_VALUES_EQUAL(output.Str(), "razraz"); + } + + Y_UNIT_TEST(ReadTo) { + TBuffer buffer("1234567890", 10); + TBufferInput input(buffer); + + TString tmp; + UNIT_ASSERT_VALUES_EQUAL(input.ReadTo(tmp, '3'), 3); + UNIT_ASSERT_VALUES_EQUAL(tmp, "12"); + + UNIT_ASSERT_VALUES_EQUAL(input.ReadTo(tmp, 'z'), 7); + UNIT_ASSERT_VALUES_EQUAL(tmp, "4567890"); + } + + Y_UNIT_TEST(WriteViaNextAndUndo) { + TBuffer buffer; + TBufferOutput output(buffer); + TString str; + + for (size_t i = 0; i < 10000; ++i) { + str.push_back('a' + (i % 20)); + } + + size_t written = 0; + void* ptr = nullptr; + while (written < str.size()) { + size_t bufferSize = output.Next(&ptr); + UNIT_ASSERT(ptr && bufferSize > 0); + size_t toWrite = Min(bufferSize, str.size() - written); + memcpy(ptr, str.begin() + written, toWrite); + written += toWrite; + if (toWrite < bufferSize) { + output.Undo(bufferSize - toWrite); + } + } + + UNIT_ASSERT(0 == memcmp(buffer.data(), str.begin(), buffer.size())); + } + + Y_UNIT_TEST(Write) { + TBuffer buffer; + TBufferOutput output(buffer); + output << "1" + << "22" + << "333" + << "4444" + << "55555"; + + UNIT_ASSERT(0 == memcmp(buffer.data(), "1" + "22" + "333" + "4444" + "55555", + buffer.size())); + } + + Y_UNIT_TEST(WriteChars) { + TBuffer buffer; + TBufferOutput output(buffer); + output << '1' << '2' << '3' << '4' << '5' << '6' << '7' << '8' << '9' << '0'; + + UNIT_ASSERT(0 == memcmp(buffer.data(), "1234567890", buffer.size())); + } +} |