diff --git a/src/ftxui/component/radiobox_test.cpp b/src/ftxui/component/radiobox_test.cpp index 294e2a94ad743a9c4bcde652f423ab631d291b22..dfded22a735fb651b76f29e7265617152ca502d7 100644 --- a/src/ftxui/component/radiobox_test.cpp +++ b/src/ftxui/component/radiobox_test.cpp @@ -160,6 +160,64 @@ TEST(RadioboxTest, NavigationHome) { EXPECT_EQ(selected, 0); } +TEST(RadioboxTest, NavigationPageDown) { + int selected = 0; + std::vector<std::string> entries = {"1", "2", "3", "4", "5", "6"}; + auto radiobox = Radiobox(&entries, &selected) | yframe; + + Screen screen(1, 3); + Render(screen, radiobox->Render()); + + EXPECT_TRUE(radiobox->OnEvent(Event::PageDown)); + EXPECT_EQ(selected, 0); + EXPECT_TRUE(radiobox->OnEvent(Event::Return)); + EXPECT_EQ(selected, 2); + + EXPECT_TRUE(radiobox->OnEvent(Event::PageDown)); + EXPECT_EQ(selected, 2); + EXPECT_TRUE(radiobox->OnEvent(Event::Return)); + EXPECT_EQ(selected, 4); + + EXPECT_TRUE(radiobox->OnEvent(Event::PageDown)); + EXPECT_EQ(selected, 4); + EXPECT_TRUE(radiobox->OnEvent(Event::Return)); + EXPECT_EQ(selected, 5); + + EXPECT_FALSE(radiobox->OnEvent(Event::PageDown)); + EXPECT_EQ(selected, 5); + EXPECT_TRUE(radiobox->OnEvent(Event::Return)); + EXPECT_EQ(selected, 5); +} + +TEST(RadioboxTest, NavigationPageUp) { + int selected = 5; + std::vector<std::string> entries = {"1", "2", "3", "4", "5", "6"}; + auto radiobox = Radiobox(&entries, &selected) | yframe; + + Screen screen(1, 3); + Render(screen, radiobox->Render()); + + EXPECT_TRUE(radiobox->OnEvent(Event::PageUp)); + EXPECT_EQ(selected, 5); + EXPECT_TRUE(radiobox->OnEvent(Event::Return)); + EXPECT_EQ(selected, 3); + + EXPECT_TRUE(radiobox->OnEvent(Event::PageUp)); + EXPECT_EQ(selected, 3); + EXPECT_TRUE(radiobox->OnEvent(Event::Return)); + EXPECT_EQ(selected, 1); + + EXPECT_TRUE(radiobox->OnEvent(Event::PageUp)); + EXPECT_EQ(selected, 1); + EXPECT_TRUE(radiobox->OnEvent(Event::Return)); + EXPECT_EQ(selected, 0); + + EXPECT_FALSE(radiobox->OnEvent(Event::PageUp)); + EXPECT_EQ(selected, 0); + EXPECT_TRUE(radiobox->OnEvent(Event::Return)); + EXPECT_EQ(selected, 0); +} + TEST(RadioboxTest, NavigationEnd) { int selected = 0; std::vector<std::string> entries = {"1", "2", "3"};