From 1ebec34d5bc5d63e946f8cebfe88c0125d08a784 Mon Sep 17 00:00:00 2001 From: winlin Date: Tue, 22 Oct 2019 09:58:09 +0800 Subject: [PATCH] Cover JSON codec. 3.0.62 --- trunk/src/protocol/srs_protocol_json.cpp | 6 +- trunk/src/utest/srs_utest_amf0.cpp | 93 ++++++++++++++++++++++++ 2 files changed, 94 insertions(+), 5 deletions(-) diff --git a/trunk/src/protocol/srs_protocol_json.cpp b/trunk/src/protocol/srs_protocol_json.cpp index a87159fdb..f58766538 100644 --- a/trunk/src/protocol/srs_protocol_json.cpp +++ b/trunk/src/protocol/srs_protocol_json.cpp @@ -1632,11 +1632,9 @@ SrsAmf0Any* SrsJsonAny::to_amf0() srs_assert(false); } default: { - break; + return SrsAmf0Any::null(); } } - - return SrsAmf0Any::null(); } SrsJsonAny* SrsJsonAny::str(const char* value) @@ -1729,8 +1727,6 @@ SrsJsonAny* srs_json_parse_tree(json_value* node) default: return NULL; } - - return NULL; } SrsJsonAny* SrsJsonAny::loads(const string& str) diff --git a/trunk/src/utest/srs_utest_amf0.cpp b/trunk/src/utest/srs_utest_amf0.cpp index b42823366..8d926435c 100644 --- a/trunk/src/utest/srs_utest_amf0.cpp +++ b/trunk/src/utest/srs_utest_amf0.cpp @@ -2499,6 +2499,11 @@ VOID TEST(ProtocolJSONTest, Interfaces) SrsJsonAny* p = SrsJsonAny::str(); EXPECT_TRUE(p->is_string()); EXPECT_TRUE(p->to_str().empty()); + + SrsAmf0Any* a = p->to_amf0(); + EXPECT_TRUE(a->is_string()); + + srs_freep(a); srs_freep(p); } @@ -2506,6 +2511,11 @@ VOID TEST(ProtocolJSONTest, Interfaces) SrsJsonAny* p = SrsJsonAny::str("hello"); EXPECT_TRUE(p->is_string()); EXPECT_TRUE(string("hello") == p->to_str()); + + SrsAmf0Any* a = p->to_amf0(); + EXPECT_TRUE(a->is_string()); + + srs_freep(a); srs_freep(p); } @@ -2513,6 +2523,44 @@ VOID TEST(ProtocolJSONTest, Interfaces) SrsJsonAny* p = SrsJsonAny::str("hello", 2); EXPECT_TRUE(p->is_string()); EXPECT_TRUE(string("he") == p->to_str()); + + SrsAmf0Any* a = p->to_amf0(); + EXPECT_TRUE(a->is_string()); + + srs_freep(a); + srs_freep(p); + } + + if (true) { + SrsJsonAny* p = SrsJsonAny::boolean(true); + EXPECT_TRUE(p->is_boolean()); + + SrsAmf0Any* a = p->to_amf0(); + EXPECT_TRUE(a->is_boolean()); + + srs_freep(a); + srs_freep(p); + } + + if (true) { + SrsJsonAny* p = SrsJsonAny::integer(); + EXPECT_TRUE(p->is_integer()); + + SrsAmf0Any* a = p->to_amf0(); + EXPECT_TRUE(a->is_number()); + + srs_freep(a); + srs_freep(p); + } + + if (true) { + SrsJsonAny* p = SrsJsonAny::number(); + EXPECT_TRUE(p->is_number()); + + SrsAmf0Any* a = p->to_amf0(); + EXPECT_TRUE(a->is_number()); + + srs_freep(a); srs_freep(p); } } @@ -2575,3 +2623,48 @@ VOID TEST(ProtocolJSONTest, Dumps) } } +VOID TEST(ProtocolJSONTest, Parse) +{ + if (true) { + SrsJsonAny* p = SrsJsonAny::loads("\"hello\""); + EXPECT_TRUE(p->is_string()); + srs_freep(p); + } + + if (true) { + SrsJsonAny* p = SrsJsonAny::loads("true"); + EXPECT_TRUE(p->is_boolean()); + srs_freep(p); + } + + if (true) { + SrsJsonAny* p = SrsJsonAny::loads("3"); + EXPECT_TRUE(p->is_integer()); + srs_freep(p); + } + + if (true) { + SrsJsonAny* p = SrsJsonAny::loads("3.0"); + EXPECT_TRUE(p->is_number()); + srs_freep(p); + } + + if (true) { + SrsJsonAny* p = SrsJsonAny::loads("null"); + EXPECT_TRUE(p->is_null()); + srs_freep(p); + } + + if (true) { + SrsJsonAny* p = SrsJsonAny::loads("{}}"); + EXPECT_TRUE(p->is_object()); + srs_freep(p); + } + + if (true) { + SrsJsonAny* p = SrsJsonAny::loads("[]]"); + EXPECT_TRUE(p->is_array()); + srs_freep(p); + } +} +