#include <msgpack.hpp>
#include <gtest/gtest.h>

template <typename T>
void check_size(size_t size) {
    T v(0);
    msgpack::sbuffer sbuf;
    msgpack::pack(sbuf, v);
    EXPECT_EQ(size, sbuf.size());
}

TEST(fixint, size)
{
    check_size<msgpack::type::fix_int8>(2);
    check_size<msgpack::type::fix_int16>(3);
    check_size<msgpack::type::fix_int32>(5);
    check_size<msgpack::type::fix_int64>(9);

    check_size<msgpack::type::fix_uint8>(2);
    check_size<msgpack::type::fix_uint16>(3);
    check_size<msgpack::type::fix_uint32>(5);
    check_size<msgpack::type::fix_uint64>(9);
}


template <typename T>
void check_convert() {
    T v1(-11);
    msgpack::sbuffer sbuf;
    msgpack::pack(sbuf, v1);

    msgpack::unpacked msg;
    msgpack::unpack(&msg, sbuf.data(), sbuf.size());

    T v2;
    msg.get().convert(v2);

    EXPECT_EQ(v1.get(), v2.get());

    EXPECT_EQ(msg.get(), msgpack::object(T(v1.get())));
}

TEST(fixint, convert)
{
    check_convert<msgpack::type::fix_int8>();
    check_convert<msgpack::type::fix_int16>();
    check_convert<msgpack::type::fix_int32>();
    check_convert<msgpack::type::fix_int64>();

    check_convert<msgpack::type::fix_uint8>();
    check_convert<msgpack::type::fix_uint16>();
    check_convert<msgpack::type::fix_uint32>();
    check_convert<msgpack::type::fix_uint64>();
}
