|
@@ -26,6 +26,8 @@
|
|
|
#include "serializationtest.h"
|
|
|
|
|
|
#include "simpleintmessage.h"
|
|
|
+#include "simplefloatmessage.h"
|
|
|
+#include "simpledoublemessage.h"
|
|
|
|
|
|
using namespace qtprotobuf::tests;
|
|
|
|
|
@@ -166,3 +168,122 @@ TEST_F(SerializationTest, IntMessageSrializeTest)
|
|
|
ASSERT_EQ(result.at(3), '\x04');
|
|
|
}
|
|
|
|
|
|
+TEST_F(SerializationTest, FloatMessageSrializeTest)
|
|
|
+{
|
|
|
+ constexpr int FloatMessageSize = 5;
|
|
|
+ SimpleFloatMessage test;
|
|
|
+ test.setTestFieldFloat(0.1f);
|
|
|
+ QByteArray result = test.serialize();
|
|
|
+ ASSERT_EQ(result.size(), FloatMessageSize);
|
|
|
+ ASSERT_EQ(result.at(0), 0x3d);
|
|
|
+ ASSERT_EQ(result.at(1), '\xcd');
|
|
|
+ ASSERT_EQ(result.at(2), '\xcc');
|
|
|
+ ASSERT_EQ(result.at(3), '\xcc');
|
|
|
+ ASSERT_EQ(result.at(4), '\x3d');
|
|
|
+
|
|
|
+ test.setTestFieldFloat(FLT_MIN);
|
|
|
+ result = test.serialize();
|
|
|
+ ASSERT_EQ(result.size(), FloatMessageSize);
|
|
|
+ ASSERT_EQ(result.at(0), 0x3d);
|
|
|
+ ASSERT_EQ(result.at(1), '\x00');
|
|
|
+ ASSERT_EQ(result.at(2), '\x00');
|
|
|
+ ASSERT_EQ(result.at(3), '\x80');
|
|
|
+ ASSERT_EQ(result.at(4), '\x00');
|
|
|
+
|
|
|
+ test.setTestFieldFloat(FLT_MAX);
|
|
|
+ result = test.serialize();
|
|
|
+ ASSERT_EQ(result.size(), FloatMessageSize);
|
|
|
+ ASSERT_EQ(result.at(0), 0x3d);
|
|
|
+ ASSERT_EQ(result.at(1), '\xff');
|
|
|
+ ASSERT_EQ(result.at(2), '\xff');
|
|
|
+ ASSERT_EQ(result.at(3), '\x7f');
|
|
|
+ ASSERT_EQ(result.at(4), '\x7f');
|
|
|
+
|
|
|
+ test.setTestFieldFloat(-4.2f);
|
|
|
+ result = test.serialize();
|
|
|
+ ASSERT_EQ(result.size(), FloatMessageSize);
|
|
|
+ ASSERT_EQ(result.at(0), 0x3d);
|
|
|
+ ASSERT_EQ(result.at(1), '\x66');
|
|
|
+ ASSERT_EQ(result.at(2), '\x66');
|
|
|
+ ASSERT_EQ(result.at(3), '\x86');
|
|
|
+ ASSERT_EQ(result.at(4), '\xc0');
|
|
|
+
|
|
|
+ test.setTestFieldFloat(-0.0f);
|
|
|
+ result = test.serialize();
|
|
|
+ ASSERT_EQ(result.size(), FloatMessageSize);
|
|
|
+ ASSERT_EQ(result.at(0), 0x3d);
|
|
|
+ ASSERT_EQ(result.at(1), '\x00');
|
|
|
+ ASSERT_EQ(result.at(2), '\x00');
|
|
|
+ ASSERT_EQ(result.at(3), '\x00');
|
|
|
+ ASSERT_EQ(result.at(4), '\x80');
|
|
|
+}
|
|
|
+
|
|
|
+TEST_F(SerializationTest, DoubleMessageSrializeTest)
|
|
|
+{
|
|
|
+ constexpr int DoubleMessageSize = 9;
|
|
|
+ SimpleDoubleMessage test;
|
|
|
+ test.setTestFieldDouble(0.1);
|
|
|
+ QByteArray result = test.serialize();
|
|
|
+ ASSERT_EQ(result.size(), DoubleMessageSize);
|
|
|
+ ASSERT_EQ(result.at(0), 0x41);
|
|
|
+ ASSERT_EQ(result.at(1), '\x9a');
|
|
|
+ ASSERT_EQ(result.at(2), '\x99');
|
|
|
+ ASSERT_EQ(result.at(3), '\x99');
|
|
|
+ ASSERT_EQ(result.at(4), '\x99');
|
|
|
+ ASSERT_EQ(result.at(5), '\x99');
|
|
|
+ ASSERT_EQ(result.at(6), '\x99');
|
|
|
+ ASSERT_EQ(result.at(7), '\xb9');
|
|
|
+ ASSERT_EQ(result.at(8), '\x3f');
|
|
|
+
|
|
|
+ test.setTestFieldDouble(DBL_MIN);
|
|
|
+ result = test.serialize();
|
|
|
+ ASSERT_EQ(result.size(), DoubleMessageSize);
|
|
|
+ ASSERT_EQ(result.at(0), 0x41);
|
|
|
+ ASSERT_EQ(result.at(1), '\x00');
|
|
|
+ ASSERT_EQ(result.at(2), '\x00');
|
|
|
+ ASSERT_EQ(result.at(3), '\x00');
|
|
|
+ ASSERT_EQ(result.at(4), '\x00');
|
|
|
+ ASSERT_EQ(result.at(5), '\x00');
|
|
|
+ ASSERT_EQ(result.at(6), '\x00');
|
|
|
+ ASSERT_EQ(result.at(7), '\x10');
|
|
|
+ ASSERT_EQ(result.at(8), '\x00');
|
|
|
+
|
|
|
+ test.setTestFieldDouble(DBL_MAX);
|
|
|
+ result = test.serialize();
|
|
|
+ ASSERT_EQ(result.size(), DoubleMessageSize);
|
|
|
+ ASSERT_EQ(result.at(0), 0x41);
|
|
|
+ ASSERT_EQ(result.at(1), '\xff');
|
|
|
+ ASSERT_EQ(result.at(2), '\xff');
|
|
|
+ ASSERT_EQ(result.at(3), '\xff');
|
|
|
+ ASSERT_EQ(result.at(4), '\xff');
|
|
|
+ ASSERT_EQ(result.at(5), '\xff');
|
|
|
+ ASSERT_EQ(result.at(6), '\xff');
|
|
|
+ ASSERT_EQ(result.at(7), '\xef');
|
|
|
+ ASSERT_EQ(result.at(8), '\x7f');
|
|
|
+
|
|
|
+ test.setTestFieldDouble(-4.2);
|
|
|
+ result = test.serialize();
|
|
|
+ ASSERT_EQ(result.size(), DoubleMessageSize);
|
|
|
+ ASSERT_EQ(result.at(0), 0x41);
|
|
|
+ ASSERT_EQ(result.at(1), '\xcd');
|
|
|
+ ASSERT_EQ(result.at(2), '\xcc');
|
|
|
+ ASSERT_EQ(result.at(3), '\xcc');
|
|
|
+ ASSERT_EQ(result.at(4), '\xcc');
|
|
|
+ ASSERT_EQ(result.at(5), '\xcc');
|
|
|
+ ASSERT_EQ(result.at(6), '\xcc');
|
|
|
+ ASSERT_EQ(result.at(7), '\x10');
|
|
|
+ ASSERT_EQ(result.at(8), '\xc0');
|
|
|
+
|
|
|
+ test.setTestFieldDouble(0.0);
|
|
|
+ result = test.serialize();
|
|
|
+ ASSERT_EQ(result.size(), DoubleMessageSize);
|
|
|
+ ASSERT_EQ(result.at(0), 0x41);
|
|
|
+ ASSERT_EQ(result.at(1), '\x00');
|
|
|
+ ASSERT_EQ(result.at(2), '\x00');
|
|
|
+ ASSERT_EQ(result.at(3), '\x00');
|
|
|
+ ASSERT_EQ(result.at(4), '\x00');
|
|
|
+ ASSERT_EQ(result.at(5), '\x00');
|
|
|
+ ASSERT_EQ(result.at(6), '\x00');
|
|
|
+ ASSERT_EQ(result.at(7), '\x00');
|
|
|
+ ASSERT_EQ(result.at(8), '\x00');
|
|
|
+}
|