Removed Common

Change-Id: I01ea8f07220375c2ad9bc0092281d4f27c642303
diff --git a/aos/util/global_factory_test.cc b/aos/util/global_factory_test.cc
new file mode 100644
index 0000000..d50e931
--- /dev/null
+++ b/aos/util/global_factory_test.cc
@@ -0,0 +1,67 @@
+#include "aos/util/global_factory.h"
+#include "gtest/gtest.h"
+
+namespace aos {
+
+namespace test_a {
+class BaseType {
+ public:
+  virtual ~BaseType() {}
+
+  virtual std::pair<int, int> Get() = 0;
+};
+
+SETUP_FACTORY(BaseType, int, int);
+
+class BaseTypeNoArgs {
+ public:
+  virtual ~BaseTypeNoArgs() {}
+
+  virtual int Get() = 0;
+};
+
+SETUP_FACTORY(BaseTypeNoArgs);
+
+}  // namespace test_a
+
+namespace test_b {
+
+class SubType : public test_a::BaseType {
+ public:
+  SubType(int t1, int t2) : value_(t1, t2) {}
+  std::pair<int, int> Get() override { return value_; }
+
+ private:
+  std::pair<int, int> value_;
+};
+
+REGISTER_SUBCLASS(test_a::BaseType, SubType);
+
+}  // namespace test_b
+
+namespace {
+
+class SubType1 : public test_a::BaseTypeNoArgs {
+ public:
+  int Get() override { return 1; }
+};
+
+class SubType2 : public test_a::BaseTypeNoArgs {
+ public:
+  int Get() override { return 2; }
+};
+REGISTER_SUBCLASS(test_a::BaseTypeNoArgs, SubType1);
+REGISTER_SUBCLASS(test_a::BaseTypeNoArgs, SubType2);
+
+TEST(GlobalFactoryTest, CheckFactory) {
+  auto val = test_a::BaseTypeGlobalFactory::Get("SubType")(2, 7)->Get();
+  EXPECT_EQ(val.first, 2);
+  EXPECT_EQ(val.second, 7);
+}
+TEST(GlobalFactoryTest, CheckFactoryNoArgs) {
+  EXPECT_EQ(1, test_a::BaseTypeNoArgsGlobalFactory::Get("SubType1")()->Get());
+  EXPECT_EQ(2, test_a::BaseTypeNoArgsGlobalFactory::Get("SubType2")()->Get());
+}
+
+}  // namespace
+}  // namespace aos