mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-03-21 06:11:18 +01:00
cpp: fixes test/streaming_c.cc #42
This commit is contained in:
parent
8446549ed8
commit
3384dbc92d
@ -7,9 +7,21 @@ TEST(streaming, basic)
|
||||
msgpack_sbuffer* buffer = msgpack_sbuffer_new();
|
||||
|
||||
msgpack_packer* pk = msgpack_packer_new(buffer, msgpack_sbuffer_write);
|
||||
|
||||
// 1, 2, 3, "raw", ["data"], {0.3: 0.4}
|
||||
EXPECT_EQ(0, msgpack_pack_int(pk, 1));
|
||||
EXPECT_EQ(0, msgpack_pack_int(pk, 2));
|
||||
EXPECT_EQ(0, msgpack_pack_int(pk, 3));
|
||||
EXPECT_EQ(0, msgpack_pack_raw(pk, 3));
|
||||
EXPECT_EQ(0, msgpack_pack_raw_body(pk, "raw", 3));
|
||||
EXPECT_EQ(0, msgpack_pack_array(pk, 1));
|
||||
EXPECT_EQ(0, msgpack_pack_raw(pk, 4));
|
||||
EXPECT_EQ(0, msgpack_pack_raw_body(pk, "data", 4));
|
||||
EXPECT_EQ(0, msgpack_pack_map(pk, 1));
|
||||
EXPECT_EQ(0, msgpack_pack_float(pk, 0.4));
|
||||
EXPECT_EQ(0, msgpack_pack_double(pk, 0.8));
|
||||
int max_count = 6;
|
||||
|
||||
msgpack_packer_free(pk);
|
||||
|
||||
const char* input = buffer->data;
|
||||
@ -22,36 +34,65 @@ TEST(streaming, basic)
|
||||
msgpack_unpacked_init(&result);
|
||||
|
||||
int count = 0;
|
||||
while(count < 3) {
|
||||
while(count < max_count) {
|
||||
bool unpacked = false;
|
||||
|
||||
msgpack_unpacker_reserve_buffer(&pac, 32*1024);
|
||||
|
||||
/* read buffer into msgpack_unapcker_buffer(&pac) upto
|
||||
* msgpack_unpacker_buffer_capacity(&pac) bytes. */
|
||||
size_t len = 1;
|
||||
memcpy(msgpack_unpacker_buffer(&pac), input, len);
|
||||
input += len;
|
||||
while(!unpacked) {
|
||||
/* read buffer into msgpack_unapcker_buffer(&pac) upto
|
||||
* msgpack_unpacker_buffer_capacity(&pac) bytes. */
|
||||
memcpy(msgpack_unpacker_buffer(&pac), input, 1);
|
||||
input += 1;
|
||||
|
||||
msgpack_unpacker_buffer_consumed(&pac, len);
|
||||
EXPECT_TRUE(input <= eof);
|
||||
|
||||
while(msgpack_unpacker_next(&pac, &result)) {
|
||||
msgpack_object obj = result.data;
|
||||
switch(count++) {
|
||||
case 0:
|
||||
EXPECT_EQ(MSGPACK_OBJECT_POSITIVE_INTEGER, result.data.type);
|
||||
EXPECT_EQ(1, result.data.via.u64);
|
||||
break;
|
||||
case 1:
|
||||
EXPECT_EQ(MSGPACK_OBJECT_POSITIVE_INTEGER, result.data.type);
|
||||
EXPECT_EQ(2, result.data.via.u64);
|
||||
break;
|
||||
case 2:
|
||||
EXPECT_EQ(MSGPACK_OBJECT_POSITIVE_INTEGER, result.data.type);
|
||||
EXPECT_EQ(3, result.data.via.u64);
|
||||
return;
|
||||
msgpack_unpacker_buffer_consumed(&pac, 1);
|
||||
|
||||
while(msgpack_unpacker_next(&pac, &result)) {
|
||||
unpacked = 1;
|
||||
msgpack_object obj = result.data;
|
||||
msgpack_object e;
|
||||
switch(count++) {
|
||||
case 0:
|
||||
EXPECT_EQ(MSGPACK_OBJECT_POSITIVE_INTEGER, obj.type);
|
||||
EXPECT_EQ(1, obj.via.u64);
|
||||
break;
|
||||
case 1:
|
||||
EXPECT_EQ(MSGPACK_OBJECT_POSITIVE_INTEGER, obj.type);
|
||||
EXPECT_EQ(2, obj.via.u64);
|
||||
break;
|
||||
case 2:
|
||||
EXPECT_EQ(MSGPACK_OBJECT_POSITIVE_INTEGER, obj.type);
|
||||
EXPECT_EQ(3, obj.via.u64);
|
||||
break;
|
||||
case 3:
|
||||
EXPECT_EQ(MSGPACK_OBJECT_RAW, obj.type);
|
||||
EXPECT_EQ(std::string("raw",3), std::string(obj.via.raw.ptr, obj.via.raw.size));
|
||||
break;
|
||||
case 4:
|
||||
EXPECT_EQ(MSGPACK_OBJECT_ARRAY, obj.type);
|
||||
EXPECT_EQ(1, obj.via.array.size);
|
||||
e = obj.via.array.ptr[0];
|
||||
EXPECT_EQ(MSGPACK_OBJECT_RAW, e.type);
|
||||
EXPECT_EQ(std::string("data",4), std::string(e.via.raw.ptr, e.via.raw.size));
|
||||
break;
|
||||
case 5:
|
||||
EXPECT_EQ(MSGPACK_OBJECT_MAP, obj.type);
|
||||
EXPECT_EQ(1, obj.via.map.size);
|
||||
e = obj.via.map.ptr[0].key;
|
||||
EXPECT_EQ(MSGPACK_OBJECT_DOUBLE, e.type);
|
||||
ASSERT_FLOAT_EQ(0.4, (float)e.via.dec);
|
||||
e = obj.via.map.ptr[0].val;
|
||||
EXPECT_EQ(MSGPACK_OBJECT_DOUBLE, e.type);
|
||||
ASSERT_DOUBLE_EQ(0.8, e.via.dec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
EXPECT_TRUE(input < eof);
|
||||
}
|
||||
|
||||
msgpack_unpacker_destroy(&pac);
|
||||
msgpack_unpacked_destroy(&result);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user