summaryrefslogtreecommitdiff
path: root/tests
diff options
authorAndrea Azzarone <azzaronea@gmail.com>2013-03-15 16:25:29 +0100
committerAndrea Azzarone <azzaronea@gmail.com>2013-03-15 16:25:29 +0100
commit884ef70b78957c5d4d4c405bcdfc669754f2204c (patch)
tree5b62a6526bed96edb4bc05892edac06467a3d85a /tests
parent353e2373dde05519b31151a49a91be615ec0dac4 (diff)
Add more unit test for TooltipManager. Don't reset time on every mouse move.
(bzr r3215.1.4)
Diffstat (limited to 'tests')
-rw-r--r--tests/test_tooltip_manager.cpp79
1 files changed, 59 insertions, 20 deletions
diff --git a/tests/test_tooltip_manager.cpp b/tests/test_tooltip_manager.cpp
index c7f2583ed..5badb4edf 100644
--- a/tests/test_tooltip_manager.cpp
+++ b/tests/test_tooltip_manager.cpp
@@ -15,40 +15,79 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Authored by: Jacob Edwards <j.johan.edwards@gmail.com>
+ * Andrea Azzarone <andrea.azzarone@gmail.com>
*/
-#include <gtest/gtest.h>
+#include <gmock/gmock.h>
using namespace testing;
#include "launcher/TooltipManager.h"
#include "launcher/MockLauncherIcon.h"
+using unity::launcher::MockLauncherIcon;
+using unity::launcher::TooltipManager;
+
#include "test_utils.h"
-namespace unity
-{
-namespace launcher
+namespace
{
-namespace
+bool CheckIsTooltipVisible(nux::ObjectPtr<MockLauncherIcon> const& icon, bool value) {
+ return icon->IsTooltipVisible() == value;
+}
+
+struct TestTooltipManager : public Test {
+ TooltipManager tooltip_manager;
+};
+
+TEST_F(TestTooltipManager, MouseMoved)
{
+ nux::ObjectPtr<MockLauncherIcon> icon1(new MockLauncherIcon());
+ nux::ObjectPtr<MockLauncherIcon> icon2(new MockLauncherIcon());
+
+ tooltip_manager.MouseMoved(icon1);
+ ASSERT_FALSE(icon1->IsTooltipVisible()); // don't skip the timeout!
+ Utils::WaitUntil(std::bind(CheckIsTooltipVisible, icon1, true));
+ Utils::WaitUntil(std::bind(CheckIsTooltipVisible, icon2, false));
+
+ tooltip_manager.MouseMoved(icon2);
+ ASSERT_FALSE(icon1->IsTooltipVisible());
+ ASSERT_TRUE(icon2->IsTooltipVisible());
+
+ tooltip_manager.MouseMoved(nux::ObjectPtr<MockLauncherIcon>());
+ ASSERT_FALSE(icon1->IsTooltipVisible());
+ ASSERT_FALSE(icon2->IsTooltipVisible());
-TEST(TestTooltipManager, TestHideAndShowTooltip)
+ tooltip_manager.MouseMoved(icon1);
+ ASSERT_TRUE(icon1->IsTooltipVisible());
+ ASSERT_FALSE(icon2->IsTooltipVisible());
+}
+
+TEST_F(TestTooltipManager, IconClicked)
{
- // Makes sure that TooltipManager calls icon->ShowTooltip() when the mouse
- // hovers it, and icon->HideTooltip() after the mouse dehovers it.
- TooltipManager tm;
- MockLauncherIcon* icon = new MockLauncherIcon();
-
- tm.SetIcon(AbstractLauncherIcon::Ptr(icon));
- tm.MouseMoved();
- Utils::WaitForTimeoutMSec(1050);
-
- EXPECT_TRUE(icon->IsTooltipVisible());
- tm.SetIcon(AbstractLauncherIcon::Ptr());
- EXPECT_FALSE(icon->IsTooltipVisible());
+ nux::ObjectPtr<MockLauncherIcon> icon(new MockLauncherIcon());
+
+ tooltip_manager.MouseMoved(icon);
+ ASSERT_FALSE(icon->IsTooltipVisible()); // don't skip the timeout!
+ Utils::WaitUntil(std::bind(CheckIsTooltipVisible, icon, true));
+
+ tooltip_manager.IconClicked();
+ ASSERT_FALSE(icon->IsTooltipVisible());
}
+TEST_F(TestTooltipManager, SetHover)
+{
+ nux::ObjectPtr<MockLauncherIcon> icon(new MockLauncherIcon());
+
+ tooltip_manager.MouseMoved(icon);
+ ASSERT_FALSE(icon->IsTooltipVisible()); // don't skip the timeout!
+ Utils::WaitUntil(std::bind(CheckIsTooltipVisible, icon, true));
+
+ tooltip_manager.SetHover(false);
+ ASSERT_FALSE(icon->IsTooltipVisible());
+
+ tooltip_manager.MouseMoved(icon);
+ ASSERT_FALSE(icon->IsTooltipVisible()); // don't skip the timeout!
+ Utils::WaitUntil(std::bind(CheckIsTooltipVisible, icon, true));
}
-} // launcher
-} // unity
+}