Convert ComponentManager into an interface and create a mock
This will help to mock out ComponentManager's functionality for unit
tests in the future.
Change-Id: Ie74c49c6b31b00b0c4d38bf0db715a62a9532bc7
Reviewed-on: https://weave-review.googlesource.com/1785
Reviewed-by: Vitaly Buka <vitalybuka@google.com>
diff --git a/src/component_manager_unittest.cc b/src/component_manager_unittest.cc
index 31949d7..0c34041 100644
--- a/src/component_manager_unittest.cc
+++ b/src/component_manager_unittest.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "src/component_manager.h"
+#include "src/component_manager_impl.h"
#include <map>
@@ -11,6 +11,7 @@
#include "src/bind_lambda.h"
#include "src/commands/schema_constants.h"
+#include "src/mock_component_manager.h"
namespace weave {
@@ -98,13 +99,13 @@
} // anonymous namespace
TEST(ComponentManager, Empty) {
- ComponentManager manager;
+ ComponentManagerImpl manager;
EXPECT_TRUE(manager.GetTraits().empty());
EXPECT_TRUE(manager.GetComponents().empty());
}
TEST(ComponentManager, LoadTraits) {
- ComponentManager manager;
+ ComponentManagerImpl manager;
const char kTraits[] = R"({
"trait1": {
"commands": {
@@ -130,7 +131,7 @@
}
TEST(ComponentManager, LoadTraitsDuplicateIdentical) {
- ComponentManager manager;
+ ComponentManagerImpl manager;
const char kTraits1[] = R"({
"trait1": {
"commands": {
@@ -198,7 +199,7 @@
}
TEST(ComponentManager, LoadTraitsDuplicateOverride) {
- ComponentManager manager;
+ ComponentManagerImpl manager;
const char kTraits1[] = R"({
"trait1": {
"commands": {
@@ -242,7 +243,7 @@
}
TEST(ComponentManager, AddTraitDefChangedCallback) {
- ComponentManager manager;
+ ComponentManagerImpl manager;
int count = 0;
int count2 = 0;
manager.AddTraitDefChangedCallback(base::Bind([&count]() { count++; }));
@@ -299,7 +300,7 @@
}
TEST(ComponentManager, LoadTraitsNotAnObject) {
- ComponentManager manager;
+ ComponentManagerImpl manager;
const char kTraits1[] = R"({"trait1": 0})";
auto json = CreateDictionaryValue(kTraits1);
ErrorPtr error;
@@ -308,7 +309,7 @@
}
TEST(ComponentManager, FindTraitDefinition) {
- ComponentManager manager;
+ ComponentManagerImpl manager;
const char kTraits[] = R"({
"trait1": {
"commands": {
@@ -358,7 +359,7 @@
}
TEST(ComponentManager, FindCommandDefinition) {
- ComponentManager manager;
+ ComponentManagerImpl manager;
const char kTraits[] = R"({
"trait1": {
"commands": {
@@ -411,7 +412,7 @@
}
TEST(ComponentManager, GetMinimalRole) {
- ComponentManager manager;
+ ComponentManagerImpl manager;
const char kTraits[] = R"({
"trait1": {
"commands": {
@@ -446,7 +447,7 @@
}
TEST(ComponentManager, AddComponent) {
- ComponentManager manager;
+ ComponentManagerImpl manager;
const char kTraits[] = R"({"trait1": {}, "trait2": {}, "trait3": {}})";
auto json = CreateDictionaryValue(kTraits);
ASSERT_TRUE(manager.LoadTraits(*json, nullptr));
@@ -467,7 +468,7 @@
}
TEST(ComponentManager, AddSubComponent) {
- ComponentManager manager;
+ ComponentManagerImpl manager;
EXPECT_TRUE(manager.AddComponent("", "comp1", {}, nullptr));
EXPECT_TRUE(manager.AddComponent("comp1", "comp2", {}, nullptr));
EXPECT_TRUE(manager.AddComponent("comp1", "comp3", {}, nullptr));
@@ -494,7 +495,7 @@
}
TEST(ComponentManager, AddComponentArrayItem) {
- ComponentManager manager;
+ ComponentManagerImpl manager;
const char kTraits[] = R"({"foo": {}, "bar": {}})";
auto json = CreateDictionaryValue(kTraits);
ASSERT_TRUE(manager.LoadTraits(*json, nullptr));
@@ -536,7 +537,7 @@
}
TEST(ComponentManager, AddComponentExist) {
- ComponentManager manager;
+ ComponentManagerImpl manager;
EXPECT_TRUE(manager.AddComponent("", "comp1", {}, nullptr));
EXPECT_FALSE(manager.AddComponent("", "comp1", {}, nullptr));
EXPECT_TRUE(manager.AddComponent("comp1", "comp2", {}, nullptr));
@@ -544,12 +545,12 @@
}
TEST(ComponentManager, AddComponentDoesNotExist) {
- ComponentManager manager;
+ ComponentManagerImpl manager;
EXPECT_FALSE(manager.AddComponent("comp1", "comp2", {}, nullptr));
}
TEST(ComponentManager, AddComponentTreeChangedCallback) {
- ComponentManager manager;
+ ComponentManagerImpl manager;
int count = 0;
int count2 = 0;
manager.AddComponentTreeChangedCallback(base::Bind([&count]() { count++; }));
@@ -572,7 +573,7 @@
}
TEST(ComponentManager, FindComponent) {
- ComponentManager manager;
+ ComponentManagerImpl manager;
CreateTestComponentTree(&manager);
const base::DictionaryValue* comp = manager.FindComponent("comp1", nullptr);
@@ -621,7 +622,7 @@
}
TEST(ComponentManager, AddCommand) {
- ComponentManager manager;
+ ComponentManagerImpl manager;
const char kTraits[] = R"({
"trait1": {
"commands": {
@@ -693,7 +694,7 @@
}
TEST(ComponentManager, AddCommandHandler) {
- ComponentManager manager;
+ ComponentManagerImpl manager;
const char kTraits[] = R"({
"trait1": {
"commands": {
@@ -753,7 +754,7 @@
}
TEST(ComponentManager, SetStateProperties) {
- ComponentManager manager;
+ ComponentManagerImpl manager;
CreateTestComponentTree(&manager);
const char kState1[] = R"({"t1": {"p1": 0, "p2": "foo"}})";
@@ -855,7 +856,7 @@
}
TEST(ComponentManager, SetStatePropertiesFromJson) {
- ComponentManager manager;
+ ComponentManagerImpl manager;
CreateTestComponentTree(&manager);
ASSERT_TRUE(manager.SetStatePropertiesFromJson(
@@ -895,7 +896,7 @@
}
TEST(ComponentManager, SetGetStateProperty) {
- ComponentManager manager;
+ ComponentManagerImpl manager;
const char kTraits[] = R"({
"trait1": {
"state": {
@@ -961,7 +962,7 @@
TEST(ComponentManager, AddStateChangedCallback) {
SimpleTestClock clock;
- ComponentManager manager{&clock};
+ ComponentManagerImpl manager{&clock};
const char kTraits[] = R"({
"trait1": {
"state": {
@@ -1002,7 +1003,7 @@
TEST(ComponentManager, ComponentStateUpdates) {
SimpleTestClock clock;
- ComponentManager manager{&clock};
+ ComponentManagerImpl manager{&clock};
const char kTraits[] = R"({
"trait1": {
"state": {
@@ -1096,7 +1097,7 @@
}
TEST(ComponentManager, FindComponentWithTrait) {
- ComponentManager manager;
+ ComponentManagerImpl manager;
const char kTraits[] = R"({
"trait1": {},
"trait2": {},
@@ -1113,4 +1114,9 @@
EXPECT_EQ("", manager.FindComponentWithTrait("trait4"));
}
+TEST(ComponentManager, TestMockComponentManager) {
+ // Check that all the virtual methods are mocked out.
+ MockComponentManager mock;
+}
+
} // namespace weave