winlin

update amf0 strict array test, fix bug of count zero init

@@ -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 +}