Cover JSON codec. 3.0.62

pull/1568/head
winlin 5 years ago
parent 48970389ba
commit 1b2449ca3f

@ -1970,9 +1970,10 @@ SrsJsonAny* SrsJsonArray::at(int index)
return elem;
}
void SrsJsonArray::add(SrsJsonAny* value)
SrsJsonArray* SrsJsonArray::add(SrsJsonAny* value)
{
properties.push_back(value);
return this;
}
SrsJsonArray* SrsJsonArray::append(SrsJsonAny* value)

@ -156,7 +156,7 @@ public:
virtual int count();
// @remark: max index is count().
virtual SrsJsonAny* at(int index);
virtual void add(SrsJsonAny* value);
virtual SrsJsonArray* add(SrsJsonAny* value);
// alias to add.
virtual SrsJsonArray* append(SrsJsonAny* value);
public:

@ -2621,6 +2621,20 @@ VOID TEST(ProtocolJSONTest, Dumps)
EXPECT_STREQ("[]", p->dumps().c_str());
srs_freep(p);
}
if (true) {
SrsJsonObject* p = SrsJsonAny::object();
p->set("id", SrsJsonAny::integer(3));
EXPECT_STREQ("{\"id\":3}", p->dumps().c_str());
srs_freep(p);
}
if (true) {
SrsJsonArray* p = SrsJsonAny::array();
p->add(SrsJsonAny::integer(3));
EXPECT_STREQ("[3]", p->dumps().c_str());
srs_freep(p);
}
}
VOID TEST(ProtocolJSONTest, Parse)
@ -2680,3 +2694,78 @@ VOID TEST(ProtocolJSONTest, Parse)
}
}
VOID TEST(ProtocolJSONTest, ObjectAPI)
{
SrsJsonObject* p = SrsJsonAny::object();
SrsAutoFree(SrsJsonObject, p);
p->set("id", SrsJsonAny::integer(3));
p->set("name", SrsJsonAny::str("srs"));
EXPECT_STREQ("name", p->key_at(1).c_str());
EXPECT_STREQ("srs", p->value_at(1)->to_str().c_str());
p->set("name", NULL);
p->set("name", SrsJsonAny::str("ossrs"));
p->set("version", SrsJsonAny::number(3.1));
p->set("stable", SrsJsonAny::boolean(true));
SrsJsonObject* pp = SrsJsonAny::object();
p->set("args", pp);
pp->set("url", SrsJsonAny::str("ossrs.net"));
pp->set("year", SrsJsonAny::integer(2019));
SrsJsonArray* pa = SrsJsonAny::array();
p->set("authors", pa);
pa->add(SrsJsonAny::str("winlin"));
pa->add(SrsJsonAny::str("wenjie"));
SrsJsonAny* prop = p->get_property("name");
EXPECT_STREQ("ossrs", prop->to_str().c_str());
EXPECT_STREQ("ossrs", p->ensure_property_string("name")->to_str().c_str());
EXPECT_TRUE(NULL == p->get_property("invalid"));
EXPECT_TRUE(NULL == p->ensure_property_string("invalid"));
EXPECT_TRUE(NULL == p->ensure_property_string("id"));
EXPECT_TRUE(NULL == p->ensure_property_integer("invalid"));
EXPECT_TRUE(NULL == p->ensure_property_integer("name"));
EXPECT_EQ(3, p->ensure_property_integer("id")->to_integer());
EXPECT_TRUE(NULL == p->ensure_property_number("invalid"));
EXPECT_TRUE(NULL == p->ensure_property_number("name"));
EXPECT_EQ(3.1, p->ensure_property_number("version")->to_number());
EXPECT_TRUE(NULL == p->ensure_property_boolean("invalid"));
EXPECT_TRUE(NULL == p->ensure_property_boolean("name"));
EXPECT_TRUE(p->ensure_property_boolean("stable")->to_boolean());
EXPECT_TRUE(NULL == p->ensure_property_object("invalid"));
EXPECT_TRUE(NULL == p->ensure_property_object("name"));
EXPECT_TRUE(NULL != p->ensure_property_object("args")->to_object());
EXPECT_TRUE(NULL == p->ensure_property_array("invalid"));
EXPECT_TRUE(NULL == p->ensure_property_array("name"));
EXPECT_TRUE(NULL != p->ensure_property_array("authors")->to_array());
SrsAmf0Object* a = (SrsAmf0Object*)p->to_amf0();
EXPECT_EQ(6, a->count());
srs_freep(a);
}
VOID TEST(ProtocolJSONTest, ArrayAPI)
{
SrsJsonArray* p = SrsJsonAny::array();
SrsAutoFree(SrsJsonArray, p);
p->add(SrsJsonAny::integer(2019));
p->add(SrsJsonAny::str("srs"));
p->add(SrsJsonAny::boolean(true));
EXPECT_STREQ("srs", p->at(1)->to_str().c_str());
SrsAmf0StrictArray* a = (SrsAmf0StrictArray*)p->to_amf0();
EXPECT_EQ(3, a->count());
srs_freep(a);
}

Loading…
Cancel
Save