From a0a1956aecf727b1c1cfc44b17f4a4f77114f186 Mon Sep 17 00:00:00 2001 From: pixraider Date: Fri, 27 Nov 2015 21:52:10 +0300 Subject: [PATCH 1/3] + qmsgpack.pri for static linking to any project --- qmsgpack.pri | 27 +++++++++++++++++++++++++++ src/msgpackcommon.h | 4 +++- 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 qmsgpack.pri diff --git a/qmsgpack.pri b/qmsgpack.pri new file mode 100644 index 0000000..1166d43 --- /dev/null +++ b/qmsgpack.pri @@ -0,0 +1,27 @@ +QT += core location + +INCLUDEPATH += $$PWD/src + +SOURCES += \ + $$PWD/src/msgpack.cpp \ + $$PWD/src/msgpackcommon.cpp \ + $$PWD/src/private/pack_p.cpp \ + $$PWD/src/private/unpack_p.cpp \ + $$PWD/src/private/qt_types_p.cpp \ + $$PWD/src/msgpackstream.cpp \ + $$PWD/src/stream/time.cpp \ + $$PWD/src/stream/geometry.cpp \ + $$PWD/src/stream/location.cpp + +HEADERS += \ + $$PWD/src/msgpack.h \ + $$PWD/src/private/pack_p.h \ + $$PWD/src/private/unpack_p.h \ + $$PWD/src/endianhelper.h \ + $$PWD/src/msgpackcommon.h \ + $$PWD/src/msgpack_export.h \ + $$PWD/src/private/qt_types_p.h \ + $$PWD/src/msgpackstream.h \ + $$PWD/src/stream/location.h \ + $$PWD/src/stream/time.h \ + $$PWD/src/stream/geometry.h diff --git a/src/msgpackcommon.h b/src/msgpackcommon.h index f8109c6..5205c19 100644 --- a/src/msgpackcommon.h +++ b/src/msgpackcommon.h @@ -8,6 +8,8 @@ #include #endif +#include "msgpack_export.h" + #define MSGPACK_MAJOR 0 #define MSGPACK_MINOR 1 #define MSGPACK_VERSION 0 @@ -28,7 +30,7 @@ typedef QVariant (*unpack_user_f)(const QByteArray &data); * @brief version * @return current version */ -QString version(); +MSGPACK_EXPORT QString version(); /** * @brief The FirstByte enum * From Message Pack spec From 17e7b9f6f961fa665b47b6c78d7e3d7d2ef318a4 Mon Sep 17 00:00:00 2001 From: pixraider Date: Sat, 28 Nov 2015 20:39:09 +0300 Subject: [PATCH 2/3] ! MAKE_LIB define for proper resolve Q_DECL_EXPORT in win32 --- qmsgpack.pri | 2 ++ 1 file changed, 2 insertions(+) diff --git a/qmsgpack.pri b/qmsgpack.pri index 1166d43..76039ee 100644 --- a/qmsgpack.pri +++ b/qmsgpack.pri @@ -1,5 +1,7 @@ QT += core location +DEFINES += MSGPACK_MAKE_LIB + INCLUDEPATH += $$PWD/src SOURCES += \ From 5278792441ebe1339d25d8e8c1538e156da185e5 Mon Sep 17 00:00:00 2001 From: pixraider Date: Thu, 21 Apr 2016 20:59:26 +0300 Subject: [PATCH 3/3] Add test for QMap; !BUG pack-unpack some 64-bit integers; --- tests/unpack/unpack.pro | 2 +- tests/unpack/unpack_test.cpp | 51 ++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/tests/unpack/unpack.pro b/tests/unpack/unpack.pro index 4a7e9b8..e25c366 100644 --- a/tests/unpack/unpack.pro +++ b/tests/unpack/unpack.pro @@ -13,7 +13,7 @@ CONFIG += console CONFIG -= app_bundle TEMPLATE = app -LIBS += -lqmsgpack +include($$PWD/../../qmsgpack.pri) INCLUDEPATH += ../../src diff --git a/tests/unpack/unpack_test.cpp b/tests/unpack/unpack_test.cpp index 10e8c48..35cd7a1 100644 --- a/tests/unpack/unpack_test.cpp +++ b/tests/unpack/unpack_test.cpp @@ -15,6 +15,7 @@ private Q_SLOTS: void test_strings(); void test_binary(); void test_array(); + void test_map(); }; @@ -53,6 +54,18 @@ void UnpackTest::test_integers() QVERIFY(l[17].toULongLong() == std::numeric_limits::max()); QVERIFY(l[18].toLongLong() == -2147483649); QVERIFY(l[19].toLongLong() == std::numeric_limits::min()); + + QByteArray pack = MsgPack::pack((qint64)1111111111); + qint64 u = MsgPack::unpack(pack).toLongLong(); + QVERIFY(u == 1111111111); + + pack = MsgPack::pack((qint64)-3333333333); + u = MsgPack::unpack(pack).toLongLong(); + QVERIFY(u == -3333333333); + + pack = MsgPack::pack((qint64)3333333333); + u = MsgPack::unpack(pack).toLongLong(); + QVERIFY(u == 3333333333); } void UnpackTest::test_floats() @@ -140,6 +153,44 @@ void UnpackTest::test_array() QVERIFY(lu[i] == i); } +void UnpackTest::test_map() +{ + QVariantMap m; + QVariantMap unpacked_m; + + qint64 ll = 339625541; + m["ll"] = ll; + + unpacked_m = MsgPack::unpack(MsgPack::pack(m)).toMap(); + qDebug() << m << "<=>" << unpacked_m; + QVERIFY(m == unpacked_m); + + m.clear(); + ll = 3333642741; + m["ll"] = ll; + + QByteArray packArray = MsgPack::pack(m); + unpacked_m = MsgPack::unpack(packArray).toMap(); + qDebug() << m << "<=>" << unpacked_m; + QVERIFY(m == unpacked_m); + + m.clear(); + ll = 33336427413; + m["ll"] = ll; + + unpacked_m = MsgPack::unpack(MsgPack::pack(m)).toMap(); + qDebug() << m << "<=>" << unpacked_m; + QVERIFY(m == unpacked_m); + + m.clear(); + ll = 932838457459459; + m["ll"] = ll; + + unpacked_m = MsgPack::unpack(MsgPack::pack(m)).toMap(); + qDebug() << m << "<=>" << unpacked_m; + QVERIFY(m == unpacked_m); +} + QTEST_APPLESS_MAIN(UnpackTest) #include "unpack_test.moc"