Browse Source

Implement deserialization for bool

- Implement deserialization for bool
- Add test
Alexey Edelev 6 years ago
parent
commit
64a2fb0202
2 changed files with 17 additions and 1 deletions
  1. 4 1
      src/lib/protobufobject.h
  2. 13 0
      tests/deserializationtest.cpp

+ 4 - 1
src/lib/protobufobject.h

@@ -399,7 +399,7 @@ public:
             if (wireType == Fixed32) {
                 newPropertyValue = deserializeFixed<fint32>(it);
             } else {
-                newPropertyValue = deserializeVarint<uint>(it);
+                newPropertyValue = deserializeVarint<uint32>(it);
             }
             break;
         case QMetaType::ULongLong:
@@ -457,6 +457,9 @@ public:
             metaProperty.write(this, currentValue);
         }
             return;
+        case QMetaType::Bool:
+            newPropertyValue = deserializeVarint<uint32>(it);
+            break;
         default:
             break;
         }

+ 13 - 0
tests/deserializationtest.cpp

@@ -25,6 +25,7 @@
 
 #include "deserializationtest.h"
 #include "qtprotobuf.h"
+#include "simpleboolmessage.h"
 #include "simplefixedint32message.h"
 #include "simplefixedint64message.h"
 #include "simplesfixedint32message.h"
@@ -519,3 +520,15 @@ TEST_F(DeserializationTest, UIntMessageDeserializeTest)
     test.deserialize(QByteArray::fromHex("08ffffffff0f"));
     ASSERT_EQ(UINT32_MAX, test.testFieldInt());
 }
+
+TEST_F(DeserializationTest, BoolDeserializeTest)
+{
+    SimpleBoolMessage test;
+    test.deserialize(QByteArray::fromHex("0801"));
+    ASSERT_EQ(test.testFieldBool(), true);
+
+    //FIXME: bug#68
+    //test.deserialize(QByteArray::fromHex(""));
+    test.deserialize(QByteArray::fromHex("0800"));
+    ASSERT_EQ(test.testFieldBool(), false);
+}