summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schanda <schanda@itestra.de>2013-05-31 15:31:55 +0200
committerJohannes Schanda <schanda@itestra.de>2013-05-31 15:31:55 +0200
commit725eb02b334ad42121b4dabf250924c89048cac1 (patch)
tree5aed49d53aba574483ea37f585a5018d9ec94167
parentbe635b51f6ad0b978a3aa8f7e1a167495b9f3b70 (diff)
downloadgenivi-common-api-runtime-725eb02b334ad42121b4dabf250924c89048cac1.tar.gz
Better tests for variant moves
-rwxr-xr-xsrc/test/VariantTest.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/test/VariantTest.cpp b/src/test/VariantTest.cpp
index 4d7e5e1..d00ccde 100755
--- a/src/test/VariantTest.cpp
+++ b/src/test/VariantTest.cpp
@@ -146,6 +146,56 @@ TEST_F(VariantTest, VariantTestPack) {
}
+typedef Variant<test1, test2, std::string, uint8_t> ComplexTestVariant;
+
+struct Container: CommonAPI::SerializableStruct {
+ ComplexTestVariant a;
+ std::string b;
+
+ Container() = default;
+ Container(const ComplexTestVariant& a, const std::string& b) :
+ a(a), b(b) {
+ }
+
+ void readFromInputStream(CommonAPI::InputStream& inputStream) {
+
+ }
+
+ void writeToOutputStream(CommonAPI::OutputStream& outputStream) const {
+
+ }
+
+ static inline void writeToTypeOutputStream(CommonAPI::TypeOutputStream& typeOutputStream) {
+ }
+
+};
+
+TEST_F(VariantTest, VariantMoveTest) {
+
+ ComplexTestVariant emptyTest;
+ Container cont(std::move(emptyTest), "Hello");
+
+ test1 assignStruct(1, "Assign");
+ ComplexTestVariant assignTest = assignStruct;
+ Container contAss(std::move(assignTest), "Hello");
+ EXPECT_EQ("Assign", contAss.a.get<test1>().b);
+
+ test1 constructStruct(1, "Construct");
+ ComplexTestVariant constructTest(constructStruct);
+ Container contCon(std::move(constructTest), "Hello");
+ EXPECT_EQ("Construct", contCon.a.get<test1>().b);
+
+ ComplexTestVariant rec;
+
+ rec = cont.a;
+
+ rec = contAss.a;
+ EXPECT_EQ("Assign", rec.get<test1>().b);
+
+ rec = contCon.a;
+ EXPECT_EQ("Construct", rec.get<test1>().b);
+}
+
int main(int argc, char** argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();