mirror of
https://github.com/ossrs/srs.git
synced 2025-02-15 04:42:04 +00:00
Cover AMF0 codec. 3.0.61
This commit is contained in:
parent
f24d82fada
commit
b2e4a5f834
1 changed files with 226 additions and 2 deletions
|
@ -31,6 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
#include <srs_protocol_amf0.hpp>
|
||||
#include <srs_core_autofree.hpp>
|
||||
#include <srs_protocol_json.hpp>
|
||||
#include <srs_kernel_buffer.hpp>
|
||||
|
||||
#include <string>
|
||||
using namespace std;
|
||||
|
@ -136,8 +137,10 @@ VOID TEST(SampleTest, FastSampleMacrosTest)
|
|||
EXPECT_NEAR(10, 15, 5);
|
||||
}
|
||||
|
||||
VOID TEST(ProtocolAMF0Test, Interfaces)
|
||||
VOID TEST(ProtocolAMF0Test, InterfacesString)
|
||||
{
|
||||
srs_error_t err;
|
||||
|
||||
if (true) {
|
||||
SrsAmf0Any* p = SrsAmf0Any::str("hello");
|
||||
SrsAutoFree(SrsAmf0Any, p);
|
||||
|
@ -164,7 +167,27 @@ VOID TEST(ProtocolAMF0Test, Interfaces)
|
|||
EXPECT_TRUE(j->is_string());
|
||||
EXPECT_TRUE(string("hello") == j->to_str());
|
||||
srs_freep(j);
|
||||
|
||||
// For marshal and unmarshal.
|
||||
char* bb = new char[p->total_size()];
|
||||
SrsAutoFreeA(char, bb);
|
||||
SrsBuffer b(bb, p->total_size());
|
||||
HELPER_EXPECT_SUCCESS(p->write(&b));
|
||||
|
||||
b.skip(-1 * b.pos());
|
||||
SrsAmf0Any* pp = NULL;
|
||||
SrsAutoFree(SrsAmf0Any, pp);
|
||||
HELPER_EXPECT_SUCCESS(SrsAmf0Any::discovery(&b, &pp));
|
||||
|
||||
b.skip(-1 * b.pos());
|
||||
HELPER_EXPECT_SUCCESS(pp->read(&b));
|
||||
EXPECT_TRUE(string("hello") == pp->to_str());
|
||||
}
|
||||
}
|
||||
|
||||
VOID TEST(ProtocolAMF0Test, InterfacesBoolean)
|
||||
{
|
||||
srs_error_t err;
|
||||
|
||||
if (true) {
|
||||
SrsAmf0Any* p = SrsAmf0Any::boolean();
|
||||
|
@ -191,7 +214,27 @@ VOID TEST(ProtocolAMF0Test, Interfaces)
|
|||
EXPECT_TRUE(j->is_boolean());
|
||||
EXPECT_FALSE(j->to_boolean());
|
||||
srs_freep(j);
|
||||
|
||||
// For marshal and unmarshal.
|
||||
char* bb = new char[p->total_size()];
|
||||
SrsAutoFreeA(char, bb);
|
||||
SrsBuffer b(bb, p->total_size());
|
||||
HELPER_EXPECT_SUCCESS(p->write(&b));
|
||||
|
||||
b.skip(-1 * b.pos());
|
||||
SrsAmf0Any* pp = NULL;
|
||||
SrsAutoFree(SrsAmf0Any, pp);
|
||||
HELPER_EXPECT_SUCCESS(SrsAmf0Any::discovery(&b, &pp));
|
||||
|
||||
b.skip(-1 * b.pos());
|
||||
HELPER_EXPECT_SUCCESS(pp->read(&b));
|
||||
EXPECT_FALSE(p->to_boolean());
|
||||
}
|
||||
}
|
||||
|
||||
VOID TEST(ProtocolAMF0Test, InterfacesNumber)
|
||||
{
|
||||
srs_error_t err;
|
||||
|
||||
if (true) {
|
||||
SrsAmf0Any* p = SrsAmf0Any::number();
|
||||
|
@ -226,7 +269,27 @@ VOID TEST(ProtocolAMF0Test, Interfaces)
|
|||
EXPECT_TRUE(j->is_number());
|
||||
EXPECT_TRUE(100.1 == j->to_number());
|
||||
srs_freep(j);
|
||||
|
||||
// For marshal and unmarshal.
|
||||
char* bb = new char[p->total_size()];
|
||||
SrsAutoFreeA(char, bb);
|
||||
SrsBuffer b(bb, p->total_size());
|
||||
HELPER_EXPECT_SUCCESS(p->write(&b));
|
||||
|
||||
b.skip(-1 * b.pos());
|
||||
SrsAmf0Any* pp = NULL;
|
||||
SrsAutoFree(SrsAmf0Any, pp);
|
||||
HELPER_EXPECT_SUCCESS(SrsAmf0Any::discovery(&b, &pp));
|
||||
|
||||
b.skip(-1 * b.pos());
|
||||
HELPER_EXPECT_SUCCESS(pp->read(&b));
|
||||
EXPECT_TRUE(100.1 == p->to_number());
|
||||
}
|
||||
}
|
||||
|
||||
VOID TEST(ProtocolAMF0Test, InterfacesDate)
|
||||
{
|
||||
srs_error_t err;
|
||||
|
||||
if (true) {
|
||||
SrsAmf0Any* p = SrsAmf0Any::date();
|
||||
|
@ -249,7 +312,26 @@ VOID TEST(ProtocolAMF0Test, Interfaces)
|
|||
char* d = p->human_print(NULL, NULL);
|
||||
EXPECT_STREQ("Date 0/0\n", d);
|
||||
delete[] d;
|
||||
|
||||
// For marshal and unmarshal.
|
||||
char* bb = new char[p->total_size()];
|
||||
SrsAutoFreeA(char, bb);
|
||||
SrsBuffer b(bb, p->total_size());
|
||||
HELPER_EXPECT_SUCCESS(p->write(&b));
|
||||
|
||||
b.skip(-1 * b.pos());
|
||||
SrsAmf0Any* pp = NULL;
|
||||
SrsAutoFree(SrsAmf0Any, pp);
|
||||
HELPER_EXPECT_SUCCESS(SrsAmf0Any::discovery(&b, &pp));
|
||||
|
||||
b.skip(-1 * b.pos());
|
||||
HELPER_EXPECT_SUCCESS(pp->read(&b));
|
||||
}
|
||||
}
|
||||
|
||||
VOID TEST(ProtocolAMF0Test, InterfacesNull)
|
||||
{
|
||||
srs_error_t err;
|
||||
|
||||
if (true) {
|
||||
SrsAmf0Any* p = SrsAmf0Any::null();
|
||||
|
@ -274,7 +356,26 @@ VOID TEST(ProtocolAMF0Test, Interfaces)
|
|||
SrsJsonAny* j = p->to_json();
|
||||
EXPECT_TRUE(j->is_null());
|
||||
srs_freep(j);
|
||||
|
||||
// For marshal and unmarshal.
|
||||
char* bb = new char[p->total_size()];
|
||||
SrsAutoFreeA(char, bb);
|
||||
SrsBuffer b(bb, p->total_size());
|
||||
HELPER_EXPECT_SUCCESS(p->write(&b));
|
||||
|
||||
b.skip(-1 * b.pos());
|
||||
SrsAmf0Any* pp = NULL;
|
||||
SrsAutoFree(SrsAmf0Any, pp);
|
||||
HELPER_EXPECT_SUCCESS(SrsAmf0Any::discovery(&b, &pp));
|
||||
|
||||
b.skip(-1 * b.pos());
|
||||
HELPER_EXPECT_SUCCESS(pp->read(&b));
|
||||
}
|
||||
}
|
||||
|
||||
VOID TEST(ProtocolAMF0Test, InterfacesUndefined)
|
||||
{
|
||||
srs_error_t err;
|
||||
|
||||
if (true) {
|
||||
SrsAmf0Any* p = SrsAmf0Any::undefined();
|
||||
|
@ -299,7 +400,26 @@ VOID TEST(ProtocolAMF0Test, Interfaces)
|
|||
SrsJsonAny* j = p->to_json();
|
||||
EXPECT_TRUE(j->is_null());
|
||||
srs_freep(j);
|
||||
|
||||
// For marshal and unmarshal.
|
||||
char* bb = new char[p->total_size()];
|
||||
SrsAutoFreeA(char, bb);
|
||||
SrsBuffer b(bb, p->total_size());
|
||||
HELPER_EXPECT_SUCCESS(p->write(&b));
|
||||
|
||||
b.skip(-1 * b.pos());
|
||||
SrsAmf0Any* pp = NULL;
|
||||
SrsAutoFree(SrsAmf0Any, pp);
|
||||
HELPER_EXPECT_SUCCESS(SrsAmf0Any::discovery(&b, &pp));
|
||||
|
||||
b.skip(-1 * b.pos());
|
||||
HELPER_EXPECT_SUCCESS(pp->read(&b));
|
||||
}
|
||||
}
|
||||
|
||||
VOID TEST(ProtocolAMF0Test, InterfacesObject)
|
||||
{
|
||||
srs_error_t err;
|
||||
|
||||
if (true) {
|
||||
SrsAmf0Any* p = SrsAmf0Any::object();
|
||||
|
@ -325,7 +445,54 @@ VOID TEST(ProtocolAMF0Test, Interfaces)
|
|||
SrsJsonAny* j = p->to_json();
|
||||
EXPECT_TRUE(j->is_object());
|
||||
srs_freep(j);
|
||||
|
||||
// For marshal and unmarshal.
|
||||
char* bb = new char[p->total_size()];
|
||||
SrsAutoFreeA(char, bb);
|
||||
SrsBuffer b(bb, p->total_size());
|
||||
HELPER_EXPECT_SUCCESS(p->write(&b));
|
||||
|
||||
b.skip(-1 * b.pos());
|
||||
SrsAmf0Any* pp = NULL;
|
||||
SrsAutoFree(SrsAmf0Any, pp);
|
||||
HELPER_EXPECT_SUCCESS(SrsAmf0Any::discovery(&b, &pp));
|
||||
|
||||
b.skip(-1 * b.pos());
|
||||
HELPER_EXPECT_SUCCESS(pp->read(&b));
|
||||
EXPECT_TRUE(NULL != pp->to_object());
|
||||
}
|
||||
}
|
||||
|
||||
VOID TEST(ProtocolAMF0Test, InterfacesObject2)
|
||||
{
|
||||
if (true) {
|
||||
SrsAmf0Any* p = SrsAmf0Any::object();
|
||||
SrsAutoFree(SrsAmf0Any, p);
|
||||
|
||||
SrsAmf0Object* o = p->to_object();
|
||||
EXPECT_TRUE(NULL != o);
|
||||
|
||||
o->set("version", SrsAmf0Any::number(3.0));
|
||||
o->set("name", SrsAmf0Any::str("srs"));
|
||||
|
||||
SrsAmf0Any* prop = o->get_property("version");
|
||||
EXPECT_TRUE(prop->is_number());
|
||||
EXPECT_TRUE(3.0 == prop->to_number());
|
||||
|
||||
prop = o->ensure_property_number("version");
|
||||
EXPECT_TRUE(NULL != prop);
|
||||
|
||||
prop = o->ensure_property_string("name");
|
||||
EXPECT_TRUE(NULL != prop);
|
||||
|
||||
o->remove("version");
|
||||
EXPECT_TRUE(NULL == o->get_property("version"));
|
||||
}
|
||||
}
|
||||
|
||||
VOID TEST(ProtocolAMF0Test, InterfacesObjectEOF)
|
||||
{
|
||||
srs_error_t err;
|
||||
|
||||
if (true) {
|
||||
SrsAmf0Any* p = SrsAmf0Any::object_eof();
|
||||
|
@ -346,7 +513,26 @@ VOID TEST(ProtocolAMF0Test, Interfaces)
|
|||
SrsJsonAny* j = p->to_json();
|
||||
EXPECT_TRUE(j->is_null());
|
||||
srs_freep(j);
|
||||
|
||||
// For marshal and unmarshal.
|
||||
char* bb = new char[p->total_size()];
|
||||
SrsAutoFreeA(char, bb);
|
||||
SrsBuffer b(bb, p->total_size());
|
||||
HELPER_EXPECT_SUCCESS(p->write(&b));
|
||||
|
||||
b.skip(-1 * b.pos());
|
||||
SrsAmf0Any* pp = NULL;
|
||||
SrsAutoFree(SrsAmf0Any, pp);
|
||||
HELPER_EXPECT_SUCCESS(SrsAmf0Any::discovery(&b, &pp));
|
||||
|
||||
b.skip(-1 * b.pos());
|
||||
HELPER_EXPECT_SUCCESS(pp->read(&b));
|
||||
}
|
||||
}
|
||||
|
||||
VOID TEST(ProtocolAMF0Test, InterfacesEcmaArray)
|
||||
{
|
||||
srs_error_t err;
|
||||
|
||||
if (true) {
|
||||
SrsAmf0Any* p = SrsAmf0Any::ecma_array();
|
||||
|
@ -368,7 +554,27 @@ VOID TEST(ProtocolAMF0Test, Interfaces)
|
|||
char* d = p->human_print(NULL, NULL);
|
||||
EXPECT_STREQ("EcmaArray (0 items)\n", d);
|
||||
delete[] d;
|
||||
|
||||
// For marshal and unmarshal.
|
||||
char* bb = new char[p->total_size()];
|
||||
SrsAutoFreeA(char, bb);
|
||||
SrsBuffer b(bb, p->total_size());
|
||||
HELPER_EXPECT_SUCCESS(p->write(&b));
|
||||
|
||||
b.skip(-1 * b.pos());
|
||||
SrsAmf0Any* pp = NULL;
|
||||
SrsAutoFree(SrsAmf0Any, pp);
|
||||
HELPER_EXPECT_SUCCESS(SrsAmf0Any::discovery(&b, &pp));
|
||||
|
||||
b.skip(-1 * b.pos());
|
||||
HELPER_EXPECT_SUCCESS(pp->read(&b));
|
||||
EXPECT_TRUE(NULL != pp->to_ecma_array());
|
||||
}
|
||||
}
|
||||
|
||||
VOID TEST(ProtocolAMF0Test, InterfacesStrictArray)
|
||||
{
|
||||
srs_error_t err;
|
||||
|
||||
if (true) {
|
||||
SrsAmf0Any* p = SrsAmf0Any::strict_array();
|
||||
|
@ -390,8 +596,26 @@ VOID TEST(ProtocolAMF0Test, Interfaces)
|
|||
char* d = p->human_print(NULL, NULL);
|
||||
EXPECT_STREQ("StrictArray (0 items)\n", d);
|
||||
delete[] d;
|
||||
}
|
||||
|
||||
// For marshal and unmarshal.
|
||||
char* bb = new char[p->total_size()];
|
||||
SrsAutoFreeA(char, bb);
|
||||
SrsBuffer b(bb, p->total_size());
|
||||
HELPER_EXPECT_SUCCESS(p->write(&b));
|
||||
|
||||
b.skip(-1 * b.pos());
|
||||
SrsAmf0Any* pp = NULL;
|
||||
SrsAutoFree(SrsAmf0Any, pp);
|
||||
HELPER_EXPECT_SUCCESS(SrsAmf0Any::discovery(&b, &pp));
|
||||
|
||||
b.skip(-1 * b.pos());
|
||||
HELPER_EXPECT_SUCCESS(pp->read(&b));
|
||||
EXPECT_TRUE(NULL != pp->to_strict_array());
|
||||
}
|
||||
}
|
||||
|
||||
VOID TEST(ProtocolAMF0Test, InterfacesOthers)
|
||||
{
|
||||
if (true) {
|
||||
SrsAmf0Any* p = SrsAmf0Any::object();
|
||||
SrsAutoFree(SrsAmf0Any, p);
|
||||
|
|
Loading…
Reference in a new issue