summaryrefslogtreecommitdiff
path: root/src/test/DBusOutputStreamTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/DBusOutputStreamTest.cpp')
-rw-r--r--src/test/DBusOutputStreamTest.cpp358
1 files changed, 203 insertions, 155 deletions
diff --git a/src/test/DBusOutputStreamTest.cpp b/src/test/DBusOutputStreamTest.cpp
index 1549101..98d8285 100644
--- a/src/test/DBusOutputStreamTest.cpp
+++ b/src/test/DBusOutputStreamTest.cpp
@@ -1,19 +1,23 @@
-/* Copyright (C) 2013 BMW Group
- * Author: Manfred Bathelt (manfred.bathelt@bmw.de)
- * Author: Juergen Gehring (juergen.gehring@bmw.de)
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+// Copyright (C) 2013-2015 Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
#include <dbus/dbus.h>
#include <gtest/gtest.h>
-#include <CommonAPI/DBus/DBusMessage.h>
-#include <CommonAPI/DBus/DBusOutputStream.h>
-#include <CommonAPI/DBus/DBusInputStream.h>
-#include <CommonAPI/SerializableStruct.h>
-#include <CommonAPI/SerializableVariant.h>
+#ifndef COMMONAPI_INTERNAL_COMPILATION
+#define COMMONAPI_INTERNAL_COMPILATION
+#endif
+
+#include <CommonAPI/DBus/DBusAddress.hpp>
+#include <CommonAPI/DBus/DBusMessage.hpp>
+#include <CommonAPI/DBus/DBusOutputStream.hpp>
+#include <CommonAPI/DBus/DBusInputStream.hpp>
+#include <CommonAPI/Struct.hpp>
+#include <CommonAPI/Variant.hpp>
-#include "commonapi/tests/DerivedTypeCollection.h"
+#include "commonapi/tests/DerivedTypeCollection.hpp"
class OutputStreamTest: public ::testing::Test {
protected:
@@ -42,10 +46,10 @@ TEST_F(OutputStreamTest, CanBeConstructed) {
TEST_F(OutputStreamTest, WritesBytes) {
const char signature[] = "yyyyyyyyyy";
- message = CommonAPI::DBus::DBusMessage::createMethodCall(busName, objectPath, interfaceName, methodName, signature);
+ message = CommonAPI::DBus::DBusMessage::createMethodCall(CommonAPI::DBus::DBusAddress(busName, objectPath, interfaceName), methodName, signature);
CommonAPI::DBus::DBusOutputStream outStream(message);
- outStream.reserveMemory(numOfElements);
+ //outStream.reserveMemory(numOfElements);
uint8_t val1 = 0xff;
uint8_t val2 = 0x00;
for (unsigned int i = 0; i < numOfElements; i += 2) {
@@ -70,11 +74,11 @@ TEST_F(OutputStreamTest, WritesBytes) {
}
TEST_F(OutputStreamTest, WritesBools) {
- const char signature[] = "bbbbbbbbbb";
- message = CommonAPI::DBus::DBusMessage::createMethodCall(busName, objectPath, interfaceName, methodName, signature);
+ const char signature[] = "bbbbbbbbbb";
+ message = CommonAPI::DBus::DBusMessage::createMethodCall(CommonAPI::DBus::DBusAddress(busName, objectPath, interfaceName), methodName, signature);
CommonAPI::DBus::DBusOutputStream outStream(message);
- outStream.reserveMemory(numOfElements * 4);
+ //outStream.reserveMemory(numOfElements * 4);
bool val1 = TRUE;
bool val2 = FALSE;
for (unsigned int i = 0; i < numOfElements; i += 2) {
@@ -99,11 +103,11 @@ TEST_F(OutputStreamTest, WritesBools) {
}
TEST_F(OutputStreamTest, WritesUInt16) {
- const char signature[] = "qqqqqqqqqq";
- message = CommonAPI::DBus::DBusMessage::createMethodCall(busName, objectPath, interfaceName, methodName, signature);
+ const char signature[] = "qqqqqqqqqq";
+ message = CommonAPI::DBus::DBusMessage::createMethodCall(CommonAPI::DBus::DBusAddress(busName, objectPath, interfaceName), methodName, signature);
CommonAPI::DBus::DBusOutputStream outStream(message);
- outStream.reserveMemory(numOfElements * 2);
+ //outStream.reserveMemory(numOfElements * 2);
uint16_t val1 = 0x0000;
uint16_t val2 = 0xffff;
for (unsigned int i = 0; i < numOfElements; i += 2) {
@@ -128,11 +132,11 @@ TEST_F(OutputStreamTest, WritesUInt16) {
}
TEST_F(OutputStreamTest, WritesInt16) {
- const char signature[] = "nnnnnnnnnn";
- message = CommonAPI::DBus::DBusMessage::createMethodCall(busName, objectPath, interfaceName, methodName, signature);
+ const char signature[] = "nnnnnnnnnn";
+ message = CommonAPI::DBus::DBusMessage::createMethodCall(CommonAPI::DBus::DBusAddress(busName, objectPath, interfaceName), methodName, signature);
CommonAPI::DBus::DBusOutputStream outStream(message);
- outStream.reserveMemory(numOfElements * 2);
+ //outStream.reserveMemory(numOfElements * 2);
int16_t val1 = 0x7fff;
int16_t val2 = 0xffff;
for (unsigned int i = 0; i < numOfElements; i += 2) {
@@ -157,11 +161,11 @@ TEST_F(OutputStreamTest, WritesInt16) {
}
TEST_F(OutputStreamTest, WritesUInt32) {
- const char signature[] = "uuuuuuuuuu";
- message = CommonAPI::DBus::DBusMessage::createMethodCall(busName, objectPath, interfaceName, methodName, signature);
+ const char signature[] = "uuuuuuuuuu";
+ message = CommonAPI::DBus::DBusMessage::createMethodCall(CommonAPI::DBus::DBusAddress(busName, objectPath, interfaceName), methodName, signature);
CommonAPI::DBus::DBusOutputStream outStream(message);
- outStream.reserveMemory(numOfElements * 4);
+ //outStream.reserveMemory(numOfElements * 4);
uint32_t val1 = 0x00000000;
uint32_t val2 = 0xffffffff;
for (unsigned int i = 0; i < numOfElements; i += 2) {
@@ -186,11 +190,11 @@ TEST_F(OutputStreamTest, WritesUInt32) {
}
TEST_F(OutputStreamTest, WritesInt32) {
- const char signature[] = "iiiiiiiiii";
- message = CommonAPI::DBus::DBusMessage::createMethodCall(busName, objectPath, interfaceName, methodName, signature);
+ const char signature[] = "iiiiiiiiii";
+ message = CommonAPI::DBus::DBusMessage::createMethodCall(CommonAPI::DBus::DBusAddress(busName, objectPath, interfaceName), methodName, signature);
CommonAPI::DBus::DBusOutputStream outStream(message);
- outStream.reserveMemory(numOfElements * 4);
+ //outStream.reserveMemory(numOfElements * 4);
int32_t val1 = 0x7fffffff;
int32_t val2 = 0xffffffff;
for (unsigned int i = 0; i < numOfElements; i += 2) {
@@ -215,11 +219,11 @@ TEST_F(OutputStreamTest, WritesInt32) {
}
TEST_F(OutputStreamTest, WritesUInt64) {
- const char signature[] = "tttttttttt";
- message = CommonAPI::DBus::DBusMessage::createMethodCall(busName, objectPath, interfaceName, methodName, signature);
+ const char signature[] = "tttttttttt";
+ message = CommonAPI::DBus::DBusMessage::createMethodCall(CommonAPI::DBus::DBusAddress(busName, objectPath, interfaceName), methodName, signature);
CommonAPI::DBus::DBusOutputStream outStream(message);
- outStream.reserveMemory(numOfElements * 8);
+ //outStream.reserveMemory(numOfElements * 8);
uint64_t val1 = 0x0000000000000000;
uint64_t val2 = 0xffffffffffffffff;
for (unsigned int i = 0; i < numOfElements; i += 2) {
@@ -244,11 +248,11 @@ TEST_F(OutputStreamTest, WritesUInt64) {
}
TEST_F(OutputStreamTest, WritesInt64) {
- const char signature[] = "xxxxxxxxxx";
- message = CommonAPI::DBus::DBusMessage::createMethodCall(busName, objectPath, interfaceName, methodName, signature);
+ const char signature[] = "xxxxxxxxxx";
+ message = CommonAPI::DBus::DBusMessage::createMethodCall(CommonAPI::DBus::DBusAddress(busName, objectPath, interfaceName), methodName, signature);
CommonAPI::DBus::DBusOutputStream outStream(message);
- outStream.reserveMemory(numOfElements * 8);
+ //outStream.reserveMemory(numOfElements * 8);
int64_t val1 = 0x7fffffffffffffff;
int64_t val2 = 0xffffffffffffffff;
for (unsigned int i = 0; i < numOfElements; i += 2) {
@@ -273,11 +277,11 @@ TEST_F(OutputStreamTest, WritesInt64) {
}
TEST_F(OutputStreamTest, WritesDouble) {
- const char signature[] = "dddddddddd";
- message = CommonAPI::DBus::DBusMessage::createMethodCall(busName, objectPath, interfaceName, methodName, signature);
+ const char signature[] = "dddddddddd";
+ message = CommonAPI::DBus::DBusMessage::createMethodCall(CommonAPI::DBus::DBusAddress(busName, objectPath, interfaceName), methodName, signature);
CommonAPI::DBus::DBusOutputStream outStream(message);
- outStream.reserveMemory(numOfElements * 8);
+ //outStream.reserveMemory(numOfElements * 8);
double val1 = 13.37;
double val2 = 3.414;
for (unsigned int i = 0; i < numOfElements; i += 2) {
@@ -303,8 +307,8 @@ TEST_F(OutputStreamTest, WritesDouble) {
}
TEST_F(OutputStreamTest, WritesStrings) {
- const char signature[] = "sss";
- message = CommonAPI::DBus::DBusMessage::createMethodCall(busName, objectPath, interfaceName, methodName, signature);
+ const char signature[] = "sss";
+ message = CommonAPI::DBus::DBusMessage::createMethodCall(CommonAPI::DBus::DBusAddress(busName, objectPath, interfaceName), methodName, signature);
CommonAPI::DBus::DBusOutputStream outStream(message);
std::string val1 = "hai";
@@ -312,7 +316,7 @@ TEST_F(OutputStreamTest, WritesStrings) {
std::string val3 = "salut";
//sizes of the strings + terminating null-bytes (each 1 byte) + length-fields (each 4 bytes)
- outStream.reserveMemory(val1.size() + val2.size() + val3.size() + 3 + 3 * 4);
+ //outStream.reserveMemory(val1.size() + val2.size() + val3.size() + 3 + 3 * 4);
outStream << val1 << val2 << val3;
outStream.flush();
@@ -338,48 +342,65 @@ TEST_F(OutputStreamTest, WritesStrings) {
namespace bmw {
namespace test {
-struct myStruct: CommonAPI::SerializableStruct {
+struct myStruct : CommonAPI::Struct<uint32_t, int16_t, bool, std::string, double> {
~myStruct();
- uint32_t a;
- int16_t b;
- bool c;
- std::string d;
- double e;
-
- virtual void readFromInputStream(CommonAPI::InputStream& inputMessageStream);
- virtual void writeToOutputStream(CommonAPI::OutputStream& outputMessageStream) const;
+ virtual uint32_t getA() { return std::get<0>(values_); }
+ virtual int16_t getB() { return std::get<1>(values_); }
+ virtual bool getC() { return std::get<2>(values_); }
+ virtual std::string getD() { return std::get<3>(values_); }
+ virtual double getE() { return std::get<4>(values_); }
+
+ virtual void* getAderef() { return &std::get<0>(values_); }
+ virtual void* getBderef() { return &std::get<1>(values_); }
+ virtual void* getCderef() { return &std::get<2>(values_); }
+ virtual void* getDderef() { return &std::get<3>(values_); }
+ virtual void* getEderef() { return &std::get<4>(values_); }
+
+ virtual void setA(uint32_t a) { std::get<0>(values_) = a; }
+ virtual void setB(int16_t b) { std::get<1>(values_) = b; }
+ virtual void setC(bool c) { std::get<2>(values_) = c; }
+ virtual void setD(std::string d) { std::get<3>(values_) = d; }
+ virtual void setE(double e) { std::get<4>(values_) = e; }
+
+ virtual void readFromInputStream(CommonAPI::InputStream<CommonAPI::DBus::DBusInputStream>& inputStream) {
+ inputStream >> std::get<0>(values_) >> std::get<1>(values_) >> std::get<2>(values_) >> std::get<3>(values_) >> std::get<4>(values_);
+ }
+
+ virtual void writeToOutputStream(CommonAPI::OutputStream<CommonAPI::DBus::DBusOutputStream>& outputStream) const {
+ outputStream << std::get<0>(values_) << std::get<1>(values_) << std::get<2>(values_) << std::get<3>(values_) << std::get<4>(values_);
+ }
+
+ static void writeToTypeOutputStream(CommonAPI::TypeOutputStream<CommonAPI::DBus::DBusTypeOutputStream>& typeOutputStream) {
+ //typeOutputStream.writeType();
+ //typeOutputStream.writeType();
+ //typeOutputStream.writeType();
+ //typeOutputStream.writeType();
+ //typeOutputStream.writeType();
+ }
};
myStruct::~myStruct() {
}
-void myStruct::readFromInputStream(CommonAPI::InputStream& inputMessageStream) {
- inputMessageStream >> a >> b >> c >> d >> e;
-}
-
-void myStruct::writeToOutputStream(CommonAPI::OutputStream& outputMessageStream) const {
- outputMessageStream << a << b << c << d << e;
-}
-
} //namespace test
} //namespace bmw
-TEST_F(OutputStreamTest, WritesStructs) {
- const char signature[] = "(unbsd)";
- message = CommonAPI::DBus::DBusMessage::createMethodCall(busName, objectPath, interfaceName, methodName, signature);
+TEST_F(OutputStreamTest, DISABLED_WritesStructs) {
+ const char signature[] = "(unbsd)";
+ message = CommonAPI::DBus::DBusMessage::createMethodCall(CommonAPI::DBus::DBusAddress(busName, objectPath, interfaceName), methodName, signature);
CommonAPI::DBus::DBusOutputStream outStream(message);
bmw::test::myStruct testStruct;
- testStruct.a = 15;
- testStruct.b = -32;
- testStruct.c = FALSE;
- testStruct.d = "Hello all";
- testStruct.e = 3.414;
+ testStruct.setA(15);
+ testStruct.setB(-32);
+ testStruct.setC(FALSE);
+ testStruct.setD("Hello all");
+ testStruct.setE(3.414);
// 40(byte length of struct) = 4(uint32_t) + 2(int16_t) + 2(padding) + 4(bool) + 4(strlength)
// + 9(string) + 1(terminating '\0' of string) + 6(padding) + 8 (double)
- outStream.reserveMemory(40);
+ //outStream.reserveMemory(40);
outStream << testStruct;
outStream.flush();
@@ -389,16 +410,16 @@ TEST_F(OutputStreamTest, WritesStructs) {
bmw::test::myStruct verifyStruct;
inStream >> verifyStruct;
- EXPECT_EQ(testStruct.a, verifyStruct.a);
- EXPECT_EQ(testStruct.b, verifyStruct.b);
- EXPECT_EQ(testStruct.c, verifyStruct.c);
- EXPECT_EQ(testStruct.d, verifyStruct.d);
- EXPECT_EQ(testStruct.e, verifyStruct.e);
+ EXPECT_EQ(testStruct.getA(), verifyStruct.getA());
+ EXPECT_EQ(testStruct.getB(), verifyStruct.getB());
+ EXPECT_EQ(testStruct.getC(), verifyStruct.getC());
+ EXPECT_EQ(testStruct.getD(), verifyStruct.getD());
+ EXPECT_EQ(testStruct.getE(), verifyStruct.getE());
}
TEST_F(OutputStreamTest, WritesArrays) {
- const char signature[] = "ai";
- message = CommonAPI::DBus::DBusMessage::createMethodCall(busName, objectPath, interfaceName, methodName, signature);
+ const char signature[] = "ai";
+ message = CommonAPI::DBus::DBusMessage::createMethodCall(CommonAPI::DBus::DBusAddress(busName, objectPath, interfaceName), methodName, signature);
CommonAPI::DBus::DBusOutputStream outStream(message);
std::vector<int32_t> testVector;
@@ -409,7 +430,7 @@ TEST_F(OutputStreamTest, WritesArrays) {
testVector.push_back(val2);
}
- outStream.reserveMemory(numOfElements * 4 + 4);
+ //outStream.reserveMemory(numOfElements * 4 + 4);
outStream << testVector;
outStream.flush();
@@ -430,8 +451,8 @@ TEST_F(OutputStreamTest, WritesArrays) {
}
TEST_F(OutputStreamTest, WritesArraysOfStrings) {
- const char signature[] = "as";
- message = CommonAPI::DBus::DBusMessage::createMethodCall(busName, objectPath, interfaceName, methodName, signature);
+ const char signature[] = "as";
+ message = CommonAPI::DBus::DBusMessage::createMethodCall(CommonAPI::DBus::DBusAddress(busName, objectPath, interfaceName), methodName, signature);
CommonAPI::DBus::DBusOutputStream outStream(message);
std::vector<std::string> testVector;
@@ -446,7 +467,7 @@ TEST_F(OutputStreamTest, WritesArraysOfStrings) {
// 4*(4(lengthField1) + 4(string1 mit \0-byte) + 4(lengthField2) + 5(string2 mit \0-byte) + 3(paddingTo4)) +
// (4(lengthField1) + 4(string1 mit \0-byte) + 4(lengthField2) + 5(string2 mit \0-byte))
size_t vectorLength = 101;
- outStream.reserveMemory(vectorLength);
+ //outStream.reserveMemory(vectorLength);
outStream << testVector;
outStream.flush();
@@ -467,8 +488,8 @@ TEST_F(OutputStreamTest, WritesArraysOfStrings) {
}
TEST_F(OutputStreamTest, WritesArraysInArrays) {
- const char signature[] = "aai";
- message = CommonAPI::DBus::DBusMessage::createMethodCall(busName, objectPath, interfaceName, methodName, signature);
+ const char signature[] = "aai";
+ message = CommonAPI::DBus::DBusMessage::createMethodCall(CommonAPI::DBus::DBusAddress(busName, objectPath, interfaceName), methodName, signature);
CommonAPI::DBus::DBusOutputStream outStream(message);
std::vector<std::vector<int32_t>> testVector;
@@ -483,7 +504,7 @@ TEST_F(OutputStreamTest, WritesArraysInArrays) {
testVector.push_back(inner);
}
- outStream.reserveMemory(numOfElements * numOfElements * 4 + numOfElements * 4 + 4);
+ //outStream.reserveMemory(numOfElements * numOfElements * 4 + numOfElements * 4 + 4);
outStream << testVector;
outStream.flush();
@@ -508,10 +529,10 @@ TEST_F(OutputStreamTest, WritesArraysInArrays) {
typedef CommonAPI::Variant<int8_t, uint32_t, double, std::string> BasicTypeVariant;
-TEST_F(OutputStreamTest, WritesArraysOfVariants) {
+TEST_F(OutputStreamTest, DISABLED_WritesArraysOfVariants) {
numOfElements = 4;
- const char signature[] = "(yv)(yv)(yv)(yv)";
- message = CommonAPI::DBus::DBusMessage::createMethodCall(busName, objectPath, interfaceName, methodName, signature);
+ const char signature[] = "(yv)(yv)(yv)(yv)";
+ message = CommonAPI::DBus::DBusMessage::createMethodCall(CommonAPI::DBus::DBusAddress(busName, objectPath, interfaceName), methodName, signature);
CommonAPI::DBus::DBusOutputStream outStream(message);
int8_t fromInt8Value = 7;
@@ -535,15 +556,15 @@ TEST_F(OutputStreamTest, WritesArraysOfVariants) {
// + (1(variant type byte) + 3(signature length + content + terminating null) + 8(uint32_t))
// + 4(padding) + (1(variant type byte) + 3(signature length + content + terminating null) + 4(string length field) + 7(string))
// = 55
- outStream.reserveMemory(55);
- outStream << testVector;
+ //outStream.reserveMemory(55);
+ outStream.writeValue(testVector, static_cast<CommonAPI::EmptyDeployment*>(nullptr));
outStream.flush();
EXPECT_EQ(55, message.getBodyLength());
CommonAPI::DBus::DBusInputStream inStream(message);
std::vector<BasicTypeVariant> verifyVector;
- inStream >> verifyVector;
+ inStream.readValue(verifyVector, static_cast<CommonAPI::EmptyDeployment*>(nullptr));
BasicTypeVariant resultInt8Variant = verifyVector[0];
BasicTypeVariant resultUint32Variant = verifyVector[1];
@@ -560,39 +581,50 @@ namespace com {
namespace bmw {
namespace test {
-struct TestStruct: CommonAPI::SerializableStruct {
+struct TestStruct : CommonAPI::Struct<int32_t, double, double, std::string> {
TestStruct();
TestStruct(int32_t v1, double v2, double v3, std::string v4);
~TestStruct();
- int32_t val1;
- double val2;
- double val3;
- std::string val4;
+ virtual int32_t getVal1() { return std::get<0>(values_); }
+ virtual double getVal2() { return std::get<1>(values_); }
+ virtual double getVal3() { return std::get<2>(values_); }
+ virtual std::string getVal4() { return std::get<3>(values_); }
- virtual void readFromInputStream(CommonAPI::InputStream& inputMessageStream);
- virtual void writeToOutputStream(CommonAPI::OutputStream& outputMessageStream) const;
+ virtual void setVal1(int32_t val1) { std::get<0>(values_) = val1; }
+ virtual void setVal2(double val2) { std::get<1>(values_) = val2; }
+ virtual void setVal3(double val3) { std::get<2>(values_) = val3; }
+ virtual void setVal4(std::string val4) { std::get<3>(values_) = val4; }
+
+ virtual void readFromInputStream(CommonAPI::InputStream<CommonAPI::DBus::DBusInputStream>& inputMessageStream);
+ virtual void writeToOutputStream(CommonAPI::OutputStream<CommonAPI::DBus::DBusOutputStream>& outputMessageStream) const;
};
typedef std::vector<TestStruct> TestStructList;
-TestStruct::TestStruct() :
- val1(0), val2(0), val3(0), val4("") {
+TestStruct::TestStruct() {
+ std::get<0>(values_) = 0;
+ std::get<1>(values_) = 0;
+ std::get<2>(values_) = 0;
+ std::get<3>(values_) = "";
}
-TestStruct::TestStruct(int32_t v1, double v2, double v3, std::string v4) :
- val1(v1), val2(v2), val3(v3), val4(v4) {
+TestStruct::TestStruct(int32_t v1, double v2, double v3, std::string v4) {
+ std::get<0>(values_) = v1;
+ std::get<1>(values_) = v2;
+ std::get<2>(values_) = v3;
+ std::get<3>(values_) = v4;
}
TestStruct::~TestStruct() {
}
-void TestStruct::readFromInputStream(CommonAPI::InputStream& inputMessageStream) {
- inputMessageStream >> val1 >> val2 >> val3 >> val4;
+void TestStruct::readFromInputStream(CommonAPI::InputStream<CommonAPI::DBus::DBusInputStream>& inputMessageStream) {
+ inputMessageStream >> std::get<0>(values_) >> std::get<1>(values_) >> std::get<2>(values_) >> std::get<3>(values_);
}
-void TestStruct::writeToOutputStream(CommonAPI::OutputStream& outputMessageStream) const {
- outputMessageStream << val1 << val2 << val3 << val4;
+void TestStruct::writeToOutputStream(CommonAPI::OutputStream<CommonAPI::DBus::DBusOutputStream>& outputMessageStream) const {
+ outputMessageStream << std::get<0>(values_) << std::get<1>(values_) << std::get<2>(values_) << std::get<3>(values_);
}
} // namespace test
@@ -600,15 +632,15 @@ void TestStruct::writeToOutputStream(CommonAPI::OutputStream& outputMessageStrea
} // namespace com
TEST_F(OutputStreamTest, WritesTestStructs) {
- const char signature[] = "(idds)";
- message = CommonAPI::DBus::DBusMessage::createMethodCall(busName, objectPath, interfaceName, methodName, signature);
+ const char signature[] = "(idds)";
+ message = CommonAPI::DBus::DBusMessage::createMethodCall(CommonAPI::DBus::DBusAddress(busName, objectPath, interfaceName), methodName, signature);
CommonAPI::DBus::DBusOutputStream outStream(message);
com::bmw::test::TestStruct testStruct(1, 12.6, 1e40, "XXXXXXXXXXXXXXXXXXXX");
//4(int32_t) + 4(padding) + 8(double) + 8(double) + 4(str_length) + 20(string) + 1(null-termination)
uint32_t expectedSize = 49;
- outStream.reserveMemory(expectedSize);
+ //outStream.reserveMemory(expectedSize);
outStream << testStruct;
outStream.flush();
@@ -618,15 +650,15 @@ TEST_F(OutputStreamTest, WritesTestStructs) {
com::bmw::test::TestStruct verifyStruct;
inStream >> verifyStruct;
- EXPECT_EQ(testStruct.val1, verifyStruct.val1);
- EXPECT_EQ(testStruct.val2, verifyStruct.val2);
- EXPECT_EQ(testStruct.val3, verifyStruct.val3);
- EXPECT_EQ(testStruct.val4, verifyStruct.val4);
+ EXPECT_EQ(testStruct.getVal1(), verifyStruct.getVal1());
+ EXPECT_EQ(testStruct.getVal2(), verifyStruct.getVal2());
+ EXPECT_EQ(testStruct.getVal3(), verifyStruct.getVal3());
+ EXPECT_EQ(testStruct.getVal4(), verifyStruct.getVal4());
}
TEST_F(OutputStreamTest, WritesTestStructLists) {
- const char signature[] = "a(idds)";
- message = CommonAPI::DBus::DBusMessage::createMethodCall(busName, objectPath, interfaceName, methodName, signature);
+ const char signature[] = "a(idds)";
+ message = CommonAPI::DBus::DBusMessage::createMethodCall(CommonAPI::DBus::DBusAddress(busName, objectPath, interfaceName), methodName, signature);
CommonAPI::DBus::DBusOutputStream outStream(message);
com::bmw::test::TestStructList testList;
@@ -637,7 +669,7 @@ TEST_F(OutputStreamTest, WritesTestStructLists) {
//struct size: 49 = 4(int32_t) + 4(padding) + 8(double) + 8(double) + 4(str_length) + 20(string) + 1(null-termination)
//array size: 4(array_length) + 4(struct_padding) + (numElements-1)*(49(struct) + 7(struct_padding)) + 49(struct)
uint32_t expectedSize = 8 + (numOfElements - 1) * (49 + 7) + 49;
- outStream.reserveMemory(expectedSize);
+ //outStream.reserveMemory(expectedSize);
outStream << testList;
outStream.flush();
@@ -654,7 +686,7 @@ namespace com {
namespace bmw {
namespace test {
-struct ArrayStruct: CommonAPI::SerializableStruct {
+struct ArrayStruct : CommonAPI::Struct<std::vector<int64_t>, std::vector<std::string>, std::vector<double>, std::vector<std::string>, std::vector<uint16_t>> {
ArrayStruct();
ArrayStruct(std::vector<int64_t> v1,
std::vector<std::string> v2,
@@ -663,14 +695,26 @@ struct ArrayStruct: CommonAPI::SerializableStruct {
std::vector<uint16_t> v5);
~ArrayStruct();
- std::vector<int64_t> val1;
- std::vector<std::string> val2;
- std::vector<double> val3;
- std::vector<std::string> val4;
- std::vector<uint16_t> val5;
-
- virtual void readFromInputStream(CommonAPI::InputStream& inputMessageStream);
- virtual void writeToOutputStream(CommonAPI::OutputStream& outputMessageStream) const;
+ virtual std::vector<int64_t> getVal1() { return std::get<0>(values_); }
+ virtual std::vector<std::string> getVal2() { return std::get<1>(values_); }
+ virtual std::vector<double> getVal3() { return std::get<2>(values_); }
+ virtual std::vector<std::string> getVal4() { return std::get<3>(values_); }
+ virtual std::vector<uint16_t> getVal5() { return std::get<4>(values_); }
+
+ virtual void setVal1(std::vector<int64_t> val1) { std::get<0>(values_) = val1; }
+ virtual void setVal2(std::vector<std::string> val2) { std::get<1>(values_) = val2; }
+ virtual void setVal3(std::vector<double> val3) { std::get<2>(values_) = val3; }
+ virtual void setVal4(std::vector<std::string> val4) { std::get<3>(values_) = val4; }
+ virtual void setVal5(std::vector<uint16_t> val5) { std::get<4>(values_) = val5; }
+
+ virtual void addToVal1(int64_t val1) { std::get<0>(values_).push_back(val1); }
+ virtual void addToVal2(std::string val2) { std::get<1>(values_).push_back(val2); }
+ virtual void addToVal3(double val3) { std::get<2>(values_).push_back(val3); }
+ virtual void addToVal4(std::string val4) { std::get<3>(values_).push_back(val4); }
+ virtual void addToVal5(uint16_t val5) { std::get<4>(values_).push_back(val5); }
+
+ virtual void readFromInputStream(CommonAPI::InputStream<CommonAPI::DBus::DBusInputStream>& inputMessageStream);
+ virtual void writeToOutputStream(CommonAPI::OutputStream<CommonAPI::DBus::DBusOutputStream>& outputMessageStream) const;
};
typedef std::vector<TestStruct> TestStructList;
@@ -682,19 +726,23 @@ ArrayStruct::ArrayStruct(std::vector<int64_t> v1,
std::vector<std::string> v2,
std::vector<double> v3,
std::vector<std::string> v4,
- std::vector<uint16_t> v5) :
- val1(v1), val2(v2), val3(v3), val4(v4), val5(v5) {
+ std::vector<uint16_t> v5) {
+ std::get<0>(values_) = v1;
+ std::get<1>(values_) = v2;
+ std::get<2>(values_) = v3;
+ std::get<3>(values_) = v4;
+ std::get<4>(values_) = v5;
}
ArrayStruct::~ArrayStruct() {
}
-void ArrayStruct::readFromInputStream(CommonAPI::InputStream& inputMessageStream) {
- inputMessageStream >> val1 >> val2 >> val3 >> val4 >> val5;
+void ArrayStruct::readFromInputStream(CommonAPI::InputStream<CommonAPI::DBus::DBusInputStream>& inputMessageStream) {
+ inputMessageStream >> std::get<0>(values_) >> std::get<1>(values_) >> std::get<2>(values_) >> std::get<3>(values_) >> std::get<4>(values_);
}
-void ArrayStruct::writeToOutputStream(CommonAPI::OutputStream& outputMessageStream) const {
- outputMessageStream << val1 << val2 << val3 << val4 << val5;
+void ArrayStruct::writeToOutputStream(CommonAPI::OutputStream<CommonAPI::DBus::DBusOutputStream>& outputMessageStream) const {
+ outputMessageStream << std::get<0>(values_) << std::get<1>(values_) << std::get<2>(values_) << std::get<3>(values_) << std::get<4>(values_);
}
} // namespace test
@@ -702,17 +750,17 @@ void ArrayStruct::writeToOutputStream(CommonAPI::OutputStream& outputMessageStre
} // namespace com
TEST_F(OutputStreamTest, WritesStructsOfArraysWithSthBefore) {
- const char signature[] = "(axasadasaq)";
- message = CommonAPI::DBus::DBusMessage::createMethodCall(busName, objectPath, interfaceName, methodName, signature);
+ const char signature[] = "(axasadasaq)";
+ message = CommonAPI::DBus::DBusMessage::createMethodCall(CommonAPI::DBus::DBusAddress(busName, objectPath, interfaceName), methodName, signature);
CommonAPI::DBus::DBusOutputStream outStream(message);
com::bmw::test::ArrayStruct arrayStruct;
for (unsigned int i = 0; i < numOfElements; i++) {
- arrayStruct.val1.push_back(i * 50);
- arrayStruct.val2.push_back("Hai");
- arrayStruct.val3.push_back(3.414);
- arrayStruct.val4.push_back("Ciao");
- arrayStruct.val5.push_back(i * 5);
+ arrayStruct.addToVal1(i * 50);
+ arrayStruct.addToVal2("Hai");
+ arrayStruct.addToVal3(3.414);
+ arrayStruct.addToVal4("Ciao");
+ arrayStruct.addToVal5(i * 5);
}
uint16_t frontValue = 0;
@@ -723,7 +771,7 @@ TEST_F(OutputStreamTest, WritesStructsOfArraysWithSthBefore) {
// 4(LengthField) + 10 * (4(LengthField) + 5("Ciao\0") + 3(padding)) --> 124 --> 388
// 4(LengthField) + 10 * 2(uint16) --> 24 --> 412
size_t structLength = 412;
- outStream.reserveMemory(structLength);
+ //outStream.reserveMemory(structLength);
outStream << frontValue << arrayStruct;
outStream.flush();
@@ -744,11 +792,11 @@ TEST_F(OutputStreamTest, WritesStructsOfArraysWithSthBefore) {
uint16_t res5;
for (unsigned int i = 0; i < numOfElements; i++) {
- res1 = verifyStruct.val1[i];
- res2 = verifyStruct.val2[i];
- res3 = verifyStruct.val3[i];
- res4 = verifyStruct.val4[i];
- res5 = verifyStruct.val5[i];
+ res1 = verifyStruct.getVal1()[i];
+ res2 = verifyStruct.getVal2()[i];
+ res3 = verifyStruct.getVal3()[i];
+ res4 = verifyStruct.getVal4()[i];
+ res5 = verifyStruct.getVal5()[i];
EXPECT_EQ(i*50, res1);
EXPECT_EQ(std::string("Hai"), res2);
@@ -759,15 +807,15 @@ TEST_F(OutputStreamTest, WritesStructsOfArraysWithSthBefore) {
}
TEST_F(OutputStreamTest, WritesEnumKeyedMaps) {
- commonapi::tests::DerivedTypeCollection::TestEnumMap testEnumMap;
-
- commonapi::tests::DerivedTypeCollection::TestEnum key1 =
- commonapi::tests::DerivedTypeCollection::TestEnum::E_NOT_USED;
- commonapi::tests::DerivedTypeCollection::TestEnum key2 = commonapi::tests::DerivedTypeCollection::TestEnum::E_OK;
- commonapi::tests::DerivedTypeCollection::TestEnum key3 =
- commonapi::tests::DerivedTypeCollection::TestEnum::E_OUT_OF_RANGE;
- commonapi::tests::DerivedTypeCollection::TestEnum key4 =
- commonapi::tests::DerivedTypeCollection::TestEnum::E_UNKNOWN;
+ ::commonapi::tests::DerivedTypeCollection::TestEnumMap testEnumMap;
+
+ ::commonapi::tests::DerivedTypeCollection::TestEnum key1 =
+ ::commonapi::tests::DerivedTypeCollection::TestEnum::E_NOT_USED;
+ ::commonapi::tests::DerivedTypeCollection::TestEnum key2 = ::commonapi::tests::DerivedTypeCollection::TestEnum::E_OK;
+ ::commonapi::tests::DerivedTypeCollection::TestEnum key3 =
+ ::commonapi::tests::DerivedTypeCollection::TestEnum::E_OUT_OF_RANGE;
+ ::commonapi::tests::DerivedTypeCollection::TestEnum key4 =
+ ::commonapi::tests::DerivedTypeCollection::TestEnum::E_UNKNOWN;
std::string val = "Hai";
testEnumMap.insert( {key1, val});
@@ -775,14 +823,14 @@ TEST_F(OutputStreamTest, WritesEnumKeyedMaps) {
testEnumMap.insert( {key3, val});
testEnumMap.insert( {key4, val});
- const char signature[] = "a{is}";
- message = CommonAPI::DBus::DBusMessage::createMethodCall(busName, objectPath, interfaceName, methodName, signature);
+ const char signature[] = "a{is}";
+ message = CommonAPI::DBus::DBusMessage::createMethodCall(CommonAPI::DBus::DBusAddress(busName, objectPath, interfaceName), methodName, signature);
CommonAPI::DBus::DBusOutputStream outStream(message);
//array length (4) + struct-padding (4) +
// 3 * (sizeof(int) + sizeof(string) + struct-padding) + (sizeof(int) + sizeof(string))
size_t sizeOfBody = 4 + 4 + 3 * (4 + 8 + 4) + (4 + 8);
- outStream.reserveMemory(sizeOfBody);
+ //outStream.reserveMemory(sizeOfBody);
outStream << testEnumMap;
outStream.flush();
@@ -790,7 +838,7 @@ TEST_F(OutputStreamTest, WritesEnumKeyedMaps) {
CommonAPI::DBus::DBusInputStream inStream(message);
- commonapi::tests::DerivedTypeCollection::TestEnumMap verificationMap;
+ ::commonapi::tests::DerivedTypeCollection::TestEnumMap verificationMap;
inStream >> verificationMap;
for (auto it = verificationMap.begin(); it != verificationMap.end(); ++it) {
@@ -798,9 +846,9 @@ TEST_F(OutputStreamTest, WritesEnumKeyedMaps) {
}
}
-#ifndef WIN32
+#ifndef __NO_MAIN__
int main(int argc, char** argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
-#endif \ No newline at end of file
+#endif