12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- #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()));
- }
- }
|