mirror of
https://github.com/ArthurSonzogni/FTXUI.git
synced 2024-11-22 18:59:59 +08:00
Add code coverage support. (#378)
This commit is contained in:
parent
b2896aba49
commit
764c24ef40
97
.github/workflows/build.yaml
vendored
97
.github/workflows/build.yaml
vendored
@ -19,54 +19,93 @@ jobs:
|
|||||||
include:
|
include:
|
||||||
- name: Linux GCC
|
- name: Linux GCC
|
||||||
os: ubuntu-latest
|
os: ubuntu-latest
|
||||||
compiler: g++-9
|
compiler: gcc
|
||||||
test: true
|
gcov_executable: gcov
|
||||||
|
|
||||||
- name: Linux Clang
|
- name: Linux Clang
|
||||||
os: ubuntu-latest
|
os: ubuntu-latest
|
||||||
compiler: clang++
|
compiler: llvm
|
||||||
test: true
|
gcov_executable: "llvm-cov gcov"
|
||||||
|
|
||||||
- name: MacOS clang
|
- name: MacOS clang
|
||||||
os: macos-latest
|
os: macos-latest
|
||||||
compiler: clang++
|
compiler: llvm
|
||||||
test: true
|
gcov_executable: "llvm-cov gcov"
|
||||||
|
|
||||||
- name: Windows MSVC
|
- name: Windows MSVC
|
||||||
os: windows-latest
|
os: windows-latest
|
||||||
compiler: cl
|
compiler: cl
|
||||||
test: false
|
|
||||||
|
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: "Checkout repository"
|
- name: "Checkout repository"
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: "Enable MSVC command prompt"
|
- name: "Setup Cpp"
|
||||||
if: matrix.os == 'windows-latest'
|
uses: aminya/setup-cpp@v1
|
||||||
uses: ilammy/msvc-dev-cmd@v1
|
with:
|
||||||
|
compiler: ${{ matrix.compiler }}
|
||||||
|
vcvarsall: ${{ contains(matrix.os, 'windows' )}}
|
||||||
|
cmake: true
|
||||||
|
ninja: true
|
||||||
|
clangtidy: true
|
||||||
|
cppcheck: false
|
||||||
|
gcovr: true
|
||||||
|
opencppcoverage: true
|
||||||
|
|
||||||
- name: "Install cmake"
|
# make sure coverage is only enabled for Debug builds, since it sets -O0
|
||||||
uses: lukka/get-cmake@latest
|
# to make sure coverage has meaningful results
|
||||||
|
- name: "Configure CMake"
|
||||||
- name: "Build debug mode"
|
|
||||||
run: >
|
run: >
|
||||||
mkdir build;
|
cmake -S .
|
||||||
cd build;
|
-B ./build
|
||||||
cmake ..
|
-DCMAKE_BUILD_TYPE:STRING=Debug
|
||||||
-DCMAKE_CXX_COMPILER=${{ matrix.compiler }}
|
-DFTXUI_ENABLE_COVERAGE:BOOL=ON
|
||||||
-DFTXUI_BUILD_DOCS=OFF
|
-DFTXUI_BUILD_DOCS:BOOL=OFF
|
||||||
-DFTXUI_BUILD_EXAMPLES=ON
|
-DFTXUI_BUILD_EXAMPLES:BOOL=ON
|
||||||
-DFTXUI_BUILD_TESTS=ON
|
-DFTXUI_BUILD_TESTS:BOOL=ON
|
||||||
-DFTXUI_BUILD_TESTS_FUZZER=OFF
|
-DFTXUI_BUILD_TESTS_FUZZER:BOOL=OFF
|
||||||
-DFTXUI_ENABLE_INSTALL=ON ;
|
-DFTXUI_ENABLE_INSTALL:BOOL=ON ;
|
||||||
cmake --build . --config Debug;
|
|
||||||
|
|
||||||
- name: "Run tests"
|
- name: "Build"
|
||||||
if: matrix.test
|
|
||||||
run: >
|
run: >
|
||||||
cd build;
|
cmake
|
||||||
./tests
|
--build ./build
|
||||||
|
|
||||||
|
- name: Unix - Test and coverage
|
||||||
|
if: runner.os != 'Windows'
|
||||||
|
working-directory: ./build
|
||||||
|
run: >
|
||||||
|
ctest -C Debug;
|
||||||
|
gcovr
|
||||||
|
-j ${{env.nproc}}
|
||||||
|
--delete
|
||||||
|
--root ../
|
||||||
|
--exclude "../examples"
|
||||||
|
--exclude ".*google.*"
|
||||||
|
--print-summary
|
||||||
|
--xml-pretty
|
||||||
|
--xml
|
||||||
|
coverage.xml
|
||||||
|
.
|
||||||
|
--gcov-executable '${{ matrix.gcov_executable }}';
|
||||||
|
|
||||||
|
- name: Windows - Test and coverage
|
||||||
|
if: runner.os == 'Windows'
|
||||||
|
working-directory: ./build
|
||||||
|
run: >
|
||||||
|
OpenCppCoverage.exe
|
||||||
|
--export_type cobertura:coverage.xml
|
||||||
|
--cover_children
|
||||||
|
--
|
||||||
|
ctest -C Debug
|
||||||
|
|
||||||
|
- name: Publish to codecov
|
||||||
|
uses: codecov/codecov-action@v2
|
||||||
|
with:
|
||||||
|
flags: ${{ runner.os }}
|
||||||
|
name: ${{ runner.os }}-coverage
|
||||||
|
files: ./build/coverage.xml
|
||||||
|
|
||||||
# Create a release on new v* tags
|
# Create a release on new v* tags
|
||||||
release:
|
release:
|
||||||
@ -117,7 +156,7 @@ jobs:
|
|||||||
-DFTXUI_BUILD_TESTS=OFF
|
-DFTXUI_BUILD_TESTS=OFF
|
||||||
-DFTXUI_BUILD_TESTS_FUZZER=OFF
|
-DFTXUI_BUILD_TESTS_FUZZER=OFF
|
||||||
-DFTXUI_ENABLE_INSTALL=ON;
|
-DFTXUI_ENABLE_INSTALL=ON;
|
||||||
cmake --build . --config Release --target package;
|
cmake --build . --target package;
|
||||||
- uses: shogo82148/actions-upload-release-asset@v1
|
- uses: shogo82148/actions-upload-release-asset@v1
|
||||||
with:
|
with:
|
||||||
upload_url: ${{ needs.release.outputs.upload_url }}
|
upload_url: ${{ needs.release.outputs.upload_url }}
|
||||||
|
@ -11,6 +11,7 @@ option(FTXUI_BUILD_TESTS "Set to ON to build tests" OFF)
|
|||||||
option(FTXUI_BUILD_TESTS_FUZZER "Set to ON to enable fuzzing" OFF)
|
option(FTXUI_BUILD_TESTS_FUZZER "Set to ON to enable fuzzing" OFF)
|
||||||
option(FTXUI_ENABLE_INSTALL "Generate the install target" ON)
|
option(FTXUI_ENABLE_INSTALL "Generate the install target" ON)
|
||||||
option(FTXUI_CLANG_TIDY "Execute clang-tidy" OFF)
|
option(FTXUI_CLANG_TIDY "Execute clang-tidy" OFF)
|
||||||
|
option(FTXUI_ENABLE_COVERAGE "Execute code coverage" OFF)
|
||||||
|
|
||||||
set(FTXUI_MICROSOFT_TERMINAL_FALLBACK_HELP_TEXT "On windows, assume the \
|
set(FTXUI_MICROSOFT_TERMINAL_FALLBACK_HELP_TEXT "On windows, assume the \
|
||||||
terminal used will be one of Microsoft and use a set of reasonnable fallback \
|
terminal used will be one of Microsoft and use a set of reasonnable fallback \
|
||||||
@ -139,6 +140,11 @@ ftxui_set_options(screen)
|
|||||||
ftxui_set_options(dom)
|
ftxui_set_options(dom)
|
||||||
ftxui_set_options(component)
|
ftxui_set_options(component)
|
||||||
|
|
||||||
|
include(cmake/ftxui_coverage.cmake)
|
||||||
|
ftxui_check_coverage(screen)
|
||||||
|
ftxui_check_coverage(dom)
|
||||||
|
ftxui_check_coverage(component)
|
||||||
|
|
||||||
if (FTXUI_BUILD_TESTS AND ${CMAKE_VERSION} VERSION_GREATER "3.11.4")
|
if (FTXUI_BUILD_TESTS AND ${CMAKE_VERSION} VERSION_GREATER "3.11.4")
|
||||||
include(cmake/ftxui_test.cmake)
|
include(cmake/ftxui_test.cmake)
|
||||||
endif()
|
endif()
|
||||||
|
@ -2,12 +2,19 @@ if (NOT WIN32)
|
|||||||
FetchContent_Declare(googlebenchmark
|
FetchContent_Declare(googlebenchmark
|
||||||
GIT_REPOSITORY "https://github.com/google/benchmark"
|
GIT_REPOSITORY "https://github.com/google/benchmark"
|
||||||
GIT_TAG 62937f91b5c763a8e119d0c20c67b87bde8eff1c
|
GIT_TAG 62937f91b5c763a8e119d0c20c67b87bde8eff1c
|
||||||
|
GIT_PROGRESS TRUE
|
||||||
)
|
)
|
||||||
|
|
||||||
FetchContent_GetProperties(googlebenchmark)
|
FetchContent_GetProperties(googlebenchmark)
|
||||||
|
set (BENCHMARK_ENABLE_GTEST_TESTS OFF CACHE INTERNAL "")
|
||||||
|
set (BENCHMARK_ENABLE_TESTING OFF CACHE INTERNAL "")
|
||||||
if(NOT googlebenchmark_POPULATED)
|
if(NOT googlebenchmark_POPULATED)
|
||||||
FetchContent_Populate(googlebenchmark)
|
FetchContent_Populate(googlebenchmark)
|
||||||
add_subdirectory(${googlebenchmark_SOURCE_DIR} ${googlebenchmark_BINARY_DIR} EXCLUDE_FROM_ALL)
|
add_subdirectory(
|
||||||
|
${googlebenchmark_SOURCE_DIR}
|
||||||
|
${googlebenchmark_BINARY_DIR}
|
||||||
|
EXCLUDE_FROM_ALL
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_executable(ftxui_benchmark
|
add_executable(ftxui_benchmark
|
||||||
|
8
cmake/ftxui_coverage.cmake
Normal file
8
cmake/ftxui_coverage.cmake
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
function(ftxui_check_coverage library)
|
||||||
|
if (FTXUI_ENABLE_COVERAGE)
|
||||||
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES ".*Clang")
|
||||||
|
target_compile_options(${library} INTERFACE --coverage -O0 -g)
|
||||||
|
target_link_libraries(${library} INTERFACE --coverage)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endfunction()
|
@ -1,17 +1,25 @@
|
|||||||
enable_testing()
|
enable_testing()
|
||||||
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
|
|
||||||
|
|
||||||
option(FETCHCONTENT_UPDATES_DISCONNECTED TRUE)
|
option(FETCHCONTENT_UPDATES_DISCONNECTED TRUE)
|
||||||
|
option(FETCHCONTENT_QUIET FALSE)
|
||||||
include(FetchContent)
|
include(FetchContent)
|
||||||
|
|
||||||
FetchContent_Declare(googletest
|
FetchContent_Declare(googletest
|
||||||
GIT_REPOSITORY "https://github.com/google/googletest"
|
GIT_REPOSITORY "https://github.com/google/googletest"
|
||||||
GIT_TAG 23ef29555ef4789f555f1ba8c51b4c52975f0907
|
GIT_TAG 23ef29555ef4789f555f1ba8c51b4c52975f0907
|
||||||
|
GIT_PROGRESS TRUE
|
||||||
)
|
)
|
||||||
FetchContent_GetProperties(googletest)
|
FetchContent_GetProperties(googletest)
|
||||||
if(NOT googletest_POPULATED)
|
if(NOT googletest_POPULATED)
|
||||||
FetchContent_Populate(googletest)
|
FetchContent_Populate(googletest)
|
||||||
add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR} EXCLUDE_FROM_ALL)
|
set(BUILD_GMOCK OFF CACHE INTERNAL "")
|
||||||
|
set(INSTALL_GTEST OFF CACHE INTERNAL "")
|
||||||
|
set(gtest_force_shared_crt ON CACHE INTERNAL "")
|
||||||
|
add_subdirectory(
|
||||||
|
${googletest_SOURCE_DIR}
|
||||||
|
${googletest_BINARY_DIR}
|
||||||
|
EXCLUDE_FROM_ALL
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_executable(tests
|
add_executable(tests
|
||||||
@ -38,16 +46,17 @@ add_executable(tests
|
|||||||
target_link_libraries(tests
|
target_link_libraries(tests
|
||||||
PRIVATE component
|
PRIVATE component
|
||||||
PRIVATE gtest
|
PRIVATE gtest
|
||||||
PRIVATE gmock
|
|
||||||
PRIVATE gtest_main
|
PRIVATE gtest_main
|
||||||
)
|
)
|
||||||
target_include_directories(tests
|
target_include_directories(tests
|
||||||
PRIVATE src
|
PRIVATE src
|
||||||
)
|
)
|
||||||
|
ftxui_set_options(tests)
|
||||||
|
|
||||||
if (NOT MSVC)
|
include(GoogleTest)
|
||||||
include(cmake/ftxui_benchmark.cmake)
|
gtest_discover_tests(tests)
|
||||||
endif()
|
|
||||||
|
include(cmake/ftxui_benchmark.cmake)
|
||||||
|
|
||||||
if (FTXUI_BUILD_TESTS_FUZZER)
|
if (FTXUI_BUILD_TESTS_FUZZER)
|
||||||
include(cmake/ftxui_fuzzer.cmake)
|
include(cmake/ftxui_fuzzer.cmake)
|
||||||
|
@ -189,8 +189,8 @@ float ElasticIn(float p) {
|
|||||||
// Modeled after the damped sine wave y = sin(-13pi/2*(x + 1))*pow(2, -10x) +
|
// Modeled after the damped sine wave y = sin(-13pi/2*(x + 1))*pow(2, -10x) +
|
||||||
// 1
|
// 1
|
||||||
float ElasticOut(float p) {
|
float ElasticOut(float p) {
|
||||||
return std::sin(-13.F * kPi2 * (p + 1)) * std::pow(2.F, -10.F * p) +
|
// NOLINTNEXTLINE
|
||||||
1; // NOLINT
|
return std::sin(-13.F * kPi2 * (p + 1)) * std::pow(2.F, -10.F * p) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Modeled after the piecewise exponentially-damped sine wave:
|
// Modeled after the piecewise exponentially-damped sine wave:
|
||||||
|
@ -55,6 +55,7 @@ Element DefaultTransform(EntryState params) { // NOLINT
|
|||||||
/// │Click to quit│
|
/// │Click to quit│
|
||||||
/// └─────────────┘
|
/// └─────────────┘
|
||||||
/// ```
|
/// ```
|
||||||
|
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
|
||||||
Component Button(ConstStringRef label,
|
Component Button(ConstStringRef label,
|
||||||
std::function<void()> on_click,
|
std::function<void()> on_click,
|
||||||
Ref<ButtonOption> option) {
|
Ref<ButtonOption> option) {
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#include "ftxui/component/component_base.hpp" // for ComponentBase, Component
|
#include "ftxui/component/component_base.hpp" // for ComponentBase, Component
|
||||||
#include "gtest/gtest_pred_impl.h" // for EXPECT_EQ, Test, SuiteApiResolver, TEST, TestFactoryImpl
|
#include "gtest/gtest_pred_impl.h" // for EXPECT_EQ, Test, SuiteApiResolver, TEST, TestFactoryImpl
|
||||||
|
|
||||||
using namespace ftxui;
|
namespace ftxui {
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
Component Make() {
|
Component Make() {
|
||||||
@ -172,6 +172,8 @@ TEST(ComponentTest, NonFocusableAreNotFocused) {
|
|||||||
EXPECT_EQ(child->ActiveChild(), nullptr);
|
EXPECT_EQ(child->ActiveChild(), nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace ftxui
|
||||||
|
|
||||||
// Copyright 2020 Arthur Sonzogni. All rights reserved.
|
// Copyright 2020 Arthur Sonzogni. All rights reserved.
|
||||||
// Use of this source code is governed by the MIT license that can be found in
|
// Use of this source code is governed by the MIT license that can be found in
|
||||||
// the LICENSE file.
|
// the LICENSE file.
|
||||||
|
@ -8,14 +8,16 @@
|
|||||||
#include "ftxui/component/event.hpp" // for Event, Event::Tab, Event::TabReverse, Event::ArrowDown, Event::ArrowLeft, Event::ArrowRight, Event::ArrowUp
|
#include "ftxui/component/event.hpp" // for Event, Event::Tab, Event::TabReverse, Event::ArrowDown, Event::ArrowLeft, Event::ArrowRight, Event::ArrowUp
|
||||||
#include "gtest/gtest_pred_impl.h" // for AssertionResult, EXPECT_EQ, EXPECT_FALSE, EXPECT_TRUE, Test, TEST
|
#include "gtest/gtest_pred_impl.h" // for AssertionResult, EXPECT_EQ, EXPECT_FALSE, EXPECT_TRUE, Test, TEST
|
||||||
|
|
||||||
using namespace ftxui;
|
namespace ftxui {
|
||||||
|
|
||||||
|
namespace {
|
||||||
Component Focusable() {
|
Component Focusable() {
|
||||||
return Button("", [] {});
|
return Button("", [] {});
|
||||||
}
|
}
|
||||||
Component NonFocusable() {
|
Component NonFocusable() {
|
||||||
return Container::Horizontal({});
|
return Container::Horizontal({});
|
||||||
}
|
}
|
||||||
|
} // namespace
|
||||||
|
|
||||||
TEST(ContainerTest, HorizontalEvent) {
|
TEST(ContainerTest, HorizontalEvent) {
|
||||||
auto container = Container::Horizontal({});
|
auto container = Container::Horizontal({});
|
||||||
@ -333,6 +335,8 @@ TEST(ContainerTest, TabFocusable) {
|
|||||||
EXPECT_FALSE(c->Focused());
|
EXPECT_FALSE(c->Focused());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace ftxui
|
||||||
|
|
||||||
// Copyright 2020 Arthur Sonzogni. All rights reserved.
|
// Copyright 2020 Arthur Sonzogni. All rights reserved.
|
||||||
// Use of this source code is governed by the MIT license that can be found in
|
// Use of this source code is governed by the MIT license that can be found in
|
||||||
// the LICENSE file.
|
// the LICENSE file.
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
#include "ftxui/util/ref.hpp" // for Ref
|
#include "ftxui/util/ref.hpp" // for Ref
|
||||||
#include "gtest/gtest_pred_impl.h" // for Test, EXPECT_EQ, TEST
|
#include "gtest/gtest_pred_impl.h" // for Test, EXPECT_EQ, TEST
|
||||||
|
|
||||||
using namespace ftxui;
|
namespace ftxui {
|
||||||
|
|
||||||
TEST(InputTest, Init) {
|
TEST(InputTest, Init) {
|
||||||
std::string content;
|
std::string content;
|
||||||
@ -372,6 +372,8 @@ TEST(InputTest, MouseClickComplex) {
|
|||||||
EXPECT_EQ(option.cursor_position(), 4u);
|
EXPECT_EQ(option.cursor_position(), 4u);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace ftxui
|
||||||
|
|
||||||
// Copyright 2021 Arthur Sonzogni. All rights reserved.
|
// Copyright 2021 Arthur Sonzogni. All rights reserved.
|
||||||
// Use of this source code is governed by the MIT license that can be found in
|
// Use of this source code is governed by the MIT license that can be found in
|
||||||
// the LICENSE file.
|
// the LICENSE file.
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
#include "ftxui/util/ref.hpp" // for Ref
|
#include "ftxui/util/ref.hpp" // for Ref
|
||||||
#include "gtest/gtest_pred_impl.h" // for Test, EXPECT_EQ, TEST
|
#include "gtest/gtest_pred_impl.h" // for Test, EXPECT_EQ, TEST
|
||||||
|
|
||||||
using namespace ftxui;
|
namespace ftxui {
|
||||||
|
|
||||||
TEST(MenuTest, RemoveEntries) {
|
TEST(MenuTest, RemoveEntries) {
|
||||||
int focused_entry = 0;
|
int focused_entry = 0;
|
||||||
@ -43,6 +43,8 @@ TEST(MenuTest, RemoveEntries) {
|
|||||||
EXPECT_EQ(focused_entry, 1);
|
EXPECT_EQ(focused_entry, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace ftxui
|
||||||
|
|
||||||
// Copyright 2022 Arthur Sonzogni. All rights reserved.
|
// Copyright 2022 Arthur Sonzogni. All rights reserved.
|
||||||
// Use of this source code is governed by the MIT license that can be found in
|
// Use of this source code is governed by the MIT license that can be found in
|
||||||
// the LICENSE file.
|
// the LICENSE file.
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
#include "ftxui/util/ref.hpp" // for Ref
|
#include "ftxui/util/ref.hpp" // for Ref
|
||||||
#include "gtest/gtest_pred_impl.h" // for EXPECT_EQ, Test, TEST
|
#include "gtest/gtest_pred_impl.h" // for EXPECT_EQ, Test, TEST
|
||||||
|
|
||||||
using namespace ftxui;
|
namespace ftxui {
|
||||||
|
|
||||||
TEST(RadioboxTest, Navigation) {
|
TEST(RadioboxTest, Navigation) {
|
||||||
int selected = 0;
|
int selected = 0;
|
||||||
@ -145,6 +145,8 @@ TEST(RadioboxTest, RemoveEntries) {
|
|||||||
EXPECT_EQ(focused_entry, 1);
|
EXPECT_EQ(focused_entry, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace ftxui
|
||||||
|
|
||||||
// Copyright 2020 Arthur Sonzogni. All rights reserved.
|
// Copyright 2020 Arthur Sonzogni. All rights reserved.
|
||||||
// Use of this source code is governed by the MIT license that can be found in
|
// Use of this source code is governed by the MIT license that can be found in
|
||||||
// the LICENSE file.
|
// the LICENSE file.
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
#include "ftxui/component/receiver.hpp"
|
#include "ftxui/component/receiver.hpp"
|
||||||
#include "gtest/gtest_pred_impl.h" // for AssertionResult, Test, EXPECT_EQ
|
#include "gtest/gtest_pred_impl.h" // for AssertionResult, Test, EXPECT_EQ
|
||||||
|
|
||||||
using namespace ftxui;
|
namespace ftxui {
|
||||||
|
|
||||||
TEST(Receiver, Basic) {
|
TEST(Receiver, Basic) {
|
||||||
auto receiver = MakeReceiver<char>();
|
auto receiver = MakeReceiver<char>();
|
||||||
@ -75,6 +75,8 @@ TEST(Receiver, BasicWithThread) {
|
|||||||
t23.join();
|
t23.join();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace ftxui
|
||||||
|
|
||||||
// Copyright 2020 Arthur Sonzogni. All rights reserved.
|
// Copyright 2020 Arthur Sonzogni. All rights reserved.
|
||||||
// Use of this source code is governed by the MIT license that can be found in
|
// Use of this source code is governed by the MIT license that can be found in
|
||||||
// the LICENSE file.
|
// the LICENSE file.
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#include "ftxui/dom/elements.hpp" // for text, Element
|
#include "ftxui/dom/elements.hpp" // for text, Element
|
||||||
#include "gtest/gtest_pred_impl.h" // for Test, TEST, EXPECT_EQ
|
#include "gtest/gtest_pred_impl.h" // for Test, TEST, EXPECT_EQ
|
||||||
|
|
||||||
using namespace ftxui;
|
namespace ftxui {
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
bool TestSignal(int signal) {
|
bool TestSignal(int signal) {
|
||||||
@ -47,6 +47,8 @@ TEST(ScreenInteractive, Signal_SIGFPE) {
|
|||||||
TestSignal(SIGFPE);
|
TestSignal(SIGFPE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace ftxui
|
||||||
|
|
||||||
// Copyright 2021 Arthur Sonzogni. All rights reserved.
|
// Copyright 2021 Arthur Sonzogni. All rights reserved.
|
||||||
// Use of this source code is governed by the MIT license that can be found in
|
// Use of this source code is governed by the MIT license that can be found in
|
||||||
// the LICENSE file.
|
// the LICENSE file.
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
#include "ftxui/component/terminal_input_parser.hpp"
|
#include "ftxui/component/terminal_input_parser.hpp"
|
||||||
#include "gtest/gtest_pred_impl.h" // for AssertionResult, Test, EXPECT_EQ, EXPECT_TRUE, EXPECT_FALSE, TEST
|
#include "gtest/gtest_pred_impl.h" // for AssertionResult, Test, EXPECT_EQ, EXPECT_TRUE, EXPECT_FALSE, TEST
|
||||||
|
|
||||||
using namespace ftxui;
|
namespace ftxui {
|
||||||
|
|
||||||
// Test char |c| to are trivially converted into |Event::Character(c)|.
|
// Test char |c| to are trivially converted into |Event::Character(c)|.
|
||||||
TEST(Event, Character) {
|
TEST(Event, Character) {
|
||||||
@ -232,6 +232,8 @@ TEST(Event, UTF8) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace ftxui
|
||||||
|
|
||||||
// Copyright 2020 Arthur Sonzogni. All rights reserved.
|
// Copyright 2020 Arthur Sonzogni. All rights reserved.
|
||||||
// Use of this source code is governed by the MIT license that can be found in
|
// Use of this source code is governed by the MIT license that can be found in
|
||||||
// the LICENSE file.
|
// the LICENSE file.
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
#include "ftxui/screen/color.hpp" // for ftxui
|
#include "ftxui/screen/color.hpp" // for ftxui
|
||||||
#include "ftxui/screen/screen.hpp" // for Screen
|
#include "ftxui/screen/screen.hpp" // for Screen
|
||||||
|
|
||||||
using namespace ftxui;
|
namespace ftxui {
|
||||||
|
|
||||||
static void BencharkBasic(benchmark::State& state) {
|
static void BencharkBasic(benchmark::State& state) {
|
||||||
while (state.KeepRunning()) {
|
while (state.KeepRunning()) {
|
||||||
@ -30,6 +30,8 @@ static void BencharkBasic(benchmark::State& state) {
|
|||||||
}
|
}
|
||||||
BENCHMARK(BencharkBasic)->DenseRange(0, 256, 16);
|
BENCHMARK(BencharkBasic)->DenseRange(0, 256, 16);
|
||||||
|
|
||||||
|
} // namespace ftxui
|
||||||
|
|
||||||
// Copyright 2021 Arthur Sonzogni. All rights reserved.
|
// Copyright 2021 Arthur Sonzogni. All rights reserved.
|
||||||
// Use of this source code is governed by the MIT license that can be found in
|
// Use of this source code is governed by the MIT license that can be found in
|
||||||
// the LICENSE file.l
|
// the LICENSE file.l
|
||||||
|
@ -5,8 +5,7 @@
|
|||||||
#include "ftxui/dom/flexbox_helper.hpp"
|
#include "ftxui/dom/flexbox_helper.hpp"
|
||||||
#include "gtest/gtest_pred_impl.h" // for EXPECT_EQ, Test, TEST
|
#include "gtest/gtest_pred_impl.h" // for EXPECT_EQ, Test, TEST
|
||||||
|
|
||||||
using namespace ftxui;
|
namespace ftxui {
|
||||||
using namespace ftxui;
|
|
||||||
|
|
||||||
TEST(FlexboxHelperTest, BasicRow) {
|
TEST(FlexboxHelperTest, BasicRow) {
|
||||||
flexbox_helper::Block block_10_5;
|
flexbox_helper::Block block_10_5;
|
||||||
@ -228,6 +227,8 @@ TEST(FlexboxHelperTest, BasicColumnInversed) {
|
|||||||
EXPECT_EQ(g.blocks[4].dim_y, 5);
|
EXPECT_EQ(g.blocks[4].dim_y, 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace ftxui
|
||||||
|
|
||||||
// Copyright 2020 Arthur Sonzogni. All rights reserved.
|
// Copyright 2020 Arthur Sonzogni. All rights reserved.
|
||||||
// Use of this source code is governed by the MIT license that can be found in
|
// Use of this source code is governed by the MIT license that can be found in
|
||||||
// the LICENSE file.
|
// the LICENSE file.
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
#include "ftxui/screen/screen.hpp" // for Screen
|
#include "ftxui/screen/screen.hpp" // for Screen
|
||||||
#include "gtest/gtest_pred_impl.h" // for Test, EXPECT_EQ, TEST
|
#include "gtest/gtest_pred_impl.h" // for Test, EXPECT_EQ, TEST
|
||||||
|
|
||||||
using namespace ftxui;
|
namespace ftxui {
|
||||||
|
|
||||||
TEST(FlexboxTest, BasicRow) {
|
TEST(FlexboxTest, BasicRow) {
|
||||||
auto root = flexbox(
|
auto root = flexbox(
|
||||||
@ -433,6 +433,8 @@ TEST(FlexboxTest, GapY) {
|
|||||||
" ");
|
" ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace ftxui
|
||||||
|
|
||||||
// Copyright 2021 Arthur Sonzogni. All rights reserved.
|
// Copyright 2021 Arthur Sonzogni. All rights reserved.
|
||||||
// Use of this source code is governed by the MIT license that can be found in
|
// Use of this source code is governed by the MIT license that can be found in
|
||||||
// the LICENSE file.
|
// the LICENSE file.
|
||||||
|
@ -8,8 +8,7 @@
|
|||||||
#include "ftxui/screen/screen.hpp" // for Screen
|
#include "ftxui/screen/screen.hpp" // for Screen
|
||||||
#include "gtest/gtest_pred_impl.h" // for Test, EXPECT_EQ, TEST
|
#include "gtest/gtest_pred_impl.h" // for Test, EXPECT_EQ, TEST
|
||||||
|
|
||||||
using namespace ftxui;
|
namespace ftxui {
|
||||||
using namespace ftxui;
|
|
||||||
|
|
||||||
TEST(GaugeTest, ZeroHorizontal) {
|
TEST(GaugeTest, ZeroHorizontal) {
|
||||||
auto root = gauge(0);
|
auto root = gauge(0);
|
||||||
@ -24,7 +23,11 @@ TEST(GaugeTest, HalfHorizontal) {
|
|||||||
Screen screen(11, 1);
|
Screen screen(11, 1);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
|
|
||||||
|
#if defined(FTXUI_MICROSOFT_TERMINAL_FALLBACK)
|
||||||
|
EXPECT_EQ("█████▌ ", screen.ToString());
|
||||||
|
#else
|
||||||
EXPECT_EQ("█████▍ ", screen.ToString());
|
EXPECT_EQ("█████▍ ", screen.ToString());
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(GaugeTest, OneHorizontal) {
|
TEST(GaugeTest, OneHorizontal) {
|
||||||
@ -95,6 +98,8 @@ TEST(GaugeTest, OneVertical) {
|
|||||||
screen.ToString());
|
screen.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace ftxui
|
||||||
|
|
||||||
// Copyright 2020 Arthur Sonzogni. All rights reserved.
|
// Copyright 2020 Arthur Sonzogni. All rights reserved.
|
||||||
// Use of this source code is governed by the MIT license that can be found in
|
// Use of this source code is governed by the MIT license that can be found in
|
||||||
// the LICENSE file.
|
// the LICENSE file.
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
#include "ftxui/screen/screen.hpp" // for Screen
|
#include "ftxui/screen/screen.hpp" // for Screen
|
||||||
#include "gtest/gtest_pred_impl.h" // for Test, TEST, EXPECT_EQ
|
#include "gtest/gtest_pred_impl.h" // for Test, TEST, EXPECT_EQ
|
||||||
|
|
||||||
using namespace ftxui;
|
namespace ftxui {
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
std::string rotate(std::string str) {
|
std::string rotate(std::string str) {
|
||||||
@ -175,7 +175,7 @@ TEST(GridboxTest, Horizontal_NoFlex_NoFlex_NoFlex) {
|
|||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(i, 1);
|
Screen screen(i, 1);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], screen.ToString());
|
EXPECT_EQ(expectations[i], screen.ToString());
|
||||||
@ -203,7 +203,7 @@ TEST(GridboxTest, Vertical_NoFlex_NoFlex_NoFlex) {
|
|||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(1, i);
|
Screen screen(1, i);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
||||||
@ -233,7 +233,7 @@ TEST(GridboxTest, Horizontal_FlexGrow_NoFlex_NoFlex) {
|
|||||||
"012 abcABC", //
|
"012 abcABC", //
|
||||||
"012 abcABC", //
|
"012 abcABC", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(i, 1);
|
Screen screen(i, 1);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], screen.ToString());
|
EXPECT_EQ(expectations[i], screen.ToString());
|
||||||
@ -261,7 +261,7 @@ TEST(GridboxTest, Vertical_FlexGrow_NoFlex_NoFlex) {
|
|||||||
"012 abcABC", //
|
"012 abcABC", //
|
||||||
"012 abcABC", //
|
"012 abcABC", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(1, i);
|
Screen screen(1, i);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
||||||
@ -291,7 +291,7 @@ TEST(GridboxTest, Horizontal_NoFlex_FlexGrow_NoFlex) {
|
|||||||
"012abc ABC", //
|
"012abc ABC", //
|
||||||
"012abc ABC", //
|
"012abc ABC", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(i, 1);
|
Screen screen(i, 1);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], screen.ToString());
|
EXPECT_EQ(expectations[i], screen.ToString());
|
||||||
@ -321,7 +321,7 @@ TEST(GridboxTest, Horizontal_NoFlex_NoFlex_FlexGrow) {
|
|||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(i, 1);
|
Screen screen(i, 1);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], screen.ToString());
|
EXPECT_EQ(expectations[i], screen.ToString());
|
||||||
@ -353,7 +353,7 @@ TEST(GridboxTest, Horizontal_FlexGrow_NoFlex_FlexGrow) {
|
|||||||
"012 abcABC ", //
|
"012 abcABC ", //
|
||||||
"012 abcABC ", //
|
"012 abcABC ", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(i, 1);
|
Screen screen(i, 1);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], screen.ToString());
|
EXPECT_EQ(expectations[i], screen.ToString());
|
||||||
@ -387,7 +387,7 @@ TEST(GridboxTest, Horizontal_FlexGrow_FlexGrow_FlexGrow) {
|
|||||||
"012 abc ABC ", //
|
"012 abc ABC ", //
|
||||||
"012 abc ABC ", //
|
"012 abc ABC ", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(i, 1);
|
Screen screen(i, 1);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], screen.ToString());
|
EXPECT_EQ(expectations[i], screen.ToString());
|
||||||
@ -419,7 +419,7 @@ TEST(GridboxTest, Horizontal_FlexShrink_NoFlex_NoFlex) {
|
|||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(i, 1);
|
Screen screen(i, 1);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], screen.ToString());
|
EXPECT_EQ(expectations[i], screen.ToString());
|
||||||
@ -449,7 +449,7 @@ TEST(GridboxTest, Horizontal_NoFlex_FlexShrink_NoFlex) {
|
|||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(i, 1);
|
Screen screen(i, 1);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], screen.ToString());
|
EXPECT_EQ(expectations[i], screen.ToString());
|
||||||
@ -479,7 +479,7 @@ TEST(GridboxTest, Horizontal_NoFlex_NoFlex_FlexShrink) {
|
|||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(i, 1);
|
Screen screen(i, 1);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], screen.ToString());
|
EXPECT_EQ(expectations[i], screen.ToString());
|
||||||
@ -508,7 +508,7 @@ TEST(GridboxTest, Horizontal_FlexShrink_NoFlex_FlexShrink) {
|
|||||||
"012abcABC", //
|
"012abcABC", //
|
||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(i, 1);
|
Screen screen(i, 1);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], screen.ToString());
|
EXPECT_EQ(expectations[i], screen.ToString());
|
||||||
@ -539,7 +539,7 @@ TEST(GridboxTest, Horizontal_FlexShrink_FlexShrink_FlexShrink) {
|
|||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(i, 1);
|
Screen screen(i, 1);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], screen.ToString());
|
EXPECT_EQ(expectations[i], screen.ToString());
|
||||||
@ -570,7 +570,7 @@ TEST(GridboxTest, Horizontal_FlexGrow_NoFlex_FlewShrink) {
|
|||||||
"012 abcABC", //
|
"012 abcABC", //
|
||||||
"012 abcABC", //
|
"012 abcABC", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(i, 1);
|
Screen screen(i, 1);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], screen.ToString());
|
EXPECT_EQ(expectations[i], screen.ToString());
|
||||||
@ -596,6 +596,8 @@ TEST(GridboxTest, MissingCells) {
|
|||||||
" ");
|
" ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace ftxui
|
||||||
|
|
||||||
// Copyright 2020 Arthur Sonzogni. All rights reserved.
|
// Copyright 2020 Arthur Sonzogni. All rights reserved.
|
||||||
// Use of this source code is governed by the MIT license that can be found in
|
// Use of this source code is governed by the MIT license that can be found in
|
||||||
// the LICENSE file.
|
// the LICENSE file.
|
||||||
|
@ -33,7 +33,7 @@ TEST(HBoxTest, NoFlex_NoFlex_NoFlex) {
|
|||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(i, 1);
|
Screen screen(i, 1);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], screen.ToString());
|
EXPECT_EQ(expectations[i], screen.ToString());
|
||||||
@ -61,7 +61,7 @@ TEST(HBoxTest, FlexGrow_NoFlex_NoFlex) {
|
|||||||
"012 abcABC", //
|
"012 abcABC", //
|
||||||
"012 abcABC", //
|
"012 abcABC", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(i, 1);
|
Screen screen(i, 1);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], screen.ToString());
|
EXPECT_EQ(expectations[i], screen.ToString());
|
||||||
@ -89,7 +89,7 @@ TEST(HBoxTest, NoFlex_FlexGrow_NoFlex) {
|
|||||||
"012abc ABC", //
|
"012abc ABC", //
|
||||||
"012abc ABC", //
|
"012abc ABC", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(i, 1);
|
Screen screen(i, 1);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], screen.ToString());
|
EXPECT_EQ(expectations[i], screen.ToString());
|
||||||
@ -117,7 +117,7 @@ TEST(HBoxTest, NoFlex_NoFlex_FlexGrow) {
|
|||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(i, 1);
|
Screen screen(i, 1);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], screen.ToString());
|
EXPECT_EQ(expectations[i], screen.ToString());
|
||||||
@ -147,7 +147,7 @@ TEST(HBoxTest, FlexGrow_NoFlex_FlexGrow) {
|
|||||||
"012 abcABC ", //
|
"012 abcABC ", //
|
||||||
"012 abcABC ", //
|
"012 abcABC ", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(i, 1);
|
Screen screen(i, 1);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], screen.ToString());
|
EXPECT_EQ(expectations[i], screen.ToString());
|
||||||
@ -179,7 +179,7 @@ TEST(HBoxTest, FlexGrow_FlexGrow_FlexGrow) {
|
|||||||
"012 abc ABC ", //
|
"012 abc ABC ", //
|
||||||
"012 abc ABC ", //
|
"012 abc ABC ", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(i, 1);
|
Screen screen(i, 1);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], screen.ToString());
|
EXPECT_EQ(expectations[i], screen.ToString());
|
||||||
@ -209,7 +209,7 @@ TEST(HBoxTest, FlexShrink_NoFlex_NoFlex) {
|
|||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(i, 1);
|
Screen screen(i, 1);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], screen.ToString());
|
EXPECT_EQ(expectations[i], screen.ToString());
|
||||||
@ -237,7 +237,7 @@ TEST(HBoxTest, NoFlex_FlexShrink_NoFlex) {
|
|||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(i, 1);
|
Screen screen(i, 1);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], screen.ToString());
|
EXPECT_EQ(expectations[i], screen.ToString());
|
||||||
@ -265,7 +265,7 @@ TEST(HBoxTest, NoFlex_NoFlex_FlexShrink) {
|
|||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(i, 1);
|
Screen screen(i, 1);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], screen.ToString());
|
EXPECT_EQ(expectations[i], screen.ToString());
|
||||||
@ -292,7 +292,7 @@ TEST(HBoxTest, FlexShrink_NoFlex_FlexShrink) {
|
|||||||
"012abcABC", //
|
"012abcABC", //
|
||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(i, 1);
|
Screen screen(i, 1);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], screen.ToString());
|
EXPECT_EQ(expectations[i], screen.ToString());
|
||||||
@ -321,7 +321,7 @@ TEST(HBoxTest, FlexShrink_FlexShrink_FlexShrink) {
|
|||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(i, 1);
|
Screen screen(i, 1);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], screen.ToString());
|
EXPECT_EQ(expectations[i], screen.ToString());
|
||||||
@ -350,7 +350,7 @@ TEST(HBoxTest, FlexGrow_NoFlex_FlewShrink) {
|
|||||||
"012 abcABC", //
|
"012 abcABC", //
|
||||||
"012 abcABC", //
|
"012 abcABC", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(i, 1);
|
Screen screen(i, 1);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], screen.ToString());
|
EXPECT_EQ(expectations[i], screen.ToString());
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
#include "ftxui/screen/screen.hpp" // for Screen
|
#include "ftxui/screen/screen.hpp" // for Screen
|
||||||
#include "gtest/gtest_pred_impl.h" // for Test, EXPECT_EQ, TEST
|
#include "gtest/gtest_pred_impl.h" // for Test, EXPECT_EQ, TEST
|
||||||
|
|
||||||
using namespace ftxui;
|
namespace ftxui {
|
||||||
|
|
||||||
TEST(TableTest, Empty) {
|
TEST(TableTest, Empty) {
|
||||||
auto table = Table();
|
auto table = Table();
|
||||||
@ -711,6 +711,8 @@ TEST(TableTest, RowFlexTwo) {
|
|||||||
screen.ToString());
|
screen.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace ftxui
|
||||||
|
|
||||||
// Copyright 2021 Arthur Sonzogni. All rights reserved.
|
// Copyright 2021 Arthur Sonzogni. All rights reserved.
|
||||||
// Use of this source code is governed by the MIT license that can be found in
|
// Use of this source code is governed by the MIT license that can be found in
|
||||||
// the LICENSE file.
|
// the LICENSE file.
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
#include "ftxui/screen/screen.hpp" // for Screen
|
#include "ftxui/screen/screen.hpp" // for Screen
|
||||||
#include "gtest/gtest_pred_impl.h" // for Test, EXPECT_EQ, TEST
|
#include "gtest/gtest_pred_impl.h" // for Test, EXPECT_EQ, TEST
|
||||||
|
|
||||||
using namespace ftxui;
|
namespace ftxui {
|
||||||
|
|
||||||
TEST(TextTest, ScreenHeightSmaller) {
|
TEST(TextTest, ScreenHeightSmaller) {
|
||||||
auto element = text("test");
|
auto element = text("test");
|
||||||
@ -103,6 +103,8 @@ TEST(TextTest, CombiningCharacters) {
|
|||||||
EXPECT_EQ(t, screen.ToString());
|
EXPECT_EQ(t, screen.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace ftxui
|
||||||
|
|
||||||
// Copyright 2020 Arthur Sonzogni. All rights reserved.
|
// Copyright 2020 Arthur Sonzogni. All rights reserved.
|
||||||
// Use of this source code is governed by the MIT license that can be found in
|
// Use of this source code is governed by the MIT license that can be found in
|
||||||
// the LICENSE file.
|
// the LICENSE file.
|
||||||
|
@ -10,7 +10,8 @@
|
|||||||
#include "ftxui/screen/screen.hpp" // for Screen
|
#include "ftxui/screen/screen.hpp" // for Screen
|
||||||
#include "gtest/gtest_pred_impl.h" // for Test, EXPECT_EQ, TEST
|
#include "gtest/gtest_pred_impl.h" // for Test, EXPECT_EQ, TEST
|
||||||
|
|
||||||
using namespace ftxui;
|
namespace ftxui {
|
||||||
|
namespace {
|
||||||
|
|
||||||
std::string rotate(std::string str) {
|
std::string rotate(std::string str) {
|
||||||
str.erase(std::remove(str.begin(), str.end(), '\r'), str.end());
|
str.erase(std::remove(str.begin(), str.end(), '\r'), str.end());
|
||||||
@ -18,6 +19,8 @@ std::string rotate(std::string str) {
|
|||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
TEST(VBoxText, NoFlex_NoFlex_NoFlex) {
|
TEST(VBoxText, NoFlex_NoFlex_NoFlex) {
|
||||||
auto root = vbox({
|
auto root = vbox({
|
||||||
vtext("012"),
|
vtext("012"),
|
||||||
@ -39,7 +42,7 @@ TEST(VBoxText, NoFlex_NoFlex_NoFlex) {
|
|||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(1, i);
|
Screen screen(1, i);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
||||||
@ -67,7 +70,7 @@ TEST(VBoxText, FlexGrow_NoFlex_NoFlex) {
|
|||||||
"012 abcABC", //
|
"012 abcABC", //
|
||||||
"012 abcABC", //
|
"012 abcABC", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(1, i);
|
Screen screen(1, i);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
||||||
@ -95,7 +98,7 @@ TEST(VBoxText, NoFlex_FlexGrow_NoFlex) {
|
|||||||
"012abc ABC", //
|
"012abc ABC", //
|
||||||
"012abc ABC", //
|
"012abc ABC", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(1, i);
|
Screen screen(1, i);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
||||||
@ -123,7 +126,7 @@ TEST(VBoxText, NoFlex_NoFlex_FlexGrow) {
|
|||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(1, i);
|
Screen screen(1, i);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
||||||
@ -153,7 +156,7 @@ TEST(VBoxText, FlexGrow_NoFlex_FlexGrow) {
|
|||||||
"012 abcABC ", //
|
"012 abcABC ", //
|
||||||
"012 abcABC ", //
|
"012 abcABC ", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(1, i);
|
Screen screen(1, i);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
||||||
@ -185,7 +188,7 @@ TEST(VBoxText, FlexGrow_FlexGrow_FlexGrow) {
|
|||||||
"012 abc ABC ", //
|
"012 abc ABC ", //
|
||||||
"012 abc ABC ", //
|
"012 abc ABC ", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(1, i);
|
Screen screen(1, i);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
||||||
@ -215,7 +218,7 @@ TEST(VBoxText, FlexShrink_NoFlex_NoFlex) {
|
|||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(1, i);
|
Screen screen(1, i);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
||||||
@ -243,7 +246,7 @@ TEST(VBoxText, NoFlex_FlexShrink_NoFlex) {
|
|||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(1, i);
|
Screen screen(1, i);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
||||||
@ -271,7 +274,7 @@ TEST(VBoxText, NoFlex_NoFlex_FlexShrink) {
|
|||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(1, i);
|
Screen screen(1, i);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
||||||
@ -298,7 +301,7 @@ TEST(VBoxText, FlexShrink_NoFlex_FlexShrink) {
|
|||||||
"012abcABC", //
|
"012abcABC", //
|
||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(1, i);
|
Screen screen(1, i);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
||||||
@ -327,7 +330,7 @@ TEST(VBoxText, FlexShrink_FlexShrink_FlexShrink) {
|
|||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
"012abcABC ", //
|
"012abcABC ", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(1, i);
|
Screen screen(1, i);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
||||||
@ -356,13 +359,15 @@ TEST(VBoxText, FlexGrow_NoFlex_FlewShrink) {
|
|||||||
"012 abcABC", //
|
"012 abcABC", //
|
||||||
"012 abcABC", //
|
"012 abcABC", //
|
||||||
};
|
};
|
||||||
for (int i = 0; i < expectations.size(); ++i) {
|
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||||
Screen screen(1, i);
|
Screen screen(1, i);
|
||||||
Render(screen, root);
|
Render(screen, root);
|
||||||
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace ftxui
|
||||||
|
|
||||||
// Copyright 2020 Arthur Sonzogni. All rights reserved.
|
// Copyright 2020 Arthur Sonzogni. All rights reserved.
|
||||||
// Use of this source code is governed by the MIT license that can be found in
|
// Use of this source code is governed by the MIT license that can be found in
|
||||||
// the LICENSE file.
|
// the LICENSE file.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#include <stdint.h> // for uint8_t
|
#include <cstdint> // for uint8_t
|
||||||
#include <iostream> // for operator<<, stringstream, basic_ostream, flush, cout, ostream
|
#include <iostream> // for operator<<, stringstream, basic_ostream, flush, cout, ostream
|
||||||
#include <map> // for _Rb_tree_const_iterator, map, operator!=, operator==
|
#include <map> // for _Rb_tree_const_iterator, map, operator!=, operator==
|
||||||
#include <memory> // for allocator
|
#include <memory> // for allocator
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
#include "ftxui/screen/string.hpp"
|
#include "ftxui/screen/string.hpp"
|
||||||
#include "gtest/gtest_pred_impl.h" // for EXPECT_EQ, Test, TEST
|
#include "gtest/gtest_pred_impl.h" // for EXPECT_EQ, Test, TEST
|
||||||
|
|
||||||
using namespace ftxui;
|
namespace ftxui {
|
||||||
|
|
||||||
TEST(StringTest, StringWidth) {
|
TEST(StringTest, StringWidth) {
|
||||||
// Basic:
|
// Basic:
|
||||||
@ -120,6 +120,7 @@ TEST(StringTest, CellToGlyphIndex) {
|
|||||||
EXPECT_EQ(combining[2], 2);
|
EXPECT_EQ(combining[2], 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
// Copyright 2020 Arthur Sonzogni. All rights reserved.
|
// Copyright 2020 Arthur Sonzogni. All rights reserved.
|
||||||
// Use of this source code is governed by the MIT license that can be found in
|
// Use of this source code is governed by the MIT license that can be found in
|
||||||
// the LICENSE file.
|
// the LICENSE file.
|
||||||
|
Loading…
Reference in New Issue
Block a user