aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/json/writer/json_ut.cpp
diff options
context:
space:
mode:
authormyltsev <myltsev@yandex-team.ru>2022-02-10 16:46:03 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:46:03 +0300
commitfc361854fd6ee8d747229b090f0b8018e260d1fb (patch)
tree1a2c5ffcf89eb53ecd79dbc9bc0a195c27404d0c /library/cpp/json/writer/json_ut.cpp
parent9166d66c30c23c9e85a7c88185a068987148d23f (diff)
downloadydb-fc361854fd6ee8d747229b090f0b8018e260d1fb.tar.gz
Restoring authorship annotation for <myltsev@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'library/cpp/json/writer/json_ut.cpp')
-rw-r--r--library/cpp/json/writer/json_ut.cpp280
1 files changed, 140 insertions, 140 deletions
diff --git a/library/cpp/json/writer/json_ut.cpp b/library/cpp/json/writer/json_ut.cpp
index d6842bcc6d..9980555683 100644
--- a/library/cpp/json/writer/json_ut.cpp
+++ b/library/cpp/json/writer/json_ut.cpp
@@ -1,191 +1,191 @@
#include <library/cpp/testing/unittest/registar.h>
#include <util/system/sanitizers.h>
-
-#include "json.h"
+
+#include "json.h"
#include <library/cpp/json/json_value.h>
-
+
#include <limits>
Y_UNIT_TEST_SUITE(JsonWriter) {
Y_UNIT_TEST(Struct) {
- NJsonWriter::TBuf w;
- w.BeginList();
- w.BeginObject()
- .WriteKey("key")
- .WriteString("value")
- .UnsafeWritePair("\"xk\":13")
- .WriteKey("key2")
- .BeginList()
+ NJsonWriter::TBuf w;
+ w.BeginList();
+ w.BeginObject()
+ .WriteKey("key")
+ .WriteString("value")
+ .UnsafeWritePair("\"xk\":13")
+ .WriteKey("key2")
+ .BeginList()
.BeginObject()
.EndObject()
.BeginObject()
.EndObject()
- .EndList()
+ .EndList()
.EndObject();
- w.WriteInt(43);
- w.UnsafeWriteValue("\"x\"");
- w.WriteString("...");
- w.EndList();
- const char* exp = "[{\"key\":\"value\",\"xk\":13,\"key2\":[{},{}]},43,\"x\",\"...\"]";
- UNIT_ASSERT_EQUAL(w.Str(), exp);
- }
+ w.WriteInt(43);
+ w.UnsafeWriteValue("\"x\"");
+ w.WriteString("...");
+ w.EndList();
+ const char* exp = "[{\"key\":\"value\",\"xk\":13,\"key2\":[{},{}]},43,\"x\",\"...\"]";
+ UNIT_ASSERT_EQUAL(w.Str(), exp);
+ }
Y_UNIT_TEST(EscapedString) {
- NJsonWriter::TBuf w(NJsonWriter::HEM_ESCAPE_HTML);
- w.WriteString(" \n \r \t \007 \b \f ' <tag> &ent; \"txt\" ");
+ NJsonWriter::TBuf w(NJsonWriter::HEM_ESCAPE_HTML);
+ w.WriteString(" \n \r \t \007 \b \f ' <tag> &ent; \"txt\" ");
TString ws = w.Str();
- const char* exp = "\" \\n \\r \\t \\u0007 \\b \\f &#39; &lt;tag&gt; &amp;ent; &quot;txt&quot; \"";
- UNIT_ASSERT_STRINGS_EQUAL(ws.c_str(), exp);
- }
+ const char* exp = "\" \\n \\r \\t \\u0007 \\b \\f &#39; &lt;tag&gt; &amp;ent; &quot;txt&quot; \"";
+ UNIT_ASSERT_STRINGS_EQUAL(ws.c_str(), exp);
+ }
Y_UNIT_TEST(UnescapedString) {
- NJsonWriter::TBuf w;
- w.WriteString(" \n \r \t \b \f '; -- <tag> &ent; \"txt\"", NJsonWriter::HEM_DONT_ESCAPE_HTML);
+ NJsonWriter::TBuf w;
+ w.WriteString(" \n \r \t \b \f '; -- <tag> &ent; \"txt\"", NJsonWriter::HEM_DONT_ESCAPE_HTML);
TString ws = w.Str();
- const char* exp = "\" \\n \\r \\t \\b \\f \\u0027; -- \\u003Ctag\\u003E &ent; \\\"txt\\\"\"";
- UNIT_ASSERT_STRINGS_EQUAL(ws.c_str(), exp);
- }
+ const char* exp = "\" \\n \\r \\t \\b \\f \\u0027; -- \\u003Ctag\\u003E &ent; \\\"txt\\\"\"";
+ UNIT_ASSERT_STRINGS_EQUAL(ws.c_str(), exp);
+ }
Y_UNIT_TEST(UnescapedChaining) {
- NJsonWriter::TBuf w(NJsonWriter::HEM_DONT_ESCAPE_HTML);
- w.UnsafeWriteRawBytes("(", 1);
- w.BeginList().WriteString("<>&'\\").BeginList();
- w.EndList().EndList();
+ NJsonWriter::TBuf w(NJsonWriter::HEM_DONT_ESCAPE_HTML);
+ w.UnsafeWriteRawBytes("(", 1);
+ w.BeginList().WriteString("<>&'\\").BeginList();
+ w.EndList().EndList();
TString ws = w.Str();
- const char* exp = "([\"\\u003C\\u003E&\\u0027\\\\\",[]]";
- UNIT_ASSERT_STRINGS_EQUAL(ws.c_str(), exp);
- }
+ const char* exp = "([\"\\u003C\\u003E&\\u0027\\\\\",[]]";
+ UNIT_ASSERT_STRINGS_EQUAL(ws.c_str(), exp);
+ }
Y_UNIT_TEST(Utf8) {
TString ws = NJsonWriter::TBuf().WriteString("яЯ σΣ ש א").Str();
- const char* exp = "\"яЯ σΣ ש א\"";
- UNIT_ASSERT_STRINGS_EQUAL(ws.c_str(), exp);
- }
+ const char* exp = "\"яЯ σΣ ש א\"";
+ UNIT_ASSERT_STRINGS_EQUAL(ws.c_str(), exp);
+ }
Y_UNIT_TEST(WrongObject) {
- NJsonWriter::TBuf w;
- w.BeginObject();
- UNIT_ASSERT_EXCEPTION(w.WriteString("hehe"), NJsonWriter::TError);
- }
+ NJsonWriter::TBuf w;
+ w.BeginObject();
+ UNIT_ASSERT_EXCEPTION(w.WriteString("hehe"), NJsonWriter::TError);
+ }
Y_UNIT_TEST(WrongList) {
- NJsonWriter::TBuf w;
- w.BeginList();
- UNIT_ASSERT_EXCEPTION(w.WriteKey("hehe"), NJsonWriter::TError);
- }
+ NJsonWriter::TBuf w;
+ w.BeginList();
+ UNIT_ASSERT_EXCEPTION(w.WriteKey("hehe"), NJsonWriter::TError);
+ }
Y_UNIT_TEST(Incomplete) {
- NJsonWriter::TBuf w;
- w.BeginList();
- UNIT_ASSERT_EXCEPTION(w.Str(), NJsonWriter::TError);
- }
+ NJsonWriter::TBuf w;
+ w.BeginList();
+ UNIT_ASSERT_EXCEPTION(w.Str(), NJsonWriter::TError);
+ }
Y_UNIT_TEST(BareKey) {
- NJsonWriter::TBuf w;
- w.BeginObject()
+ NJsonWriter::TBuf w;
+ w.BeginObject()
.CompatWriteKeyWithoutQuotes("p")
.WriteInt(1)
.CompatWriteKeyWithoutQuotes("n")
.WriteInt(0)
.EndObject();
TString ws = w.Str();
- const char* exp = "{p:1,n:0}";
- UNIT_ASSERT_STRINGS_EQUAL(ws.c_str(), exp);
- }
+ const char* exp = "{p:1,n:0}";
+ UNIT_ASSERT_STRINGS_EQUAL(ws.c_str(), exp);
+ }
Y_UNIT_TEST(UnescapedStringInObject) {
- NJsonWriter::TBuf w(NJsonWriter::HEM_DONT_ESCAPE_HTML);
- w.BeginObject().WriteKey("key").WriteString("</&>'").EndObject();
+ NJsonWriter::TBuf w(NJsonWriter::HEM_DONT_ESCAPE_HTML);
+ w.BeginObject().WriteKey("key").WriteString("</&>'").EndObject();
TString ws = w.Str();
- const char* exp = "{\"key\":\"\\u003C\\/&\\u003E\\u0027\"}";
- UNIT_ASSERT_STRINGS_EQUAL(ws.c_str(), exp);
- }
+ const char* exp = "{\"key\":\"\\u003C\\/&\\u003E\\u0027\"}";
+ UNIT_ASSERT_STRINGS_EQUAL(ws.c_str(), exp);
+ }
Y_UNIT_TEST(ForeignStreamStr) {
- NJsonWriter::TBuf w(NJsonWriter::HEM_DONT_ESCAPE_HTML, &Cerr);
- UNIT_ASSERT_EXCEPTION(w.Str(), NJsonWriter::TError);
- }
+ NJsonWriter::TBuf w(NJsonWriter::HEM_DONT_ESCAPE_HTML, &Cerr);
+ UNIT_ASSERT_EXCEPTION(w.Str(), NJsonWriter::TError);
+ }
Y_UNIT_TEST(ForeignStreamValue) {
- TStringStream ss;
- NJsonWriter::TBuf w(NJsonWriter::HEM_DONT_ESCAPE_HTML, &ss);
- w.WriteInt(1543);
- UNIT_ASSERT_STRINGS_EQUAL(ss.Str(), "1543");
- }
+ TStringStream ss;
+ NJsonWriter::TBuf w(NJsonWriter::HEM_DONT_ESCAPE_HTML, &ss);
+ w.WriteInt(1543);
+ UNIT_ASSERT_STRINGS_EQUAL(ss.Str(), "1543");
+ }
Y_UNIT_TEST(Indentation) {
- NJsonWriter::TBuf w(NJsonWriter::HEM_DONT_ESCAPE_HTML);
- w.SetIndentSpaces(2);
- w.BeginList()
- .WriteInt(1)
- .WriteString("hello")
- .BeginObject()
+ NJsonWriter::TBuf w(NJsonWriter::HEM_DONT_ESCAPE_HTML);
+ w.SetIndentSpaces(2);
+ w.BeginList()
+ .WriteInt(1)
+ .WriteString("hello")
+ .BeginObject()
.WriteKey("abc")
.WriteInt(3)
.WriteKey("def")
.WriteInt(4)
- .EndObject()
+ .EndObject()
.EndList();
- const char* exp = "[\n"
- " 1,\n"
- " \"hello\",\n"
- " {\n"
+ const char* exp = "[\n"
+ " 1,\n"
+ " \"hello\",\n"
+ " {\n"
" \"abc\":3,\n"
" \"def\":4\n"
- " }\n"
- "]";
- UNIT_ASSERT_STRINGS_EQUAL(exp, w.Str());
- }
+ " }\n"
+ "]";
+ UNIT_ASSERT_STRINGS_EQUAL(exp, w.Str());
+ }
Y_UNIT_TEST(WriteJsonValue) {
- using namespace NJson;
- TJsonValue val;
- val.AppendValue(1);
- val.AppendValue("2");
- val.AppendValue(3.5);
- TJsonValue obj;
- obj.InsertValue("key", TJsonValue("value"));
-
- val.AppendValue(obj);
- val.AppendValue(TJsonValue(JSON_NULL));
-
- NJsonWriter::TBuf w(NJsonWriter::HEM_DONT_ESCAPE_HTML);
- w.WriteJsonValue(&val);
-
- const char exp[] = "[1,\"2\",3.5,{\"key\":\"value\"},null]";
- UNIT_ASSERT_STRINGS_EQUAL(exp, w.Str());
- }
+ using namespace NJson;
+ TJsonValue val;
+ val.AppendValue(1);
+ val.AppendValue("2");
+ val.AppendValue(3.5);
+ TJsonValue obj;
+ obj.InsertValue("key", TJsonValue("value"));
+
+ val.AppendValue(obj);
+ val.AppendValue(TJsonValue(JSON_NULL));
+
+ NJsonWriter::TBuf w(NJsonWriter::HEM_DONT_ESCAPE_HTML);
+ w.WriteJsonValue(&val);
+
+ const char exp[] = "[1,\"2\",3.5,{\"key\":\"value\"},null]";
+ UNIT_ASSERT_STRINGS_EQUAL(exp, w.Str());
+ }
Y_UNIT_TEST(WriteJsonValueSorted) {
- using namespace NJson;
- TJsonValue val;
- val.InsertValue("1", TJsonValue(1));
- val.InsertValue("2", TJsonValue(2));
-
- TJsonValue obj;
- obj.InsertValue("zero", TJsonValue(0));
- obj.InsertValue("succ", TJsonValue(1));
- val.InsertValue("0", obj);
-
- NJsonWriter::TBuf w(NJsonWriter::HEM_DONT_ESCAPE_HTML);
- w.WriteJsonValue(&val, true);
-
- const char exp[] = "{\"0\":{\"succ\":1,\"zero\":0},\"1\":1,\"2\":2}";
- UNIT_ASSERT_STRINGS_EQUAL(exp, w.Str());
- }
+ using namespace NJson;
+ TJsonValue val;
+ val.InsertValue("1", TJsonValue(1));
+ val.InsertValue("2", TJsonValue(2));
+
+ TJsonValue obj;
+ obj.InsertValue("zero", TJsonValue(0));
+ obj.InsertValue("succ", TJsonValue(1));
+ val.InsertValue("0", obj);
+
+ NJsonWriter::TBuf w(NJsonWriter::HEM_DONT_ESCAPE_HTML);
+ w.WriteJsonValue(&val, true);
+
+ const char exp[] = "{\"0\":{\"succ\":1,\"zero\":0},\"1\":1,\"2\":2}";
+ UNIT_ASSERT_STRINGS_EQUAL(exp, w.Str());
+ }
Y_UNIT_TEST(Unescaped) {
- NJsonWriter::TBuf buf(NJsonWriter::HEM_UNSAFE);
- buf.WriteString("</security>'");
- UNIT_ASSERT_STRINGS_EQUAL("\"</security>'\"", buf.Str());
- }
+ NJsonWriter::TBuf buf(NJsonWriter::HEM_UNSAFE);
+ buf.WriteString("</security>'");
+ UNIT_ASSERT_STRINGS_EQUAL("\"</security>'\"", buf.Str());
+ }
Y_UNIT_TEST(LittleBobbyJsonp) {
- NJsonWriter::TBuf buf;
- buf.WriteString("hello\xe2\x80\xa8\xe2\x80\xa9stranger");
- UNIT_ASSERT_STRINGS_EQUAL("\"hello\\u2028\\u2029stranger\"", buf.Str());
- }
+ NJsonWriter::TBuf buf;
+ buf.WriteString("hello\xe2\x80\xa8\xe2\x80\xa9stranger");
+ UNIT_ASSERT_STRINGS_EQUAL("\"hello\\u2028\\u2029stranger\"", buf.Str());
+ }
Y_UNIT_TEST(LittleBobbyInvalid) {
- NJsonWriter::TBuf buf;
- TStringBuf incomplete("\xe2\x80\xa8", 2);
- buf.WriteString(incomplete);
- // garbage in - garbage out
- UNIT_ASSERT_STRINGS_EQUAL("\"\xe2\x80\"", buf.Str());
- }
+ NJsonWriter::TBuf buf;
+ TStringBuf incomplete("\xe2\x80\xa8", 2);
+ buf.WriteString(incomplete);
+ // garbage in - garbage out
+ UNIT_ASSERT_STRINGS_EQUAL("\"\xe2\x80\"", buf.Str());
+ }
Y_UNIT_TEST(OverlyZealous) {
- NJsonWriter::TBuf buf;
- buf.WriteString("—");
- UNIT_ASSERT_STRINGS_EQUAL("\"—\"", buf.Str());
- }
+ NJsonWriter::TBuf buf;
+ buf.WriteString("—");
+ UNIT_ASSERT_STRINGS_EQUAL("\"—\"", buf.Str());
+ }
Y_UNIT_TEST(RelaxedEscaping) {
- NJsonWriter::TBuf buf(NJsonWriter::HEM_RELAXED);
- buf.WriteString("</>");
- UNIT_ASSERT_STRINGS_EQUAL("\"\\u003C/\\u003E\"", buf.Str());
- }
+ NJsonWriter::TBuf buf(NJsonWriter::HEM_RELAXED);
+ buf.WriteString("</>");
+ UNIT_ASSERT_STRINGS_EQUAL("\"\\u003C/\\u003E\"", buf.Str());
+ }
Y_UNIT_TEST(FloatFormatting) {
NJsonWriter::TBuf buf(NJsonWriter::HEM_DONT_ESCAPE_HTML);
@@ -304,4 +304,4 @@ Y_UNIT_TEST_SUITE(JsonWriter) {
// doesn't really matter
UNIT_ASSERT(!p.empty());
}
-}
+}