diff options
author | myltsev <myltsev@yandex-team.ru> | 2022-02-10 16:46:03 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:46:03 +0300 |
commit | 9166d66c30c23c9e85a7c88185a068987148d23f (patch) | |
tree | 421bdcec5755d9e441c485560aab5ab8d74c7475 /library/cpp/json/writer/json_ut.cpp | |
parent | 8d3a5ed3a188a34167eaee54f1691ce5c9edf2f3 (diff) | |
download | ydb-9166d66c30c23c9e85a7c88185a068987148d23f.tar.gz |
Restoring authorship annotation for <myltsev@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'library/cpp/json/writer/json_ut.cpp')
-rw-r--r-- | library/cpp/json/writer/json_ut.cpp | 280 |
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 9980555683..d6842bcc6d 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 ' <tag> &ent; "txt" \""; - UNIT_ASSERT_STRINGS_EQUAL(ws.c_str(), exp); - } + const char* exp = "\" \\n \\r \\t \\u0007 \\b \\f ' <tag> &ent; "txt" \""; + 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()); } -} +} |