--- /dev/null
+// Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved\r
+// Use of this source code is governed by a apache 2.0 license that can be\r
+// found in the LICENSE file.\r
+#include <gmock/gmock.h>\r
+\r
+#include <iostream>\r
+\r
+#include "mock/package-manager.h"\r
+#define __PKG_MANAGER_H__ // To override original header include\r
+#include "common/package_event_listener.h"\r
+\r
+namespace {\r
+\r
+class PackageEventListenerTest : public ::testing::Test {\r
+ protected:\r
+ void SetUp() override {}\r
+ void TearDown() override {}\r
+};\r
+\r
+static pkgmgr_handler callback_;\r
+static void* callback_data_;\r
+\r
+int __pkgmgr_client_listen_status(pkgmgr_client* pc, pkgmgr_handler cb,\r
+ void *data) {\r
+ callback_ = cb;\r
+ callback_data_ = data;\r
+ return 0;\r
+}\r
+\r
+TEST_F(PackageEventListenerTest, CallbackTest) {\r
+ pkgmgr_client_listen_status_fake.custom_fake = __pkgmgr_client_listen_status;\r
+ capmgr::PackageEventListener listener = capmgr::PackageEventListener();\r
+ listener.SubscribePackageEvent();\r
+ listener.RegisterEventHandler([](const std::string& pkgid,\r
+ capmgr::PackageEventListener::EventType type) {\r
+ ASSERT_THAT(pkgid, testing::Eq("org.tizen.test"));\r
+ ASSERT_THAT(type, capmgr::PackageEventListener::EventType::INSTALL);\r
+ });\r
+\r
+ callback_(0, 0, "tpk", "org.tizen.test", "start", "install", "hello",\r
+ callback_data_);\r
+ callback_(0, 0, "tpk", "org.tizen.test", "end", "ok", "hello",\r
+ callback_data_);\r
+\r
+ ASSERT_EQ(pkgmgr_client_new_fake.call_count, 1);\r
+ ASSERT_EQ(pkgmgr_client_listen_status_fake.call_count, 1);\r
+}\r
+\r
+} // namespace\r