diff --git a/trunk/src/utest/srs_utest.cpp b/trunk/src/utest/srs_utest.cpp index 712ca6a85..bc4e2da5d 100644 --- a/trunk/src/utest/srs_utest.cpp +++ b/trunk/src/utest/srs_utest.cpp @@ -32,6 +32,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include #include #include +using namespace _srs_internal; #include using namespace std; @@ -477,6 +478,62 @@ VOID TEST(ProtocolAMF0Test, InterfacesObject) SrsAmf0Any* cp = p->copy(); EXPECT_TRUE(NULL != cp->to_object()); } + + if (true) { + SrsBuffer b; + SrsAmf0Object* o = SrsAmf0Any::object(); + HELPER_EXPECT_FAILED(o->read(&b)); + srs_freep(o); + } + + if (true) { + SrsBuffer b; + SrsAmf0Object* o = SrsAmf0Any::object(); + HELPER_EXPECT_FAILED(o->write(&b)); + srs_freep(o); + } + + if (true) { + uint8_t data[] = {0x01}; + SrsBuffer b((char*)data, sizeof(data)); + SrsAmf0Object* o = SrsAmf0Any::object(); + HELPER_EXPECT_FAILED(o->read(&b)); + srs_freep(o); + } + + if (true) { + uint8_t data[] = {0x00}; + SrsBuffer b((char*)data, sizeof(data)); + SrsAmf0Object* o = SrsAmf0Any::object(); + o->set("id", SrsAmf0Any::number(3.0)); + HELPER_EXPECT_FAILED(o->write(&b)); + srs_freep(o); + } + + if (true) { + uint8_t data[] = {0x03, 0x00, 0x01}; + SrsBuffer b((char*)data, sizeof(data)); + SrsAmf0Object* o = SrsAmf0Any::object(); + HELPER_EXPECT_FAILED(o->read(&b)); + srs_freep(o); + } + + if (true) { + uint8_t data[] = {0x00, 0x00, 0x02, 'i', 'd', 0x02, 0x00, 0x03, 's', 'r', 's'}; + SrsBuffer b((char*)data, sizeof(data)); + SrsAmf0Object* o = SrsAmf0Any::object(); + o->set("id", SrsAmf0Any::str("srs")); + HELPER_EXPECT_FAILED(o->write(&b)); + srs_freep(o); + } + + if (true) { + uint8_t data[] = {0x03, 0x00, 0x01, 'a'}; + SrsBuffer b((char*)data, sizeof(data)); + SrsAmf0Object* o = SrsAmf0Any::object(); + HELPER_EXPECT_FAILED(o->read(&b)); + srs_freep(o); + } } VOID TEST(ProtocolAMF0Test, InterfacesObject2) @@ -490,6 +547,7 @@ VOID TEST(ProtocolAMF0Test, InterfacesObject2) o->set("version", SrsAmf0Any::number(3.0)); o->set("name", SrsAmf0Any::str("srs")); + EXPECT_STREQ("version", o->key_raw_at(0)); SrsAmf0Any* prop = o->get_property("version"); EXPECT_TRUE(prop->is_number()); @@ -507,6 +565,10 @@ VOID TEST(ProtocolAMF0Test, InterfacesObject2) char* s = p->human_print(NULL, NULL); EXPECT_TRUE(s != NULL); srs_freepa(s); + + SrsJsonAny* j = o->to_json(); + EXPECT_TRUE(j != NULL); + srs_freep(j); } if (true) { @@ -605,6 +667,56 @@ VOID TEST(ProtocolAMF0Test, InterfacesObjectEOF) b.skip(-1 * b.pos()); HELPER_EXPECT_SUCCESS(pp->read(&b)); + + // For copy. + SrsAmf0Any* cp = p->copy(); + EXPECT_TRUE(cp->is_object_eof()); + } + + if (true) { + SrsBuffer b; + SrsAmf0ObjectEOF* o = new SrsAmf0ObjectEOF(); + HELPER_EXPECT_FAILED(o->read(&b)); + srs_freep(o); + } + + if (true) { + SrsBuffer b; + SrsAmf0ObjectEOF* o = new SrsAmf0ObjectEOF(); + HELPER_EXPECT_FAILED(o->write(&b)); + srs_freep(o); + } + + if (true) { + uint8_t data[] = {0x00, 0x01}; + SrsBuffer b((char*)data, sizeof(data)); + SrsAmf0ObjectEOF* o = new SrsAmf0ObjectEOF(); + HELPER_EXPECT_FAILED(o->read(&b)); + srs_freep(o); + } + + if (true) { + uint8_t data[] = {0x00, 0x01}; + SrsBuffer b((char*)data, sizeof(data)); + SrsAmf0ObjectEOF* o = new SrsAmf0ObjectEOF(); + HELPER_EXPECT_FAILED(o->write(&b)); + srs_freep(o); + } + + if (true) { + uint8_t data[] = {0x00, 0x00}; + SrsBuffer b((char*)data, sizeof(data)); + SrsAmf0ObjectEOF* o = new SrsAmf0ObjectEOF(); + HELPER_EXPECT_FAILED(o->read(&b)); + srs_freep(o); + } + + if (true) { + uint8_t data[] = {0x00, 0x00, 0x01}; + SrsBuffer b((char*)data, sizeof(data)); + SrsAmf0ObjectEOF* o = new SrsAmf0ObjectEOF(); + HELPER_EXPECT_FAILED(o->read(&b)); + srs_freep(o); } } @@ -784,14 +896,14 @@ VOID TEST(ProtocolAMF0Test, InterfacesError) SrsAmf0Object* src = SrsAmf0Any::object(); SrsAutoFree(SrsAmf0Object, src); + src->set("name", SrsAmf0Any::str("srs")); + src->set("name", SrsAmf0Any::number(3.0)); + SrsAmf0Any* cp = src->copy(); SrsAutoFree(SrsAmf0Any, cp); SrsAmf0Object* o = cp->to_object(); - o->set("name", SrsAmf0Any::str("srs")); - o->set("name", SrsAmf0Any::number(3.0)); - SrsAmf0Any* prop; prop = o->ensure_property_number("id"); EXPECT_TRUE(prop == NULL);