diff options
author | Johannes Schanda <schanda@itestra.de> | 2013-05-31 15:31:55 +0200 |
---|---|---|
committer | Johannes Schanda <schanda@itestra.de> | 2013-05-31 15:31:55 +0200 |
commit | 725eb02b334ad42121b4dabf250924c89048cac1 (patch) | |
tree | 5aed49d53aba574483ea37f585a5018d9ec94167 | |
parent | be635b51f6ad0b978a3aa8f7e1a167495b9f3b70 (diff) | |
download | genivi-common-api-runtime-725eb02b334ad42121b4dabf250924c89048cac1.tar.gz |
Better tests for variant moves
-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 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(); |