static void pack_test(void) { /*************** Test of pack *****************/ cw_pack_context pc; cmp_ctx_t cc; mpack_writer_t mw; int ii, itemSize; for (ii=0; ii<BUF_Length; ii++) buffer[ii] = 0; /*Load pages in memory*/ uint8_t item[40]; BEFORE_PTEST(cw_pack_nil(&pc)); PTEST("CMP",cmp_write_nil(&cc)); PTEST("MPack", mpack_write_nil(&mw)); PTEST("CWPack", cw_pack_nil(&pc)); AFTER_PTEST; BEFORE_PTEST(cw_pack_signed(&pc, -1)); PTEST("CMP",cmp_write_integer(&cc, -1)); PTEST("MPack", mpack_write_i64(&mw, -1)); PTEST("CWPack", cw_pack_signed(&pc, -1)); AFTER_PTEST; BEFORE_PTEST(cw_pack_signed(&pc, 200)); PTEST("CMP",cmp_write_integer(&cc, 200)); PTEST("MPack", mpack_write_i64(&mw, 200)); PTEST("CWPack", cw_pack_signed(&pc, 200)); AFTER_PTEST; BEFORE_PTEST(cw_pack_signed(&pc, 10000)); PTEST("CMP",cmp_write_integer(&cc, 10000)); PTEST("MPack", mpack_write_i64(&mw, 10000)); PTEST("CWPack", cw_pack_signed(&pc, 10000)); AFTER_PTEST; BEFORE_PTEST(cw_pack_signed(&pc, 100000)); PTEST("CMP",cmp_write_integer(&cc, 100000)); PTEST("MPack", mpack_write_i64(&mw, 100000)); PTEST("CWPack", cw_pack_signed(&pc, 100000)); AFTER_PTEST; BEFORE_PTEST(cw_pack_float(&pc, (float)3.14)); PTEST("CMP",cmp_write_float(&cc, (float)3.14)); PTEST("MPack", mpack_write_float(&mw, (float)3.14)); PTEST("CWPack", cw_pack_float(&pc, (float)3.14)); AFTER_PTEST; BEFORE_PTEST(cw_pack_double(&pc, 3.14)); PTEST("CMP",cmp_write_decimal(&cc, 3.14)); PTEST("MPack", mpack_write_double(&mw, 3.14)); PTEST("CWPack", cw_pack_double(&pc, 3.14)); AFTER_PTEST; BEFORE_PTEST(cw_pack_str(&pc, "Claes",5)); PTEST("CMP",cmp_write_str(&cc, "Claes",5)); PTEST("MPack", mpack_write_str(&mw, "Claes",5)); PTEST("CWPack", cw_pack_str(&pc, "Claes",5)); AFTER_PTEST; BEFORE_PTEST(cw_pack_str(&pc, "Longer string than the other one.",33)); PTEST("CMP",cmp_write_str(&cc, "Longer string than the other one.",33)); PTEST("MPack", mpack_write_str(&mw, "Longer string than the other one.",33)); PTEST("CWPack", cw_pack_str(&pc, "Longer string than the other one.",33)); AFTER_PTEST; }
void mpack_write_cstr(mpack_writer_t* writer, const char* cstr) { mpack_assert(cstr != NULL, "cstr pointer is NULL"); size_t length = mpack_strlen(cstr); if (length > UINT32_MAX) mpack_writer_flag_error(writer, mpack_error_invalid); mpack_write_str(writer, cstr, (uint32_t)length); }
void mpack_write_utf8(mpack_writer_t* writer, const char* str, uint32_t length) { mpack_assert(str != NULL, "data for string of length %i is NULL", (int)length); if (!mpack_utf8_check(str, length)) { mpack_writer_flag_error(writer, mpack_error_invalid); return; } mpack_write_str(writer, str, length); }