Add code coverage support. (#378)

This commit is contained in:
Arthur Sonzogni 2022-04-17 15:47:20 +02:00 committed by GitHub
parent b2896aba49
commit 764c24ef40
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
26 changed files with 206 additions and 96 deletions

View File

@ -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 }}

View File

@ -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()

View File

@ -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

View 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()

View File

@ -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)

View File

@ -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:

View File

@ -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) {

View File

@ -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.

View 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.

View 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.

View 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.

View 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.

View 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.

View 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.

View 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.

View 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

View File

@ -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.

View 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.

View 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.

View 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.

View 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());

View 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(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.

View 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.

View 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.

View 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

View File

@ -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.