aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/yson/node/node_io_ut.cpp
diff options
context:
space:
mode:
authorionagamed <ionagamed@yandex-team.com>2023-12-06 11:15:42 +0300
committerionagamed <ionagamed@yandex-team.com>2023-12-06 11:59:15 +0300
commitbbdd76a9666c19dd2eb27a842909358e8b541a67 (patch)
tree4dd28e53f070d9f33c58df8631357e0b7125ce54 /library/cpp/yson/node/node_io_ut.cpp
parent19dfab524551ce06a74e89eda1a7dd2c95663e9c (diff)
downloadydb-bbdd76a9666c19dd2eb27a842909358e8b541a67.tar.gz
library/yson: Add NodeFromJsonStringIterative
AI для
Diffstat (limited to 'library/cpp/yson/node/node_io_ut.cpp')
-rw-r--r--library/cpp/yson/node/node_io_ut.cpp53
1 files changed, 53 insertions, 0 deletions
diff --git a/library/cpp/yson/node/node_io_ut.cpp b/library/cpp/yson/node/node_io_ut.cpp
new file mode 100644
index 0000000000..90720cd3a1
--- /dev/null
+++ b/library/cpp/yson/node/node_io_ut.cpp
@@ -0,0 +1,53 @@
+#include "node_io.h"
+
+#include <library/cpp/testing/unittest/registar.h>
+
+#include <util/stream/mem.h>
+
+using namespace NYson;
+
+namespace {
+ void GenerateDeepJson(TStringStream& stream, ui64 depth) {
+ stream << "{\"key\":";
+ for (ui32 i = 0; i < depth - 1; ++i) {
+ stream << "[";
+ }
+ for (ui32 i = 0; i < depth - 1; ++i) {
+ stream << "]";
+ }
+ stream << "}";
+ }
+}
+
+Y_UNIT_TEST_SUITE(TestNodeFromJsonStringIterativeTest) {
+ Y_UNIT_TEST(NoCrashOn1e5Brackets) {
+ constexpr ui32 brackets = static_cast<ui32>(1e5);
+
+ TStringStream jsonStream;
+ GenerateDeepJson(jsonStream, brackets);
+
+ UNIT_ASSERT_EXCEPTION(
+ NYT::NodeFromJsonStringIterative(jsonStream.Str()),
+ std::exception);
+ }
+
+ Y_UNIT_TEST(NoCrashOn1025Brackets) {
+ constexpr ui32 brackets = 1025;
+
+ TStringStream jsonStream;
+ GenerateDeepJson(jsonStream, brackets);
+
+ UNIT_ASSERT_EXCEPTION(
+ NYT::NodeFromJsonStringIterative(jsonStream.Str()),
+ std::exception);
+ }
+
+ Y_UNIT_TEST(NoErrorOn1024Brackets) {
+ constexpr ui32 brackets = 1024;
+
+ TStringStream jsonStream;
+ GenerateDeepJson(jsonStream, brackets);
+
+ UNIT_ASSERT_NO_EXCEPTION(NYT::NodeFromJsonStringIterative(jsonStream.Str()));
+ }
+}