void srs_amf0_strict_array_append(srs_amf0_t amf0, srs_amf0_t value) { SrsAmf0Any* any = (SrsAmf0Any*)amf0; srs_assert(any->is_strict_array()); SrsAmf0StrictArray* obj = (SrsAmf0StrictArray*)amf0; any = (SrsAmf0Any*)value; obj->append(any); }
SrsAmf0Any* SrsAmf0StrictArray::copy() { SrsAmf0StrictArray* copy = new SrsAmf0StrictArray(); std::vector<SrsAmf0Any*>::iterator it; for (it = properties.begin(); it != properties.end(); ++it) { SrsAmf0Any* any = *it; copy->append(any->copy()); } copy->_count = _count; return copy; }
VOID TEST(AMF0Test, ApiStrictArray) { SrsStream s; char buf[1024]; memset(buf, 0, sizeof(buf)); EXPECT_EQ(ERROR_SUCCESS, s.initialize(buf, sizeof(buf))); SrsAmf0StrictArray* o = NULL; // append property if (true) { o = SrsAmf0Any::strict_array(); SrsAutoFree(SrsAmf0StrictArray, o); o->append(SrsAmf0Any::number(100)); EXPECT_DOUBLE_EQ(100, o->at(0)->to_number()); o->append(SrsAmf0Any::number(101)); EXPECT_DOUBLE_EQ(101, o->at(1)->to_number()); o->append(SrsAmf0Any::str("winlin")); EXPECT_STREQ("winlin", o->at(2)->to_str().c_str()); } // count if (true) { o = SrsAmf0Any::strict_array(); SrsAutoFree(SrsAmf0StrictArray, o); EXPECT_EQ(0, o->count()); o->append(SrsAmf0Any::boolean()); EXPECT_EQ(1, o->count()); o->append(SrsAmf0Any::boolean()); EXPECT_EQ(2, o->count()); o->clear(); EXPECT_EQ(0, o->count()); } // io if (true) { o = SrsAmf0Any::strict_array(); SrsAutoFree(SrsAmf0StrictArray, o); s.reset(); EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); EXPECT_EQ(5, s.pos()); s.reset(); EXPECT_EQ(0x0a, s.read_1bytes()); EXPECT_EQ(0x00, s.read_4bytes()); } if (true) { o = SrsAmf0Any::strict_array(); SrsAutoFree(SrsAmf0StrictArray, o); o->append(SrsAmf0Any::number(0)); s.reset(); EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); EXPECT_EQ(5 + SrsAmf0Size::number(), s.pos()); } }