diff options
author | Johannes Schanda <schanda@itestra.de> | 2013-06-03 10:32:43 +0200 |
---|---|---|
committer | Johannes Schanda <schanda@itestra.de> | 2013-06-03 10:32:43 +0200 |
commit | 425c2d7010b6a69929c4890964d202ccfa78ec4f (patch) | |
tree | ef7b54bc768f13a0533f647fc3bc8ec28c70ffe2 | |
parent | 725eb02b334ad42121b4dabf250924c89048cac1 (diff) | |
download | genivi-common-api-runtime-2.0.2.1.tar.gz |
Some additional tests for variant moves2.0.2.1
-rwxr-xr-x | src/test/VariantTest.cpp | 50 |
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(); |