From 2cef695216a50dc9d60a0aa04e85dab91b6ea1bd Mon Sep 17 00:00:00 2001 From: ArthurSonzogni Date: Thu, 26 Mar 2020 23:15:52 +0100 Subject: [PATCH] Add RadioboxTest --- CMakeLists.txt | 2 + src/ftxui/component/radiobox_test.cpp | 79 +++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 src/ftxui/component/radiobox_test.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 02bf2c2..4ad42a2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -63,6 +63,7 @@ add_library(component src/ftxui/component/input.cpp src/ftxui/component/menu.cpp src/ftxui/component/radiobox.cpp + src/ftxui/component/radiobox.cpp src/ftxui/component/screen_interactive.cpp src/ftxui/component/toggle.cpp include/ftxui/component/checkbox.hpp @@ -155,6 +156,7 @@ find_package(GTest) if (FTXUI_BUILD_TESTS AND GTEST_FOUND AND THREADS_FOUND) add_executable(tests src/ftxui/component/toggle_test.cpp + src/ftxui/component/radiobox_test.cpp src/ftxui/dom/gauge_test.cpp src/ftxui/dom/hbox_test.cpp src/ftxui/dom/text_test.cpp diff --git a/src/ftxui/component/radiobox_test.cpp b/src/ftxui/component/radiobox_test.cpp new file mode 100644 index 0000000..8632d9b --- /dev/null +++ b/src/ftxui/component/radiobox_test.cpp @@ -0,0 +1,79 @@ +#include "ftxui/component/radiobox.hpp" + +#include "gtest/gtest.h" + +using namespace ftxui; + +TEST(RadioboxTest, Navigation) { + RadioBox radiobox; + radiobox.entries = {L"1", L"2", L"3"}; + + // With arrow key. + EXPECT_EQ(radiobox.focused, 0); + radiobox.OnEvent(Event::ArrowDown); + EXPECT_EQ(radiobox.focused, 1); + radiobox.OnEvent(Event::ArrowDown); + EXPECT_EQ(radiobox.focused, 2); + radiobox.OnEvent(Event::ArrowDown); + EXPECT_EQ(radiobox.focused, 2); + radiobox.OnEvent(Event::ArrowUp); + EXPECT_EQ(radiobox.focused, 1); + radiobox.OnEvent(Event::ArrowUp); + EXPECT_EQ(radiobox.focused, 0); + radiobox.OnEvent(Event::ArrowUp); + EXPECT_EQ(radiobox.focused, 0); + + // With vim like characters. + EXPECT_EQ(radiobox.focused, 0); + radiobox.OnEvent(Event::Character('j')); + EXPECT_EQ(radiobox.focused, 1); + radiobox.OnEvent(Event::Character('j')); + EXPECT_EQ(radiobox.focused, 2); + radiobox.OnEvent(Event::Character('j')); + EXPECT_EQ(radiobox.focused, 2); + radiobox.OnEvent(Event::Character('k')); + EXPECT_EQ(radiobox.focused, 1); + radiobox.OnEvent(Event::Character('k')); + EXPECT_EQ(radiobox.focused, 0); + radiobox.OnEvent(Event::Character('k')); + EXPECT_EQ(radiobox.focused, 0); + + // With more entries + radiobox.entries = {L"1", L"2", L"3"}; + EXPECT_EQ(radiobox.focused, 0); + radiobox.OnEvent(Event::ArrowDown); + EXPECT_EQ(radiobox.focused, 1); + radiobox.OnEvent(Event::ArrowDown); + EXPECT_EQ(radiobox.focused, 2); + radiobox.OnEvent(Event::ArrowDown); + EXPECT_EQ(radiobox.focused, 2); + radiobox.OnEvent(Event::ArrowUp); + EXPECT_EQ(radiobox.focused, 1); + radiobox.OnEvent(Event::ArrowUp); + EXPECT_EQ(radiobox.focused, 0); + radiobox.OnEvent(Event::ArrowUp); + EXPECT_EQ(radiobox.focused, 0); + + // With tab. + EXPECT_EQ(radiobox.focused, 0); + radiobox.OnEvent(Event::Tab); + EXPECT_EQ(radiobox.focused, 1); + radiobox.OnEvent(Event::Tab); + EXPECT_EQ(radiobox.focused, 2); + radiobox.OnEvent(Event::Tab); + EXPECT_EQ(radiobox.focused, 0); + radiobox.OnEvent(Event::Tab); + EXPECT_EQ(radiobox.focused, 1); + radiobox.OnEvent(Event::Tab); + EXPECT_EQ(radiobox.focused, 2); + radiobox.OnEvent(Event::TabReverse); + EXPECT_EQ(radiobox.focused, 1); + radiobox.OnEvent(Event::TabReverse); + EXPECT_EQ(radiobox.focused, 0); + radiobox.OnEvent(Event::TabReverse); + EXPECT_EQ(radiobox.focused, 2); + radiobox.OnEvent(Event::TabReverse); + EXPECT_EQ(radiobox.focused, 1); + radiobox.OnEvent(Event::TabReverse); + +}