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;
}
Exemple #2
0
void mpack_write_i32(mpack_writer_t* writer, int32_t value) {
    #if MPACK_OPTIMIZE_FOR_SIZE
    mpack_write_i64(writer, value);
    #else
    mpack_writer_track_element(writer);
    if (value >= -32) {
        if (value <= 127) {
            // we encode positive and negative fixints together
            MPACK_WRITE_ENCODED(mpack_encode_fixint, MPACK_TAG_SIZE_FIXINT, (int8_t)value);
        } else if (value <= UINT8_MAX) {
            MPACK_WRITE_ENCODED(mpack_encode_u8, MPACK_TAG_SIZE_U8, (uint8_t)value);
        } else if (value <= UINT16_MAX) {
            MPACK_WRITE_ENCODED(mpack_encode_u16, MPACK_TAG_SIZE_U16, (uint16_t)value);
        } else {
            MPACK_WRITE_ENCODED(mpack_encode_u32, MPACK_TAG_SIZE_U32, (uint32_t)value);
        }
    } else if (value >= INT8_MIN) {
        MPACK_WRITE_ENCODED(mpack_encode_i8, MPACK_TAG_SIZE_I8, (int8_t)value);
    } else if (value >= INT16_MIN) {
        MPACK_WRITE_ENCODED(mpack_encode_i16, MPACK_TAG_SIZE_I16, (int16_t)value);
    } else {
        MPACK_WRITE_ENCODED(mpack_encode_i32, MPACK_TAG_SIZE_I32, value);
    }
    #endif
}
Exemple #3
0
void mpack_write_i8(mpack_writer_t* writer, int8_t value) {
    #if MPACK_OPTIMIZE_FOR_SIZE
    mpack_write_i64(writer, value);
    #else
    mpack_writer_track_element(writer);
    if (value >= -32) {
        // we encode positive and negative fixints together
        MPACK_WRITE_ENCODED(mpack_encode_fixint, MPACK_TAG_SIZE_FIXINT, (int8_t)value);
    } else {
        MPACK_WRITE_ENCODED(mpack_encode_i8, MPACK_TAG_SIZE_I8, (int8_t)value);
    }
    #endif
}