Some bugs fixed

float support added
float, double, QByteArray, QList<T> to MsgPackStream added
float, double, QByteArrat tests for MsgPackStream added
This commit is contained in:
Roman
2015-05-24 22:31:35 +03:00
parent 1277a0c204
commit 7d5d72e814
8 changed files with 272 additions and 39 deletions

View File

@@ -8,11 +8,85 @@ class MixedTest : public QObject
Q_OBJECT
private Q_SLOTS:
void test_float();
void test_double();
void test_map();
void test_ext();
void test_mixed();
};
void MixedTest::test_float()
{
float f;
QByteArray packed;
packed = MsgPack::pack(0.0f);
f = MsgPack::unpack(packed).toFloat();
QVERIFY(f == 0.0f);
QVERIFY(packed.size() == 5);
packed = MsgPack::pack(-0.0f);
f = MsgPack::unpack(packed).toFloat();
QVERIFY(f == -0.0f);
QVERIFY(packed.size() == 5);
packed = MsgPack::pack(1.0f);
f = MsgPack::unpack(packed).toFloat();
QVERIFY(f == 1.0f);
QVERIFY(packed.size() == 5);
packed = MsgPack::pack(-1.0f);
f = MsgPack::unpack(packed).toFloat();
QVERIFY(f == -1.0f);
QVERIFY(packed.size() == 5);
packed = MsgPack::pack(32767.0f);
f = MsgPack::unpack(packed).toFloat();
QVERIFY(f == 32767.0f);
QVERIFY(packed.size() == 5);
packed = MsgPack::pack(-32767.0f);
f = MsgPack::unpack(packed).toFloat();
QVERIFY(f == -32767.0f);
QVERIFY(packed.size() == 5);
}
void MixedTest::test_double()
{
double d;
QByteArray packed;
packed = MsgPack::pack(0.0);
d = MsgPack::unpack(packed).toDouble();
QVERIFY(d == 0.0);
QVERIFY(packed.size() == 9);
packed = MsgPack::pack(-0.0);
d = MsgPack::unpack(packed).toDouble();
QVERIFY(d == -0.0);
QVERIFY(packed.size() == 9);
packed = MsgPack::pack(1.0);
d = MsgPack::unpack(packed).toDouble();
QVERIFY(d == 1.0);
QVERIFY(packed.size() == 9);
packed = MsgPack::pack(-1.0);
d = MsgPack::unpack(packed).toDouble();
QVERIFY(d == -1.0);
QVERIFY(packed.size() == 9);
packed = MsgPack::pack(32767.0);
d = MsgPack::unpack(packed).toDouble();
QVERIFY(d == 32767.0);
QVERIFY(packed.size() == 9);
packed = MsgPack::pack(-32767.0);
d = MsgPack::unpack(packed).toDouble();
QVERIFY(d == -32767.0);
QVERIFY(packed.size() == 9);
}
void MixedTest::test_map()
{
QVariantMap map;

View File

@@ -271,7 +271,7 @@ void PackTest::test_bin()
QVERIFY(p[2] == 0x00);
QVERIFY(memcmp(p + 3, ba.data(), ba.size()) == 0);
ba = QByteArray(65536, 'r');
ba = QByteArray(65536, 'x');
arr = MsgPack::pack(ba);
QVERIFY(arr.size() == ba.size() + 5);
p = (quint8 *)arr.data();

View File

@@ -14,7 +14,9 @@ private Q_SLOTS:
void test_pack_integers();
void test_unpack_string();
void test_pack_string();
void test_float();
void test_double();
void test_bin();
};
void StreamTest::test_unpack_integers()
@@ -203,7 +205,107 @@ void StreamTest::test_pack_string()
QVERIFY(l[4].isEmpty());
}
void StreamTest::test_float()
{
QByteArray packed;
{
MsgPackStream stream(&packed, QIODevice::WriteOnly);
stream << -0.0f << 0.0f << -1.0f << 1.0f << -32767.0f << 32767.0f;
QVERIFY(packed.size() == 6 * 5);
QVERIFY(stream.status() == MsgPackStream::Ok);
}
MsgPackStream stream(packed);
float f;
stream >> f;
QVERIFY(f == -0.0f);
QVERIFY(stream.status() == MsgPackStream::Ok);
stream >> f;
QVERIFY(f == 0.0f);
QVERIFY(stream.status() == MsgPackStream::Ok);
stream >> f;
QVERIFY(f == -1.0f);
QVERIFY(stream.status() == MsgPackStream::Ok);
stream >> f;
QVERIFY(f == 1.0f);
QVERIFY(stream.status() == MsgPackStream::Ok);
stream >> f;
QVERIFY(f == -32767.0f);
QVERIFY(stream.status() == MsgPackStream::Ok);
stream >> f;
QVERIFY(f == 32767.0f);
QVERIFY(stream.status() == MsgPackStream::Ok);
}
void StreamTest::test_double()
{
QByteArray packed;
{
MsgPackStream stream(&packed, QIODevice::WriteOnly);
stream << -0.0 << 0.0 << -1.0 << 1.0 << -32767.0 << 32767.0;
QVERIFY(packed.size() == 6 * 9);
QVERIFY(stream.status() == MsgPackStream::Ok);
}
MsgPackStream stream(packed);
double d;
stream >> d;
QVERIFY(d == -0.0);
QVERIFY(stream.status() == MsgPackStream::Ok);
stream >> d;
QVERIFY(d == 0.0);
QVERIFY(stream.status() == MsgPackStream::Ok);
stream >> d;
QVERIFY(d == -1.0);
QVERIFY(stream.status() == MsgPackStream::Ok);
stream >> d;
QVERIFY(d == 1.0);
QVERIFY(stream.status() == MsgPackStream::Ok);
stream >> d;
QVERIFY(d == -32767.0);
QVERIFY(stream.status() == MsgPackStream::Ok);
stream >> d;
QVERIFY(d == 32767.0);
QVERIFY(stream.status() == MsgPackStream::Ok);
}
void StreamTest::test_bin()
{
QByteArray ba1("msgpack"), ba2(256, 'r'), ba3(65536, 'x');
QByteArray packed;
{
MsgPackStream stream(&packed, QIODevice::WriteOnly);
stream << ba1 << ba2 << ba3;
}
QVERIFY(packed.size() == 7+2 + 256+3 + 65536+5);
MsgPackStream stream(packed);
QByteArray ba;
stream >> ba;
QVERIFY(ba == ba1);
QVERIFY(stream.status() == MsgPackStream::Ok);
stream >> ba;
QVERIFY(ba == ba2);
QVERIFY(stream.status() == MsgPackStream::Ok);
stream >> ba;
QVERIFY(ba == ba3);
QVERIFY(stream.status() == MsgPackStream::Ok);
}
QTEST_APPLESS_MAIN(StreamTest)
#include "stream_test.moc"