From 785bada114baf22154c119a2d801d22b061f097e Mon Sep 17 00:00:00 2001 From: Clement Roblot Date: Tue, 24 Oct 2023 14:27:51 +0700 Subject: [PATCH] Added a test for button --- src/ftxui/component/button_test.cpp | 35 +++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/ftxui/component/button_test.cpp b/src/ftxui/component/button_test.cpp index 664f0062..d186583a 100644 --- a/src/ftxui/component/button_test.cpp +++ b/src/ftxui/component/button_test.cpp @@ -96,6 +96,41 @@ TEST(ButtonTest, Basic) { (void)container->Render(); } +TEST(ButtonTest, DragClick) { + int press_count = 0; + auto btn = Button("btn", [&] { + press_count++; + + }); + + auto container = Container::Horizontal( + { + btn, + }); + + (void)container->Render(); + + Event leftMousePress = Event::Mouse("", {Mouse::Button::Left, Mouse::Motion::Pressed}); + Event leftMouseRelease = Event::Mouse("", {Mouse::Button::Left, Mouse::Motion::Released}); + + EXPECT_EQ(press_count, 0); + btn->OnEvent(leftMousePress); + EXPECT_EQ(press_count, 1); + + // Simulate a drag of the mouse triggering + // multiple press without any Released event + btn->OnEvent(leftMousePress); + btn->OnEvent(leftMousePress); + btn->OnEvent(leftMousePress); + + EXPECT_EQ(press_count, 1); + + btn->OnEvent(leftMouseRelease); + btn->OnEvent(leftMousePress); + + EXPECT_EQ(press_count, 2); +} + TEST(ButtonTest, Animation) { Terminal::SetColorSupport(Terminal::Color::TrueColor); int press_count = 0;