Added testing wrong or unset union type 21/33521/2
authorMateusz Malicki <m.malicki2@samsung.com>
Mon, 12 Jan 2015 15:16:47 +0000 (16:16 +0100)
committerJan Olszak <j.olszak@samsung.com>
Tue, 13 Jan 2015 08:43:14 +0000 (00:43 -0800)
[Bug/Feature]   Added testing wrong or unset union type
[Cause]         N/A
[Solution]      Throw ConfigException
[Verification]  Build, install, run ConfigurationSuite tests

Change-Id: I813b52870c4c12a58a9a614821056278a5445a68

tests/unit_tests/config/ut-configuration.cpp

index 8e82905..95fc52a 100644 (file)
@@ -95,6 +95,9 @@ BOOST_AUTO_TEST_CASE(ToStringTest)
 
     std::string out = saveToString(testConfig);
     BOOST_CHECK_EQUAL(out, jsonTestString);
+
+    TestConfig::SubConfigOption unionConfig;
+    BOOST_CHECK_THROW(saveToString(unionConfig), ConfigException);
 }
 
 namespace loadErrorsTest {
@@ -111,6 +114,13 @@ DECLARE_CONFIG(BoolConfig, bool)
 DECLARE_CONFIG(ArrayConfig, std::vector<int>)
 DECLARE_CONFIG(ObjectConfig, IntConfig)
 #undef DECLARE_CONFIG
+struct UnionConfig {
+    CONFIG_DECLARE_UNION
+    (
+            int,
+            bool
+    )
+};
 
 } // namespace loadErrorsTest
 
@@ -177,6 +187,12 @@ BOOST_AUTO_TEST_CASE(LoadErrorsTest)
     BOOST_CHECK_THROW(loadFromString("{\"field\": []}", objectConfig), ConfigException);
     BOOST_CHECK_THROW(loadFromString("{\"field\": {}}", objectConfig), ConfigException);
     BOOST_CHECK_NO_THROW(loadFromString("{\"field\": {\"field\": 1}}", objectConfig));
+
+    UnionConfig unionConfig;
+    BOOST_CHECK_THROW(loadFromString("{\"type\": \"long\", \"value\": 1}", unionConfig), ConfigException);
+    BOOST_CHECK_THROW(loadFromString("{\"type\": \"int\"}", unionConfig), ConfigException);
+    BOOST_CHECK_NO_THROW(loadFromString("{\"type\": \"int\", \"value\": 1}", unionConfig));
+    BOOST_CHECK_NO_THROW(loadFromString("{\"type\": \"bool\", \"value\": true}", unionConfig));
 }
 
 namespace hasVisitableTest {