00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 #include "test_dynamic_addon.h" 00012 00013 #include <opc/common/addons_core/dynamic_addon_factory.h> 00014 00015 #include <gtest/gtest.h> 00016 00017 00018 #ifndef DYNAMIC_ADDON_PATH 00019 #define DYNAMIC_ADDON_PATH "./libtest_dynamic_addon.so" 00020 #endif 00021 00022 const char* modulePath = DYNAMIC_ADDON_PATH; 00023 00024 TEST(DynamicAddonFactory, CanCreateAddons) 00025 { 00026 Common::AddonFactory::UniquePtr dynamicFactory = Common::CreateDynamicAddonFactory(modulePath); 00027 ASSERT_TRUE(static_cast<bool>(dynamicFactory->CreateAddon())); 00028 } 00029 00030 TEST(DynamicAddonFactory, AddonInterfaceCastsToManagerInterface) 00031 { 00032 Common::AddonFactory::UniquePtr dynamicFactory = Common::CreateDynamicAddonFactory(modulePath); 00033 std::shared_ptr<Common::Addon> addon(dynamicFactory->CreateAddon()); 00034 std::shared_ptr<OpcCoreTests::TestDynamicAddon> testAddon = std::dynamic_pointer_cast<OpcCoreTests::TestDynamicAddon>(addon); 00035 ASSERT_TRUE(static_cast<bool>(testAddon)); 00036 } 00037 00038 TEST(DynamicAddonFactory, CanCallMethodsOfAddon) 00039 { 00040 Common::AddonFactory::UniquePtr dynamicFactory = Common::CreateDynamicAddonFactory(modulePath); 00041 std::shared_ptr<Common::Addon> addon(dynamicFactory->CreateAddon()); 00042 std::shared_ptr<OpcCoreTests::TestDynamicAddon> testAddon = std::dynamic_pointer_cast<OpcCoreTests::TestDynamicAddon>(addon); 00043 ASSERT_EQ(testAddon->GetStringWithHello(), std::string("hello")); 00044 } 00045