summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schanda <schanda@itestra.de>2013-06-03 10:32:43 +0200
committerJohannes Schanda <schanda@itestra.de>2013-06-03 10:32:43 +0200
commit425c2d7010b6a69929c4890964d202ccfa78ec4f (patch)
treeef7b54bc768f13a0533f647fc3bc8ec28c70ffe2
parent725eb02b334ad42121b4dabf250924c89048cac1 (diff)
downloadgenivi-common-api-runtime-425c2d7010b6a69929c4890964d202ccfa78ec4f.tar.gz
Some additional tests for variant moves2.0.2.1
-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 d00ccde..14290a7 100755
--- a/src/test/VariantTest.cpp
+++ b/src/test/VariantTest.cpp
@@ -147,6 +147,7 @@ TEST_F(VariantTest, VariantTestPack) {
}
typedef Variant<test1, test2, std::string, uint8_t> ComplexTestVariant;
+typedef Variant<ComplexTestVariant, test2, std::string, uint8_t> OuterTestVariant;
struct Container: CommonAPI::SerializableStruct {
ComplexTestVariant a;
@@ -170,6 +171,28 @@ struct Container: CommonAPI::SerializableStruct {
};
+struct ContainerOuter: CommonAPI::SerializableStruct {
+ OuterTestVariant a;
+ std::string b;
+
+ ContainerOuter() = default;
+ ContainerOuter(const OuterTestVariant& 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;
@@ -196,6 +219,33 @@ TEST_F(VariantTest, VariantMoveTest) {
EXPECT_EQ("Construct", rec.get<test1>().b);
}
+TEST_F(VariantTest, VariantInVariantMoveTest) {
+
+ OuterTestVariant emptyTest;
+ ContainerOuter cont(std::move(emptyTest), "Hello");
+
+ test1 assignStruct(1, "Assign");
+ ComplexTestVariant assignTest = assignStruct;
+ OuterTestVariant assignOuter = assignTest;
+ ContainerOuter contAss(std::move(assignOuter), "Hello");
+ EXPECT_EQ("Assign", contAss.a.get<ComplexTestVariant>().get<test1>().b);
+
+ test1 constructStruct(1, "Construct");
+ ComplexTestVariant constructTest(constructStruct);
+ OuterTestVariant constructOuter(constructTest);
+ ContainerOuter contCon(std::move(constructOuter), "Hello");
+ EXPECT_EQ("Construct", contCon.a.get<ComplexTestVariant>().get<test1>().b);
+
+ ComplexTestVariant rec;
+
+ rec = contAss.a.get<ComplexTestVariant>();
+ EXPECT_EQ("Assign", rec.get<test1>().b);
+
+
+ rec = contCon.a.get<ComplexTestVariant>();
+ EXPECT_EQ("Construct", rec.get<test1>().b);
+}
+
int main(int argc, char** argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();