正在显示
2 个修改的文件
包含
69 行增加
和
0 行删除
| @@ -1037,6 +1037,7 @@ SrsAmf0Any* SrsAmf0EcmaArray::ensure_property_number(string name) | @@ -1037,6 +1037,7 @@ SrsAmf0Any* SrsAmf0EcmaArray::ensure_property_number(string name) | ||
| 1037 | SrsAmf0StrictArray::SrsAmf0StrictArray() | 1037 | SrsAmf0StrictArray::SrsAmf0StrictArray() |
| 1038 | { | 1038 | { |
| 1039 | marker = RTMP_AMF0_StrictArray; | 1039 | marker = RTMP_AMF0_StrictArray; |
| 1040 | + _count = 0; | ||
| 1040 | } | 1041 | } |
| 1041 | 1042 | ||
| 1042 | SrsAmf0StrictArray::~SrsAmf0StrictArray() | 1043 | SrsAmf0StrictArray::~SrsAmf0StrictArray() |
| @@ -1049,3 +1049,71 @@ VOID TEST(AMF0Test, ApiEcmaArrayProps) | @@ -1049,3 +1049,71 @@ VOID TEST(AMF0Test, ApiEcmaArrayProps) | ||
| 1049 | EXPECT_EQ(2, o->count()); | 1049 | EXPECT_EQ(2, o->count()); |
| 1050 | } | 1050 | } |
| 1051 | } | 1051 | } |
| 1052 | + | ||
| 1053 | +VOID TEST(AMF0Test, ApiStrictArray) | ||
| 1054 | +{ | ||
| 1055 | + SrsStream s; | ||
| 1056 | + | ||
| 1057 | + char buf[1024]; | ||
| 1058 | + memset(buf, 0, sizeof(buf)); | ||
| 1059 | + EXPECT_EQ(ERROR_SUCCESS, s.initialize(buf, sizeof(buf))); | ||
| 1060 | + | ||
| 1061 | + SrsAmf0StrictArray* o = NULL; | ||
| 1062 | + | ||
| 1063 | + // append property | ||
| 1064 | + if (true) { | ||
| 1065 | + o = SrsAmf0Any::strict_array(); | ||
| 1066 | + SrsAutoFree(SrsAmf0StrictArray, o); | ||
| 1067 | + | ||
| 1068 | + o->append(SrsAmf0Any::number(100)); | ||
| 1069 | + EXPECT_DOUBLE_EQ(100, o->at(0)->to_number()); | ||
| 1070 | + | ||
| 1071 | + o->append(SrsAmf0Any::number(101)); | ||
| 1072 | + EXPECT_DOUBLE_EQ(101, o->at(1)->to_number()); | ||
| 1073 | + | ||
| 1074 | + o->append(SrsAmf0Any::str("winlin")); | ||
| 1075 | + EXPECT_STREQ("winlin", o->at(2)->to_str().c_str()); | ||
| 1076 | + } | ||
| 1077 | + | ||
| 1078 | + // count | ||
| 1079 | + if (true) { | ||
| 1080 | + o = SrsAmf0Any::strict_array(); | ||
| 1081 | + SrsAutoFree(SrsAmf0StrictArray, o); | ||
| 1082 | + | ||
| 1083 | + EXPECT_EQ(0, o->count()); | ||
| 1084 | + | ||
| 1085 | + o->append(SrsAmf0Any::boolean()); | ||
| 1086 | + EXPECT_EQ(1, o->count()); | ||
| 1087 | + | ||
| 1088 | + o->append(SrsAmf0Any::boolean()); | ||
| 1089 | + EXPECT_EQ(2, o->count()); | ||
| 1090 | + | ||
| 1091 | + o->clear(); | ||
| 1092 | + EXPECT_EQ(0, o->count()); | ||
| 1093 | + } | ||
| 1094 | + | ||
| 1095 | + // io | ||
| 1096 | + if (true) { | ||
| 1097 | + o = SrsAmf0Any::strict_array(); | ||
| 1098 | + SrsAutoFree(SrsAmf0StrictArray, o); | ||
| 1099 | + | ||
| 1100 | + s.reset(); | ||
| 1101 | + EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); | ||
| 1102 | + EXPECT_EQ(5, s.pos()); | ||
| 1103 | + | ||
| 1104 | + s.reset(); | ||
| 1105 | + EXPECT_EQ(0x0a, s.read_1bytes()); | ||
| 1106 | + EXPECT_EQ(0x00, s.read_4bytes()); | ||
| 1107 | + } | ||
| 1108 | + | ||
| 1109 | + if (true) { | ||
| 1110 | + o = SrsAmf0Any::strict_array(); | ||
| 1111 | + SrsAutoFree(SrsAmf0StrictArray, o); | ||
| 1112 | + | ||
| 1113 | + o->append(SrsAmf0Any::number(0)); | ||
| 1114 | + | ||
| 1115 | + s.reset(); | ||
| 1116 | + EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); | ||
| 1117 | + EXPECT_EQ(5 + SrsAmf0Size::number(), s.pos()); | ||
| 1118 | + } | ||
| 1119 | +} |
-
请 注册 或 登录 后发表评论