Bugfixing vor variants containing arrays
authorPhilip Rauwolf <rauwolf@itestra.de>
Thu, 17 Jan 2013 09:14:52 +0000 (10:14 +0100)
committerPhilip Rauwolf <rauwolf@itestra.de>
Thu, 17 Jan 2013 09:14:52 +0000 (10:14 +0100)
src/CommonAPI/DBus/DBusInputStream.h
src/test/DBusInputStreamTest.cpp
src/test/DBusTestUtils.h

index 407ae56..7e580ee 100644 (file)
@@ -197,7 +197,7 @@ class DBusInputStream: public InputStream {
         uint8_t signatureLength;
         readValue(signatureLength);
         assert(signatureLength < 256);
-        readRawData(signatureLength);
+        readRawData(signatureLength + 1);
     }
 
     char* dataBegin_;
index 83e547c..5d4e25c 100644 (file)
@@ -459,7 +459,7 @@ TEST_F(InputStreamTest, ReadsStringVariants) {
 }
 
 TEST_F(InputStreamTest, ReadsVariantsWithAnArrayOfStrings) {
-    typedef CommonAPI::Variant<int32_t, double, std::vector<std::string>> TestedVariantType;
+    typedef CommonAPI::Variant<int32_t, double, std::vector<std::string>> TestedStringArrayVariantType;
 
     std::string testString1 = "Hello World with CommonAPI Variants!";
     std::string testString2 = "What a beautiful world if there are working Arrays within Variants!!";
@@ -493,13 +493,13 @@ TEST_F(InputStreamTest, ReadsVariantsWithAnArrayOfStrings) {
     CommonAPI::DBus::DBusMessage scopedMessage(libdbusMessage);
     CommonAPI::DBus::DBusInputStream inStream(scopedMessage);
 
-    TestedVariantType referenceVariant(testInnerVector);
+    TestedStringArrayVariantType referenceVariant(testInnerVector);
 
     //Variant: structAlign + type-index(1) + variantSignature(4) + padding(3) + arrayLength(4) + stringLength(4) +
     //         string(37) + padding(3) + stringLength(4) + string(69) = 129
     EXPECT_EQ(129 + 7 + 129, scopedMessage.getBodyLength());
     for (int i = 0; i < numOfElements; i += 1) {
-        TestedVariantType readVariant;
+        TestedStringArrayVariantType readVariant;
         inStream >> readVariant;
 
         bool readSuccess;
index f481988..945813c 100644 (file)
@@ -22,3 +22,7 @@ inline void printLibdbusMessage(DBusMessage* libdbusMessage, uint32_t fromByteIn
     }
     std::cout << std::endl;
 }
+
+inline void printLibdbusMessage(DBusMessage* libdbusMessage) {
+    printLibdbusMessage(libdbusMessage, 0, dbus_message_get_body_length(libdbusMessage));
+}