From: hyunho Date: Tue, 4 Jun 2019 04:08:22 +0000 (+0900) Subject: Fix FindById bug X-Git-Tag: submit/tizen/20190627.022129~9 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ef089b83c350deaa13b680fcb2fb1d0d1b2ab2cb;p=platform%2Fcore%2Fapi%2Fnotification.git Fix FindById bug If a group item has a group Item as an child, the child group items's children should be searched to find out item Change-Id: Ie2bb1eea2b9e6651475fc1c22cb6720866d10130 Signed-off-by: hyunho --- diff --git a/notification-ex/group_item.cc b/notification-ex/group_item.cc index 2f620755..72896a0b 100644 --- a/notification-ex/group_item.cc +++ b/notification-ex/group_item.cc @@ -107,9 +107,13 @@ void GroupItem::Deserialize(Bundle b) { } AbstractItem& GroupItem::FindByID(std::string id) { + if (GetId() == id) + return *this; + for (auto& i : impl_->children_list_) { - if (i.get()->GetId() == id) - return *i; + auto& re = i.get()->FindByID(id); + if (re.GetId() == id) + return re; } return FactoryManager::GetInst().GetNullItem(); } diff --git a/unittest/src/test_group_item.cc b/unittest/src/test_group_item.cc index c4fb43f8..2196e7c5 100644 --- a/unittest/src/test_group_item.cc +++ b/unittest/src/test_group_item.cc @@ -75,6 +75,30 @@ TEST_F(GroupItemTest, FindByID) { ASSERT_EQ(btn.GetTitle(), "test2"); } +TEST_F(GroupItemTest, FindByIDGroupItem) { + GroupItem item("GROUP1"); + shared_ptr gr2 = shared_ptr(new GroupItem("GROUP2")); + shared_ptr gr3 = shared_ptr(new GroupItem("GROUP3")); + gr2->AddChild(std::make_shared("btn2", "test2")); + gr2->AddChild(std::make_shared("btn3", "test3")); + gr2->AddChild(std::make_shared("btn4", "test4")); + gr3->AddChild(std::make_shared("btn6", "test6")); + gr2->AddChild(gr3); + + item.AddChild(std::make_shared("btn1", "test1")); + item.AddChild(gr2); + item.AddChild(std::make_shared("btn5", "test5")); + ASSERT_EQ(item.GetChildren().size(), 3); + + AbstractItem& child = item.FindByID("btn3"); + ButtonItem& btn = static_cast(child); + ASSERT_EQ(btn.GetTitle(), "test3"); + + AbstractItem& child2 = item.FindByID("GROUP3"); + GroupItem& ret_gr = static_cast(child2); + ASSERT_EQ(ret_gr.GetChildren().size(), 1); +} + TEST_F(GroupItemTest, FindByIDNullItemReturn) { GroupItem item("GROUP1"); item.AddChild(std::make_shared("btn1", "test1"));