added property SupportedOperationTypes

- removed OperationType::single
- for backward compatibility incomming OperationType::single alted to
  produce same output functionality
- added property SupportedOperationTypes to ReportManager interface

Tested:
- In cases where OperationType::single is used same MetricValues are
  produced
- New property is visible on dbus

Change-Id: I838581c954abc0d8401e0ed530ce7e9c8013860b
Signed-off-by: Krzysztof Grobelny <krzysztof.grobelny@intel.com>
diff --git a/tests/src/test_transform.cpp b/tests/src/test_transform.cpp
index 66fa855..3f7c5f9 100644
--- a/tests/src/test_transform.cpp
+++ b/tests/src/test_transform.cpp
@@ -13,7 +13,8 @@
     std::vector<int> input = {1, 2, 3};
     std::vector<std::string> output =
         utils::transform(input, [](int v) { return std::to_string(v); });
-    EXPECT_TRUE(utils::detail::has_member_reserve_v<std::vector<std::string>>);
+    EXPECT_TRUE(utils::detail::has_member_reserve<decltype(input)>);
+    EXPECT_TRUE(utils::detail::has_member_reserve<decltype(output)>);
     ASSERT_THAT(output, ElementsAre("1", "2", "3"));
 }
 
@@ -22,6 +23,18 @@
     std::set<int> input = {1, 2, 3};
     std::set<std::string> output =
         utils::transform(input, [](int v) { return std::to_string(v); });
-    EXPECT_FALSE(utils::detail::has_member_reserve_v<std::set<std::string>>);
+    EXPECT_FALSE(utils::detail::has_member_reserve<decltype(input)>);
+    EXPECT_FALSE(utils::detail::has_member_reserve<decltype(output)>);
+    ASSERT_THAT(output, ElementsAre("1", "2", "3"));
+}
+
+TEST(TestTransform, transformsArrayToVector)
+{
+    std::array<int, 3> input = {1, 2, 3};
+    std::vector<std::string> output =
+        utils::transform<std::vector<std::string>>(
+            input, [](int v) { return std::to_string(v); });
+    EXPECT_FALSE(utils::detail::has_member_reserve<decltype(input)>);
+    EXPECT_TRUE(utils::detail::has_member_reserve<decltype(output)>);
     ASSERT_THAT(output, ElementsAre("1", "2", "3"));
 }