Skip to content
Snippets Groups Projects
Select Git revision
  • 5ea578a19c177e7b6ccb4d4193bf33342fe261b6
  • master default protected
  • 0.19.X
  • discrete
  • 0.18.X
  • ignore_lambda_to_diff_errors
  • 0.17.X
  • authors-update
  • 0.16.X
  • 0.15.X
  • 0.14.X
  • debian
  • 0.13.X
  • 0.12.X
  • 0.11.X
  • 0.10.X
  • 0.9.X
  • 0.6.X
  • 0.7.X
  • 0.8.X
  • 0.19.1
  • 0.19.0
  • 0.19b2
  • 0.19b1
  • 0.19-branching
  • 0.18.2
  • 0.18.1
  • 0.18
  • 0.18rc2
  • 0.18rc1
  • 0.18rc
  • 0.17.1-1
  • 0.17.1
  • debian/0.17.0-4
  • debian/0.17.0-3
  • debian/0.17.0-1
  • 0.17
  • debian/0.17.0_b1+git14-g4e6829c-1
  • debian/0.17.0_b1-1
  • 0.17b1
40 results

make.bat

Blame
  • radiobox_test.cpp 7.77 KiB
    #include <gtest/gtest.h>
    #include <memory>  // for __shared_ptr_access, shared_ptr, allocator
    #include <string>  // for string
    #include <vector>  // for vector
    
    #include "ftxui/component/component.hpp"          // for Radiobox
    #include "ftxui/component/component_base.hpp"     // for ComponentBase
    #include "ftxui/component/component_options.hpp"  // for RadioboxOption
    #include "ftxui/component/event.hpp"  // for Event, Event::Return, Event::ArrowDown, Event::ArrowUp, Event::Tab, Event::TabReverse
    #include "ftxui/util/ref.hpp"         // for Ref
    
    namespace ftxui {
    
    TEST(RadioboxTest, NavigationArrow) {
      int selected = 0;
      std::vector<std::string> entries = {"1", "2", "3"};
      auto radiobox = Radiobox(&entries, &selected);
    
      // Down + Return
      EXPECT_EQ(selected, 0);
      EXPECT_TRUE(radiobox->OnEvent(Event::ArrowDown));
      EXPECT_EQ(selected, 0);
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
      EXPECT_EQ(selected, 1);
      EXPECT_TRUE(radiobox->OnEvent(Event::ArrowDown));
      EXPECT_EQ(selected, 1);
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
      EXPECT_EQ(selected, 2);
      EXPECT_FALSE(radiobox->OnEvent(Event::ArrowDown));
      EXPECT_EQ(selected, 2);
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
      EXPECT_EQ(selected, 2);
    
      // Up + Return
      EXPECT_TRUE(radiobox->OnEvent(Event::ArrowUp));
      EXPECT_EQ(selected, 2);
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
      EXPECT_EQ(selected, 1);
      EXPECT_TRUE(radiobox->OnEvent(Event::ArrowUp));
      EXPECT_EQ(selected, 1);
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
      EXPECT_EQ(selected, 0);
      EXPECT_FALSE(radiobox->OnEvent(Event::ArrowUp));
      EXPECT_EQ(selected, 0);
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
      EXPECT_EQ(selected, 0);
    }
    
    TEST(RadioboxTest, NavigationArrowVim) {
      int selected = 0;
      std::vector<std::string> entries = {"1", "2", "3"};
      auto radiobox = Radiobox(&entries, &selected);
    
      // J + Return
      EXPECT_EQ(selected, 0);
      EXPECT_TRUE(radiobox->OnEvent(Event::Character('j')));
      EXPECT_EQ(selected, 0);
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
      EXPECT_EQ(selected, 1);
      EXPECT_TRUE(radiobox->OnEvent(Event::Character('j')));
      EXPECT_EQ(selected, 1);
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
      EXPECT_EQ(selected, 2);
      EXPECT_FALSE(radiobox->OnEvent(Event::Character('j')));
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
      EXPECT_EQ(selected, 2);
    
      // K + Return
      EXPECT_TRUE(radiobox->OnEvent(Event::Character('k')));
      EXPECT_EQ(selected, 2);
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
      EXPECT_EQ(selected, 1);
      EXPECT_TRUE(radiobox->OnEvent(Event::Character('k')));
      EXPECT_EQ(selected, 1);
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
      EXPECT_EQ(selected, 0);
      EXPECT_FALSE(radiobox->OnEvent(Event::Character('k')));
      EXPECT_EQ(selected, 0);
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
      EXPECT_EQ(selected, 0);
    }
    
    TEST(RadioboxTest, NavigationTab) {
      int selected = 0;
      std::vector<std::string> entries = {"1", "2", "3"};
      auto radiobox = Radiobox(&entries, &selected);
    
      // Tab + Return
      EXPECT_EQ(selected, 0);
      EXPECT_TRUE(radiobox->OnEvent(Event::Tab));
      EXPECT_EQ(selected, 0);
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
      EXPECT_EQ(selected, 1);
      EXPECT_TRUE(radiobox->OnEvent(Event::Tab));
      EXPECT_EQ(selected, 1);
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
      EXPECT_EQ(selected, 2);
      EXPECT_TRUE(radiobox->OnEvent(Event::Tab));
      EXPECT_EQ(selected, 2);
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
      EXPECT_EQ(selected, 0);
      EXPECT_TRUE(radiobox->OnEvent(Event::Tab));
      EXPECT_EQ(selected, 0);
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
      EXPECT_EQ(selected, 1);
      EXPECT_TRUE(radiobox->OnEvent(Event::Tab));
      EXPECT_EQ(selected, 1);
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
      EXPECT_EQ(selected, 2);
    
      // TabReverse + Return
      EXPECT_TRUE(radiobox->OnEvent(Event::TabReverse));
      EXPECT_EQ(selected, 2);
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
      EXPECT_EQ(selected, 1);
      EXPECT_TRUE(radiobox->OnEvent(Event::TabReverse));
      EXPECT_EQ(selected, 1);
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
      EXPECT_EQ(selected, 0);
      EXPECT_TRUE(radiobox->OnEvent(Event::TabReverse));
      EXPECT_EQ(selected, 0);
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
      EXPECT_EQ(selected, 2);
      EXPECT_TRUE(radiobox->OnEvent(Event::TabReverse));
      EXPECT_EQ(selected, 2);
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
      EXPECT_EQ(selected, 1);
      EXPECT_TRUE(radiobox->OnEvent(Event::TabReverse));
      EXPECT_EQ(selected, 1);
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
    }
    
    TEST(RadioboxTest, NavigationHome) {
      int selected = 0;
      std::vector<std::string> entries = {"1", "2", "3"};
      auto radiobox = Radiobox(&entries, &selected);
    
      selected = 0;
      EXPECT_FALSE(radiobox->OnEvent(Event::Home));
      EXPECT_EQ(selected, 0);
    
      selected = 1;
      EXPECT_FALSE(radiobox->OnEvent(Event::Home));
      EXPECT_EQ(selected, 1);
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
      EXPECT_EQ(selected, 0);
      EXPECT_FALSE(radiobox->OnEvent(Event::Home));
      EXPECT_EQ(selected, 0);
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
      EXPECT_EQ(selected, 0);
    
      selected = 2;
      EXPECT_FALSE(radiobox->OnEvent(Event::Home));
      EXPECT_EQ(selected, 2);
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
      EXPECT_EQ(selected, 0);
      EXPECT_FALSE(radiobox->OnEvent(Event::Home));
      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"};
      auto radiobox = Radiobox(&entries, &selected);
    
      selected = 0;
      EXPECT_TRUE(radiobox->OnEvent(Event::End));
      EXPECT_EQ(selected, 0);
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
      EXPECT_EQ(selected, 2);
      EXPECT_FALSE(radiobox->OnEvent(Event::End));
      EXPECT_EQ(selected, 2);
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
      EXPECT_EQ(selected, 2);
    
      selected = 1;
      EXPECT_FALSE(radiobox->OnEvent(Event::End));
      EXPECT_EQ(selected, 1);
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
      EXPECT_EQ(selected, 2);
      EXPECT_FALSE(radiobox->OnEvent(Event::End));
      EXPECT_EQ(selected, 2);
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
      EXPECT_EQ(selected, 2);
    
      selected = 2;
      EXPECT_FALSE(radiobox->OnEvent(Event::End));
      EXPECT_EQ(selected, 2);
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
      EXPECT_EQ(selected, 2);
    }
    
    TEST(RadioboxTest, EventSpace) {
      int selected = 0;
      std::vector<std::string> entries = {"1", "2", "3"};
      auto radiobox = Radiobox(&entries, &selected);
    
      EXPECT_EQ(selected, 0);
      EXPECT_TRUE(radiobox->OnEvent(Event::ArrowDown));
      EXPECT_EQ(selected, 0);
      EXPECT_TRUE(radiobox->OnEvent(Event::Character(' ')));
      EXPECT_EQ(selected, 1);
      EXPECT_TRUE(radiobox->OnEvent(Event::ArrowDown));
      EXPECT_EQ(selected, 1);
      EXPECT_TRUE(radiobox->OnEvent(Event::Character(' ')));
      EXPECT_EQ(selected, 2);
      EXPECT_FALSE(radiobox->OnEvent(Event::ArrowDown));
      EXPECT_EQ(selected, 2);
      EXPECT_TRUE(radiobox->OnEvent(Event::Character(' ')));
      EXPECT_EQ(selected, 2);
    }
    
    TEST(RadioboxTest, RemoveEntries) {
      int focused_entry = 0;
      int selected = 0;
      std::vector<std::string> entries = {"1", "2", "3"};
      RadioboxOption option;
      option.focused_entry = &focused_entry;
      auto radiobox = Radiobox(&entries, &selected, option);
    
      EXPECT_EQ(selected, 0);
      EXPECT_EQ(focused_entry, 0);
    
      EXPECT_TRUE(radiobox->OnEvent(Event::ArrowDown));
      EXPECT_TRUE(radiobox->OnEvent(Event::ArrowDown));
      EXPECT_TRUE(radiobox->OnEvent(Event::Return));
    
      EXPECT_EQ(selected, 2);
      EXPECT_EQ(focused_entry, 2);
    
      entries.resize(2);
    
      EXPECT_EQ(selected, 2);
      EXPECT_EQ(focused_entry, 2);
    
      (void)radiobox->Render();
    
      EXPECT_EQ(selected, 1);
      EXPECT_EQ(focused_entry, 1);
    }
    
    }  // namespace ftxui
    
    // Copyright 2020 Arthur Sonzogni. All rights reserved.
    // Use of this source code is governed by the MIT license that can be found in
    // the LICENSE file.