summaryrefslogtreecommitdiffstats
path: root/util/stream/buffer_ut.cpp
diff options
context:
space:
mode:
authorDevtools Arcadia <[email protected]>2022-02-07 18:08:42 +0300
committerDevtools Arcadia <[email protected]>2022-02-07 18:08:42 +0300
commit1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch)
treee26c9fed0de5d9873cce7e00bc214573dc2195b7 /util/stream/buffer_ut.cpp
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'util/stream/buffer_ut.cpp')
-rw-r--r--util/stream/buffer_ut.cpp85
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()));
+ }
+}