diff --git a/trunk/src/utest/srs_utest_amf0.cpp b/trunk/src/utest/srs_utest_amf0.cpp index fcf167181..584796f58 100644 --- a/trunk/src/utest/srs_utest_amf0.cpp +++ b/trunk/src/utest/srs_utest_amf0.cpp @@ -599,4 +599,60 @@ VOID TEST(AMF0Test, AnyIO) SrsAutoFree(SrsAmf0Any, po, false); ASSERT_TRUE(po->is_undefined()); } + + // mixed any + if (true) { + s.reset(); + + o = SrsAmf0Any::str("winlin"); + EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); + srs_freep(o); + + o = SrsAmf0Any::number(10); + EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); + srs_freep(o); + + o = SrsAmf0Any::boolean(true); + EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); + srs_freep(o); + + o = SrsAmf0Any::null(); + EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); + srs_freep(o); + + o = SrsAmf0Any::undefined(); + EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); + srs_freep(o); + + s.reset(); + SrsAmf0Any* po = NULL; + + EXPECT_EQ(ERROR_SUCCESS, srs_amf0_read_any(&s, &po)); + ASSERT_TRUE(NULL != po); + ASSERT_TRUE(po->is_string()); + EXPECT_STREQ("winlin", po->to_str().c_str()); + srs_freep(po); + + EXPECT_EQ(ERROR_SUCCESS, srs_amf0_read_any(&s, &po)); + ASSERT_TRUE(NULL != po); + ASSERT_TRUE(po->is_number()); + EXPECT_DOUBLE_EQ(10, po->to_number()); + srs_freep(po); + + EXPECT_EQ(ERROR_SUCCESS, srs_amf0_read_any(&s, &po)); + ASSERT_TRUE(NULL != po); + ASSERT_TRUE(po->is_boolean()); + EXPECT_TRUE(po->to_boolean()); + srs_freep(po); + + EXPECT_EQ(ERROR_SUCCESS, srs_amf0_read_any(&s, &po)); + ASSERT_TRUE(NULL != po); + ASSERT_TRUE(po->is_null()); + srs_freep(po); + + EXPECT_EQ(ERROR_SUCCESS, srs_amf0_read_any(&s, &po)); + ASSERT_TRUE(NULL != po); + ASSERT_TRUE(po->is_undefined()); + srs_freep(po); + } }