From 0e5b6d8ee9b7cd3acf56b232f54254d5c46e0c3d Mon Sep 17 00:00:00 2001 From: Mateusz Malicki Date: Tue, 17 Feb 2015 15:49:35 +0100 Subject: [PATCH] GVariant visitor test [Bug/Feature] GVariant visitor test [Cause] N/A [Solution] Test convert to and from GVariant [Verification] Build, run tests: vasum-server-unit-tests -t ConfigurationSuite Change-Id: I8e7573bc3d44724b17560bfaa9a040922530ff40 --- tests/unit_tests/config/ut-configuration.cpp | 51 ++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 3 deletions(-) diff --git a/tests/unit_tests/config/ut-configuration.cpp b/tests/unit_tests/config/ut-configuration.cpp index 2e3b487..8049975 100644 --- a/tests/unit_tests/config/ut-configuration.cpp +++ b/tests/unit_tests/config/ut-configuration.cpp @@ -52,7 +52,7 @@ struct Fixture { BOOST_FIXTURE_TEST_SUITE(ConfigurationSuite, Fixture) -BOOST_AUTO_TEST_CASE(FromStringTest) +BOOST_AUTO_TEST_CASE(FromJsonStringTest) { TestConfig testConfig; @@ -96,10 +96,28 @@ BOOST_AUTO_TEST_CASE(FromStringTest) BOOST_CHECK_EQUAL(4, testConfig.subVector[0].intVector[1]); BOOST_CHECK_EQUAL(6, testConfig.subVector[1].intVector[1]); + BOOST_CHECK(testConfig.union1.is()); + BOOST_CHECK_EQUAL(2, testConfig.union1.as()); + + BOOST_CHECK(testConfig.union2.is()); + BOOST_CHECK_EQUAL(54321, testConfig.union2.as().intVal); + BOOST_REQUIRE_EQUAL(1, testConfig.union2.as().intVector.size()); + BOOST_CHECK_EQUAL(1, testConfig.union2.as().intVector[0]); + BOOST_CHECK_EQUAL(234, testConfig.union2.as().subSubObj.intVal); + + BOOST_REQUIRE_EQUAL(2, testConfig.unions.size()); + BOOST_CHECK(testConfig.unions[0].is()); + BOOST_CHECK_EQUAL(2, testConfig.unions[0].as()); + + BOOST_CHECK(testConfig.unions[1].is()); + BOOST_CHECK_EQUAL(54321, testConfig.unions[1].as().intVal); + BOOST_REQUIRE_EQUAL(1, testConfig.unions[1].as().intVector.size()); + BOOST_CHECK_EQUAL(1, testConfig.unions[1].as().intVector[0]); + BOOST_CHECK_EQUAL(234, testConfig.unions[1].as().subSubObj.intVal); } -BOOST_AUTO_TEST_CASE(ToStringTest) +BOOST_AUTO_TEST_CASE(ToJsonStringTest) { TestConfig testConfig; BOOST_REQUIRE_NO_THROW(loadFromJsonString(jsonTestString, testConfig)); @@ -135,7 +153,7 @@ struct UnionConfig { } // namespace loadErrorsTest -BOOST_AUTO_TEST_CASE(LoadErrorsTest) +BOOST_AUTO_TEST_CASE(JsonLoadErrorsTest) { using namespace loadErrorsTest; @@ -351,6 +369,14 @@ BOOST_AUTO_TEST_CASE(PartialConfigTest) partialConfig.intVector = {7}; config::saveToKVStore(DB_PATH, partialConfig, DB_PREFIX); } + + // from gvariant (partial is not supported!) + { + PartialTestConfig partialConfig; + std::unique_ptr v(saveToGVariant(config), + g_variant_unref); + BOOST_CHECK_THROW(loadFromGVariant(v.get(), partialConfig), ConfigException); + } } BOOST_AUTO_TEST_CASE(ConfigUnionTest) @@ -399,4 +425,23 @@ BOOST_AUTO_TEST_CASE(ConfigUnionTest) BOOST_CHECK_EQUAL(out, jsonTestString); } + +BOOST_AUTO_TEST_CASE(GVariantVisitorTest) +{ + TestConfig testConfig; + BOOST_REQUIRE_NO_THROW(loadFromJsonString(jsonTestString, testConfig)); + std::unique_ptr v(saveToGVariant(testConfig), + g_variant_unref); + TestConfig testConfig2; + loadFromGVariant(v.get(), testConfig2); + std::string out = saveToJsonString(testConfig2); + BOOST_CHECK_EQUAL(out, jsonTestString); + + PartialTestConfig partialConfig; + partialConfig.stringVal = testConfig.stringVal; + partialConfig.intVector = testConfig.intVector; + v.reset(saveToGVariant(partialConfig)); + BOOST_CHECK_THROW(loadFromGVariant(v.get(), testConfig), ConfigException); +} + BOOST_AUTO_TEST_SUITE_END() -- 2.7.4