mirror of
https://github.com/ArthurSonzogni/FTXUI.git
synced 2024-11-22 02:34:21 +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:
|
||||
- name: Linux GCC
|
||||
os: ubuntu-latest
|
||||
compiler: g++-9
|
||||
test: true
|
||||
compiler: gcc
|
||||
gcov_executable: gcov
|
||||
|
||||
- name: Linux Clang
|
||||
os: ubuntu-latest
|
||||
compiler: clang++
|
||||
test: true
|
||||
compiler: llvm
|
||||
gcov_executable: "llvm-cov gcov"
|
||||
|
||||
- name: MacOS clang
|
||||
os: macos-latest
|
||||
compiler: clang++
|
||||
test: true
|
||||
compiler: llvm
|
||||
gcov_executable: "llvm-cov gcov"
|
||||
|
||||
- name: Windows MSVC
|
||||
os: windows-latest
|
||||
compiler: cl
|
||||
test: false
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- name: "Checkout repository"
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: "Enable MSVC command prompt"
|
||||
if: matrix.os == 'windows-latest'
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
- name: "Setup Cpp"
|
||||
uses: aminya/setup-cpp@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"
|
||||
uses: lukka/get-cmake@latest
|
||||
|
||||
- name: "Build debug mode"
|
||||
# make sure coverage is only enabled for Debug builds, since it sets -O0
|
||||
# to make sure coverage has meaningful results
|
||||
- name: "Configure CMake"
|
||||
run: >
|
||||
mkdir build;
|
||||
cd build;
|
||||
cmake ..
|
||||
-DCMAKE_CXX_COMPILER=${{ matrix.compiler }}
|
||||
-DFTXUI_BUILD_DOCS=OFF
|
||||
-DFTXUI_BUILD_EXAMPLES=ON
|
||||
-DFTXUI_BUILD_TESTS=ON
|
||||
-DFTXUI_BUILD_TESTS_FUZZER=OFF
|
||||
-DFTXUI_ENABLE_INSTALL=ON ;
|
||||
cmake --build . --config Debug;
|
||||
cmake -S .
|
||||
-B ./build
|
||||
-DCMAKE_BUILD_TYPE:STRING=Debug
|
||||
-DFTXUI_ENABLE_COVERAGE:BOOL=ON
|
||||
-DFTXUI_BUILD_DOCS:BOOL=OFF
|
||||
-DFTXUI_BUILD_EXAMPLES:BOOL=ON
|
||||
-DFTXUI_BUILD_TESTS:BOOL=ON
|
||||
-DFTXUI_BUILD_TESTS_FUZZER:BOOL=OFF
|
||||
-DFTXUI_ENABLE_INSTALL:BOOL=ON ;
|
||||
|
||||
- name: "Run tests"
|
||||
if: matrix.test
|
||||
- name: "Build"
|
||||
run: >
|
||||
cd build;
|
||||
./tests
|
||||
cmake
|
||||
--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
|
||||
release:
|
||||
@ -117,7 +156,7 @@ jobs:
|
||||
-DFTXUI_BUILD_TESTS=OFF
|
||||
-DFTXUI_BUILD_TESTS_FUZZER=OFF
|
||||
-DFTXUI_ENABLE_INSTALL=ON;
|
||||
cmake --build . --config Release --target package;
|
||||
cmake --build . --target package;
|
||||
- uses: shogo82148/actions-upload-release-asset@v1
|
||||
with:
|
||||
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_ENABLE_INSTALL "Generate the install target" ON)
|
||||
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 \
|
||||
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(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")
|
||||
include(cmake/ftxui_test.cmake)
|
||||
endif()
|
||||
|
@ -2,12 +2,19 @@ if (NOT WIN32)
|
||||
FetchContent_Declare(googlebenchmark
|
||||
GIT_REPOSITORY "https://github.com/google/benchmark"
|
||||
GIT_TAG 62937f91b5c763a8e119d0c20c67b87bde8eff1c
|
||||
GIT_PROGRESS TRUE
|
||||
)
|
||||
|
||||
FetchContent_GetProperties(googlebenchmark)
|
||||
set (BENCHMARK_ENABLE_GTEST_TESTS OFF CACHE INTERNAL "")
|
||||
set (BENCHMARK_ENABLE_TESTING OFF CACHE INTERNAL "")
|
||||
if(NOT googlebenchmark_POPULATED)
|
||||
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()
|
||||
|
||||
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()
|
||||
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
|
||||
|
||||
option(FETCHCONTENT_UPDATES_DISCONNECTED TRUE)
|
||||
option(FETCHCONTENT_QUIET FALSE)
|
||||
include(FetchContent)
|
||||
|
||||
FetchContent_Declare(googletest
|
||||
GIT_REPOSITORY "https://github.com/google/googletest"
|
||||
GIT_TAG 23ef29555ef4789f555f1ba8c51b4c52975f0907
|
||||
GIT_PROGRESS TRUE
|
||||
)
|
||||
FetchContent_GetProperties(googletest)
|
||||
if(NOT googletest_POPULATED)
|
||||
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()
|
||||
|
||||
add_executable(tests
|
||||
@ -38,16 +46,17 @@ add_executable(tests
|
||||
target_link_libraries(tests
|
||||
PRIVATE component
|
||||
PRIVATE gtest
|
||||
PRIVATE gmock
|
||||
PRIVATE gtest_main
|
||||
)
|
||||
target_include_directories(tests
|
||||
PRIVATE src
|
||||
)
|
||||
ftxui_set_options(tests)
|
||||
|
||||
if (NOT MSVC)
|
||||
include(cmake/ftxui_benchmark.cmake)
|
||||
endif()
|
||||
include(GoogleTest)
|
||||
gtest_discover_tests(tests)
|
||||
|
||||
include(cmake/ftxui_benchmark.cmake)
|
||||
|
||||
if (FTXUI_BUILD_TESTS_FUZZER)
|
||||
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) +
|
||||
// 1
|
||||
float ElasticOut(float p) {
|
||||
return std::sin(-13.F * kPi2 * (p + 1)) * std::pow(2.F, -10.F * p) +
|
||||
1; // NOLINT
|
||||
// NOLINTNEXTLINE
|
||||
return std::sin(-13.F * kPi2 * (p + 1)) * std::pow(2.F, -10.F * p) + 1;
|
||||
}
|
||||
|
||||
// Modeled after the piecewise exponentially-damped sine wave:
|
||||
|
@ -55,6 +55,7 @@ Element DefaultTransform(EntryState params) { // NOLINT
|
||||
/// │Click to quit│
|
||||
/// └─────────────┘
|
||||
/// ```
|
||||
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
|
||||
Component Button(ConstStringRef label,
|
||||
std::function<void()> on_click,
|
||||
Ref<ButtonOption> option) {
|
||||
|
@ -7,7 +7,7 @@
|
||||
#include "ftxui/component/component_base.hpp" // for ComponentBase, Component
|
||||
#include "gtest/gtest_pred_impl.h" // for EXPECT_EQ, Test, SuiteApiResolver, TEST, TestFactoryImpl
|
||||
|
||||
using namespace ftxui;
|
||||
namespace ftxui {
|
||||
|
||||
namespace {
|
||||
Component Make() {
|
||||
@ -172,6 +172,8 @@ TEST(ComponentTest, NonFocusableAreNotFocused) {
|
||||
EXPECT_EQ(child->ActiveChild(), nullptr);
|
||||
}
|
||||
|
||||
} // 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.
|
||||
|
@ -8,14 +8,16 @@
|
||||
#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
|
||||
|
||||
using namespace ftxui;
|
||||
namespace ftxui {
|
||||
|
||||
namespace {
|
||||
Component Focusable() {
|
||||
return Button("", [] {});
|
||||
}
|
||||
Component NonFocusable() {
|
||||
return Container::Horizontal({});
|
||||
}
|
||||
} // namespace
|
||||
|
||||
TEST(ContainerTest, HorizontalEvent) {
|
||||
auto container = Container::Horizontal({});
|
||||
@ -333,6 +335,8 @@ TEST(ContainerTest, TabFocusable) {
|
||||
EXPECT_FALSE(c->Focused());
|
||||
}
|
||||
|
||||
} // 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.
|
||||
|
@ -15,7 +15,7 @@
|
||||
#include "ftxui/util/ref.hpp" // for Ref
|
||||
#include "gtest/gtest_pred_impl.h" // for Test, EXPECT_EQ, TEST
|
||||
|
||||
using namespace ftxui;
|
||||
namespace ftxui {
|
||||
|
||||
TEST(InputTest, Init) {
|
||||
std::string content;
|
||||
@ -372,6 +372,8 @@ TEST(InputTest, MouseClickComplex) {
|
||||
EXPECT_EQ(option.cursor_position(), 4u);
|
||||
}
|
||||
|
||||
} // namespace ftxui
|
||||
|
||||
// Copyright 2021 Arthur Sonzogni. All rights reserved.
|
||||
// Use of this source code is governed by the MIT license that can be found in
|
||||
// the LICENSE file.
|
||||
|
@ -12,7 +12,7 @@
|
||||
#include "ftxui/util/ref.hpp" // for Ref
|
||||
#include "gtest/gtest_pred_impl.h" // for Test, EXPECT_EQ, TEST
|
||||
|
||||
using namespace ftxui;
|
||||
namespace ftxui {
|
||||
|
||||
TEST(MenuTest, RemoveEntries) {
|
||||
int focused_entry = 0;
|
||||
@ -43,6 +43,8 @@ TEST(MenuTest, RemoveEntries) {
|
||||
EXPECT_EQ(focused_entry, 1);
|
||||
}
|
||||
|
||||
} // namespace ftxui
|
||||
|
||||
// Copyright 2022 Arthur Sonzogni. All rights reserved.
|
||||
// Use of this source code is governed by the MIT license that can be found in
|
||||
// the LICENSE file.
|
||||
|
@ -12,7 +12,7 @@
|
||||
#include "ftxui/util/ref.hpp" // for Ref
|
||||
#include "gtest/gtest_pred_impl.h" // for EXPECT_EQ, Test, TEST
|
||||
|
||||
using namespace ftxui;
|
||||
namespace ftxui {
|
||||
|
||||
TEST(RadioboxTest, Navigation) {
|
||||
int selected = 0;
|
||||
@ -145,6 +145,8 @@ TEST(RadioboxTest, RemoveEntries) {
|
||||
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.
|
||||
|
@ -6,7 +6,7 @@
|
||||
#include "ftxui/component/receiver.hpp"
|
||||
#include "gtest/gtest_pred_impl.h" // for AssertionResult, Test, EXPECT_EQ
|
||||
|
||||
using namespace ftxui;
|
||||
namespace ftxui {
|
||||
|
||||
TEST(Receiver, Basic) {
|
||||
auto receiver = MakeReceiver<char>();
|
||||
@ -75,6 +75,8 @@ TEST(Receiver, BasicWithThread) {
|
||||
t23.join();
|
||||
}
|
||||
|
||||
} // 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.
|
||||
|
@ -7,7 +7,7 @@
|
||||
#include "ftxui/dom/elements.hpp" // for text, Element
|
||||
#include "gtest/gtest_pred_impl.h" // for Test, TEST, EXPECT_EQ
|
||||
|
||||
using namespace ftxui;
|
||||
namespace ftxui {
|
||||
|
||||
namespace {
|
||||
bool TestSignal(int signal) {
|
||||
@ -47,6 +47,8 @@ TEST(ScreenInteractive, Signal_SIGFPE) {
|
||||
TestSignal(SIGFPE);
|
||||
}
|
||||
|
||||
} // namespace ftxui
|
||||
|
||||
// Copyright 2021 Arthur Sonzogni. All rights reserved.
|
||||
// Use of this source code is governed by the MIT license that can be found in
|
||||
// the LICENSE file.
|
||||
|
@ -9,7 +9,7 @@
|
||||
#include "ftxui/component/terminal_input_parser.hpp"
|
||||
#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(Event, Character) {
|
||||
@ -232,6 +232,8 @@ TEST(Event, UTF8) {
|
||||
}
|
||||
}
|
||||
|
||||
} // 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.
|
||||
|
@ -5,7 +5,7 @@
|
||||
#include "ftxui/screen/color.hpp" // for ftxui
|
||||
#include "ftxui/screen/screen.hpp" // for Screen
|
||||
|
||||
using namespace ftxui;
|
||||
namespace ftxui {
|
||||
|
||||
static void BencharkBasic(benchmark::State& state) {
|
||||
while (state.KeepRunning()) {
|
||||
@ -30,6 +30,8 @@ static void BencharkBasic(benchmark::State& state) {
|
||||
}
|
||||
BENCHMARK(BencharkBasic)->DenseRange(0, 256, 16);
|
||||
|
||||
} // namespace ftxui
|
||||
|
||||
// Copyright 2021 Arthur Sonzogni. All rights reserved.
|
||||
// Use of this source code is governed by the MIT license that can be found in
|
||||
// the LICENSE file.l
|
||||
|
@ -5,8 +5,7 @@
|
||||
#include "ftxui/dom/flexbox_helper.hpp"
|
||||
#include "gtest/gtest_pred_impl.h" // for EXPECT_EQ, Test, TEST
|
||||
|
||||
using namespace ftxui;
|
||||
using namespace ftxui;
|
||||
namespace ftxui {
|
||||
|
||||
TEST(FlexboxHelperTest, BasicRow) {
|
||||
flexbox_helper::Block block_10_5;
|
||||
@ -228,6 +227,8 @@ TEST(FlexboxHelperTest, BasicColumnInversed) {
|
||||
EXPECT_EQ(g.blocks[4].dim_y, 5);
|
||||
}
|
||||
|
||||
} // 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.
|
||||
|
@ -9,7 +9,7 @@
|
||||
#include "ftxui/screen/screen.hpp" // for Screen
|
||||
#include "gtest/gtest_pred_impl.h" // for Test, EXPECT_EQ, TEST
|
||||
|
||||
using namespace ftxui;
|
||||
namespace ftxui {
|
||||
|
||||
TEST(FlexboxTest, BasicRow) {
|
||||
auto root = flexbox(
|
||||
@ -433,6 +433,8 @@ TEST(FlexboxTest, GapY) {
|
||||
" ");
|
||||
}
|
||||
|
||||
} // namespace ftxui
|
||||
|
||||
// Copyright 2021 Arthur Sonzogni. All rights reserved.
|
||||
// Use of this source code is governed by the MIT license that can be found in
|
||||
// the LICENSE file.
|
||||
|
@ -8,8 +8,7 @@
|
||||
#include "ftxui/screen/screen.hpp" // for Screen
|
||||
#include "gtest/gtest_pred_impl.h" // for Test, EXPECT_EQ, TEST
|
||||
|
||||
using namespace ftxui;
|
||||
using namespace ftxui;
|
||||
namespace ftxui {
|
||||
|
||||
TEST(GaugeTest, ZeroHorizontal) {
|
||||
auto root = gauge(0);
|
||||
@ -24,7 +23,11 @@ TEST(GaugeTest, HalfHorizontal) {
|
||||
Screen screen(11, 1);
|
||||
Render(screen, root);
|
||||
|
||||
#if defined(FTXUI_MICROSOFT_TERMINAL_FALLBACK)
|
||||
EXPECT_EQ("█████▌ ", screen.ToString());
|
||||
#else
|
||||
EXPECT_EQ("█████▍ ", screen.ToString());
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(GaugeTest, OneHorizontal) {
|
||||
@ -95,6 +98,8 @@ TEST(GaugeTest, OneVertical) {
|
||||
screen.ToString());
|
||||
}
|
||||
|
||||
} // 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.
|
||||
|
@ -10,7 +10,7 @@
|
||||
#include "ftxui/screen/screen.hpp" // for Screen
|
||||
#include "gtest/gtest_pred_impl.h" // for Test, TEST, EXPECT_EQ
|
||||
|
||||
using namespace ftxui;
|
||||
namespace ftxui {
|
||||
|
||||
namespace {
|
||||
std::string rotate(std::string str) {
|
||||
@ -175,7 +175,7 @@ TEST(GridboxTest, Horizontal_NoFlex_NoFlex_NoFlex) {
|
||||
"012abcABC ", //
|
||||
"012abcABC ", //
|
||||
};
|
||||
for (int i = 0; i < expectations.size(); ++i) {
|
||||
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||
Screen screen(i, 1);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], screen.ToString());
|
||||
@ -203,7 +203,7 @@ TEST(GridboxTest, Vertical_NoFlex_NoFlex_NoFlex) {
|
||||
"012abcABC ", //
|
||||
"012abcABC ", //
|
||||
};
|
||||
for (int i = 0; i < expectations.size(); ++i) {
|
||||
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||
Screen screen(1, i);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
||||
@ -233,7 +233,7 @@ TEST(GridboxTest, Horizontal_FlexGrow_NoFlex_NoFlex) {
|
||||
"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);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], screen.ToString());
|
||||
@ -261,7 +261,7 @@ TEST(GridboxTest, Vertical_FlexGrow_NoFlex_NoFlex) {
|
||||
"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);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
||||
@ -291,7 +291,7 @@ TEST(GridboxTest, Horizontal_NoFlex_FlexGrow_NoFlex) {
|
||||
"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);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], screen.ToString());
|
||||
@ -321,7 +321,7 @@ TEST(GridboxTest, Horizontal_NoFlex_NoFlex_FlexGrow) {
|
||||
"012abcABC ", //
|
||||
"012abcABC ", //
|
||||
};
|
||||
for (int i = 0; i < expectations.size(); ++i) {
|
||||
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||
Screen screen(i, 1);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], screen.ToString());
|
||||
@ -353,7 +353,7 @@ TEST(GridboxTest, Horizontal_FlexGrow_NoFlex_FlexGrow) {
|
||||
"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);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], screen.ToString());
|
||||
@ -387,7 +387,7 @@ TEST(GridboxTest, Horizontal_FlexGrow_FlexGrow_FlexGrow) {
|
||||
"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);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], screen.ToString());
|
||||
@ -419,7 +419,7 @@ TEST(GridboxTest, Horizontal_FlexShrink_NoFlex_NoFlex) {
|
||||
"012abcABC ", //
|
||||
"012abcABC ", //
|
||||
};
|
||||
for (int i = 0; i < expectations.size(); ++i) {
|
||||
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||
Screen screen(i, 1);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], screen.ToString());
|
||||
@ -449,7 +449,7 @@ TEST(GridboxTest, Horizontal_NoFlex_FlexShrink_NoFlex) {
|
||||
"012abcABC ", //
|
||||
"012abcABC ", //
|
||||
};
|
||||
for (int i = 0; i < expectations.size(); ++i) {
|
||||
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||
Screen screen(i, 1);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], screen.ToString());
|
||||
@ -479,7 +479,7 @@ TEST(GridboxTest, Horizontal_NoFlex_NoFlex_FlexShrink) {
|
||||
"012abcABC ", //
|
||||
"012abcABC ", //
|
||||
};
|
||||
for (int i = 0; i < expectations.size(); ++i) {
|
||||
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||
Screen screen(i, 1);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], screen.ToString());
|
||||
@ -508,7 +508,7 @@ TEST(GridboxTest, Horizontal_FlexShrink_NoFlex_FlexShrink) {
|
||||
"012abcABC", //
|
||||
"012abcABC ", //
|
||||
};
|
||||
for (int i = 0; i < expectations.size(); ++i) {
|
||||
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||
Screen screen(i, 1);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], screen.ToString());
|
||||
@ -539,7 +539,7 @@ TEST(GridboxTest, Horizontal_FlexShrink_FlexShrink_FlexShrink) {
|
||||
"012abcABC ", //
|
||||
"012abcABC ", //
|
||||
};
|
||||
for (int i = 0; i < expectations.size(); ++i) {
|
||||
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||
Screen screen(i, 1);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], screen.ToString());
|
||||
@ -570,7 +570,7 @@ TEST(GridboxTest, Horizontal_FlexGrow_NoFlex_FlewShrink) {
|
||||
"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);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], screen.ToString());
|
||||
@ -596,6 +596,8 @@ TEST(GridboxTest, MissingCells) {
|
||||
" ");
|
||||
}
|
||||
|
||||
} // 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.
|
||||
|
@ -33,7 +33,7 @@ TEST(HBoxTest, NoFlex_NoFlex_NoFlex) {
|
||||
"012abcABC ", //
|
||||
"012abcABC ", //
|
||||
};
|
||||
for (int i = 0; i < expectations.size(); ++i) {
|
||||
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||
Screen screen(i, 1);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], screen.ToString());
|
||||
@ -61,7 +61,7 @@ TEST(HBoxTest, FlexGrow_NoFlex_NoFlex) {
|
||||
"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);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], screen.ToString());
|
||||
@ -89,7 +89,7 @@ TEST(HBoxTest, NoFlex_FlexGrow_NoFlex) {
|
||||
"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);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], screen.ToString());
|
||||
@ -117,7 +117,7 @@ TEST(HBoxTest, NoFlex_NoFlex_FlexGrow) {
|
||||
"012abcABC ", //
|
||||
"012abcABC ", //
|
||||
};
|
||||
for (int i = 0; i < expectations.size(); ++i) {
|
||||
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||
Screen screen(i, 1);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], screen.ToString());
|
||||
@ -147,7 +147,7 @@ TEST(HBoxTest, FlexGrow_NoFlex_FlexGrow) {
|
||||
"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);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], screen.ToString());
|
||||
@ -179,7 +179,7 @@ TEST(HBoxTest, FlexGrow_FlexGrow_FlexGrow) {
|
||||
"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);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], screen.ToString());
|
||||
@ -209,7 +209,7 @@ TEST(HBoxTest, FlexShrink_NoFlex_NoFlex) {
|
||||
"012abcABC ", //
|
||||
"012abcABC ", //
|
||||
};
|
||||
for (int i = 0; i < expectations.size(); ++i) {
|
||||
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||
Screen screen(i, 1);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], screen.ToString());
|
||||
@ -237,7 +237,7 @@ TEST(HBoxTest, NoFlex_FlexShrink_NoFlex) {
|
||||
"012abcABC ", //
|
||||
"012abcABC ", //
|
||||
};
|
||||
for (int i = 0; i < expectations.size(); ++i) {
|
||||
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||
Screen screen(i, 1);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], screen.ToString());
|
||||
@ -265,7 +265,7 @@ TEST(HBoxTest, NoFlex_NoFlex_FlexShrink) {
|
||||
"012abcABC ", //
|
||||
"012abcABC ", //
|
||||
};
|
||||
for (int i = 0; i < expectations.size(); ++i) {
|
||||
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||
Screen screen(i, 1);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], screen.ToString());
|
||||
@ -292,7 +292,7 @@ TEST(HBoxTest, FlexShrink_NoFlex_FlexShrink) {
|
||||
"012abcABC", //
|
||||
"012abcABC ", //
|
||||
};
|
||||
for (int i = 0; i < expectations.size(); ++i) {
|
||||
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||
Screen screen(i, 1);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], screen.ToString());
|
||||
@ -321,7 +321,7 @@ TEST(HBoxTest, FlexShrink_FlexShrink_FlexShrink) {
|
||||
"012abcABC ", //
|
||||
"012abcABC ", //
|
||||
};
|
||||
for (int i = 0; i < expectations.size(); ++i) {
|
||||
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||
Screen screen(i, 1);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], screen.ToString());
|
||||
@ -350,7 +350,7 @@ TEST(HBoxTest, FlexGrow_NoFlex_FlewShrink) {
|
||||
"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);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], screen.ToString());
|
||||
|
@ -9,7 +9,7 @@
|
||||
#include "ftxui/screen/screen.hpp" // for Screen
|
||||
#include "gtest/gtest_pred_impl.h" // for Test, EXPECT_EQ, TEST
|
||||
|
||||
using namespace ftxui;
|
||||
namespace ftxui {
|
||||
|
||||
TEST(TableTest, Empty) {
|
||||
auto table = Table();
|
||||
@ -711,6 +711,8 @@ TEST(TableTest, RowFlexTwo) {
|
||||
screen.ToString());
|
||||
}
|
||||
|
||||
} // namespace ftxui
|
||||
|
||||
// Copyright 2021 Arthur Sonzogni. All rights reserved.
|
||||
// Use of this source code is governed by the MIT license that can be found in
|
||||
// the LICENSE file.
|
||||
|
@ -8,7 +8,7 @@
|
||||
#include "ftxui/screen/screen.hpp" // for Screen
|
||||
#include "gtest/gtest_pred_impl.h" // for Test, EXPECT_EQ, TEST
|
||||
|
||||
using namespace ftxui;
|
||||
namespace ftxui {
|
||||
|
||||
TEST(TextTest, ScreenHeightSmaller) {
|
||||
auto element = text("test");
|
||||
@ -103,6 +103,8 @@ TEST(TextTest, CombiningCharacters) {
|
||||
EXPECT_EQ(t, screen.ToString());
|
||||
}
|
||||
|
||||
} // 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.
|
||||
|
@ -10,7 +10,8 @@
|
||||
#include "ftxui/screen/screen.hpp" // for Screen
|
||||
#include "gtest/gtest_pred_impl.h" // for Test, EXPECT_EQ, TEST
|
||||
|
||||
using namespace ftxui;
|
||||
namespace ftxui {
|
||||
namespace {
|
||||
|
||||
std::string rotate(std::string str) {
|
||||
str.erase(std::remove(str.begin(), str.end(), '\r'), str.end());
|
||||
@ -18,6 +19,8 @@ std::string rotate(std::string str) {
|
||||
return str;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
TEST(VBoxText, NoFlex_NoFlex_NoFlex) {
|
||||
auto root = vbox({
|
||||
vtext("012"),
|
||||
@ -39,7 +42,7 @@ TEST(VBoxText, NoFlex_NoFlex_NoFlex) {
|
||||
"012abcABC ", //
|
||||
"012abcABC ", //
|
||||
};
|
||||
for (int i = 0; i < expectations.size(); ++i) {
|
||||
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||
Screen screen(1, i);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
||||
@ -67,7 +70,7 @@ TEST(VBoxText, FlexGrow_NoFlex_NoFlex) {
|
||||
"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);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
||||
@ -95,7 +98,7 @@ TEST(VBoxText, NoFlex_FlexGrow_NoFlex) {
|
||||
"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);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
||||
@ -123,7 +126,7 @@ TEST(VBoxText, NoFlex_NoFlex_FlexGrow) {
|
||||
"012abcABC ", //
|
||||
"012abcABC ", //
|
||||
};
|
||||
for (int i = 0; i < expectations.size(); ++i) {
|
||||
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||
Screen screen(1, i);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
||||
@ -153,7 +156,7 @@ TEST(VBoxText, FlexGrow_NoFlex_FlexGrow) {
|
||||
"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);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
||||
@ -185,7 +188,7 @@ TEST(VBoxText, FlexGrow_FlexGrow_FlexGrow) {
|
||||
"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);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
||||
@ -215,7 +218,7 @@ TEST(VBoxText, FlexShrink_NoFlex_NoFlex) {
|
||||
"012abcABC ", //
|
||||
"012abcABC ", //
|
||||
};
|
||||
for (int i = 0; i < expectations.size(); ++i) {
|
||||
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||
Screen screen(1, i);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
||||
@ -243,7 +246,7 @@ TEST(VBoxText, NoFlex_FlexShrink_NoFlex) {
|
||||
"012abcABC ", //
|
||||
"012abcABC ", //
|
||||
};
|
||||
for (int i = 0; i < expectations.size(); ++i) {
|
||||
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||
Screen screen(1, i);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
||||
@ -271,7 +274,7 @@ TEST(VBoxText, NoFlex_NoFlex_FlexShrink) {
|
||||
"012abcABC ", //
|
||||
"012abcABC ", //
|
||||
};
|
||||
for (int i = 0; i < expectations.size(); ++i) {
|
||||
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||
Screen screen(1, i);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
||||
@ -298,7 +301,7 @@ TEST(VBoxText, FlexShrink_NoFlex_FlexShrink) {
|
||||
"012abcABC", //
|
||||
"012abcABC ", //
|
||||
};
|
||||
for (int i = 0; i < expectations.size(); ++i) {
|
||||
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||
Screen screen(1, i);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
||||
@ -327,7 +330,7 @@ TEST(VBoxText, FlexShrink_FlexShrink_FlexShrink) {
|
||||
"012abcABC ", //
|
||||
"012abcABC ", //
|
||||
};
|
||||
for (int i = 0; i < expectations.size(); ++i) {
|
||||
for (size_t i = 0; i < expectations.size(); ++i) {
|
||||
Screen screen(1, i);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
||||
@ -356,13 +359,15 @@ TEST(VBoxText, FlexGrow_NoFlex_FlewShrink) {
|
||||
"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);
|
||||
Render(screen, root);
|
||||
EXPECT_EQ(expectations[i], rotate(screen.ToString()));
|
||||
}
|
||||
}
|
||||
|
||||
} // 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.
|
||||
|
@ -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 <map> // for _Rb_tree_const_iterator, map, operator!=, operator==
|
||||
#include <memory> // for allocator
|
||||
|
@ -5,7 +5,7 @@
|
||||
#include "ftxui/screen/string.hpp"
|
||||
#include "gtest/gtest_pred_impl.h" // for EXPECT_EQ, Test, TEST
|
||||
|
||||
using namespace ftxui;
|
||||
namespace ftxui {
|
||||
|
||||
TEST(StringTest, StringWidth) {
|
||||
// Basic:
|
||||
@ -120,6 +120,7 @@ TEST(StringTest, CellToGlyphIndex) {
|
||||
EXPECT_EQ(combining[2], 2);
|
||||
}
|
||||
|
||||
}
|
||||
// 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.
|
||||
|
Loading…
Reference in New Issue
Block a user