mirror of
https://github.com/ArthurSonzogni/FTXUI.git
synced 2025-05-06 07:33:07 +08:00
235 lines
6.3 KiB
C++
235 lines
6.3 KiB
C++
#include <gtest/gtest-message.h> // for Message
|
|
#include <gtest/gtest-test-part.h> // for TestPartResult, SuiteApiResolver, TestFactoryImpl
|
|
#include <memory> // for allocator_traits<>::value_type
|
|
|
|
#include "ftxui/dom/flexbox_helper.hpp"
|
|
#include "gtest/gtest_pred_impl.h" // for EXPECT_EQ, Test, TEST
|
|
|
|
namespace ftxui {
|
|
|
|
TEST(FlexboxHelperTest, BasicRow) {
|
|
flexbox_helper::Block block_10_5;
|
|
block_10_5.min_size_x = 10;
|
|
block_10_5.min_size_y = 5;
|
|
|
|
flexbox_helper::Global g;
|
|
g.blocks = {
|
|
block_10_5, block_10_5, block_10_5, block_10_5, block_10_5,
|
|
};
|
|
|
|
g.size_x = 32;
|
|
g.size_y = 16;
|
|
g.config = FlexboxConfig().Set(FlexboxConfig::Direction::Row);
|
|
flexbox_helper::Compute(g);
|
|
|
|
EXPECT_EQ(g.blocks.size(), 5u);
|
|
|
|
EXPECT_EQ(g.blocks[0].line, 0);
|
|
EXPECT_EQ(g.blocks[1].line, 0);
|
|
EXPECT_EQ(g.blocks[2].line, 0);
|
|
EXPECT_EQ(g.blocks[3].line, 1);
|
|
EXPECT_EQ(g.blocks[4].line, 1);
|
|
|
|
EXPECT_EQ(g.blocks[0].line_position, 0);
|
|
EXPECT_EQ(g.blocks[1].line_position, 1);
|
|
EXPECT_EQ(g.blocks[2].line_position, 2);
|
|
EXPECT_EQ(g.blocks[3].line_position, 0);
|
|
EXPECT_EQ(g.blocks[4].line_position, 1);
|
|
|
|
EXPECT_EQ(g.blocks[0].x, 0);
|
|
EXPECT_EQ(g.blocks[0].y, 0);
|
|
EXPECT_EQ(g.blocks[0].dim_x, 10);
|
|
EXPECT_EQ(g.blocks[0].dim_y, 5);
|
|
|
|
EXPECT_EQ(g.blocks[1].x, 10);
|
|
EXPECT_EQ(g.blocks[1].y, 0);
|
|
EXPECT_EQ(g.blocks[1].dim_x, 10);
|
|
EXPECT_EQ(g.blocks[1].dim_y, 5);
|
|
|
|
EXPECT_EQ(g.blocks[2].x, 20);
|
|
EXPECT_EQ(g.blocks[2].y, 0);
|
|
EXPECT_EQ(g.blocks[2].dim_x, 10);
|
|
EXPECT_EQ(g.blocks[2].dim_y, 5);
|
|
|
|
EXPECT_EQ(g.blocks[3].x, 0);
|
|
EXPECT_EQ(g.blocks[3].y, 5);
|
|
EXPECT_EQ(g.blocks[3].dim_x, 10);
|
|
EXPECT_EQ(g.blocks[3].dim_y, 5);
|
|
|
|
EXPECT_EQ(g.blocks[4].x, 10);
|
|
EXPECT_EQ(g.blocks[4].y, 5);
|
|
EXPECT_EQ(g.blocks[4].dim_x, 10);
|
|
EXPECT_EQ(g.blocks[4].dim_y, 5);
|
|
}
|
|
|
|
TEST(FlexboxHelperTest, BasicColumn) {
|
|
flexbox_helper::Block block_10_5;
|
|
block_10_5.min_size_x = 10;
|
|
block_10_5.min_size_y = 5;
|
|
|
|
flexbox_helper::Global g;
|
|
g.blocks = {
|
|
block_10_5, block_10_5, block_10_5, block_10_5, block_10_5,
|
|
};
|
|
|
|
g.size_x = 32;
|
|
g.size_y = 16;
|
|
g.config = FlexboxConfig().Set(FlexboxConfig::Direction::Column);
|
|
flexbox_helper::Compute(g);
|
|
|
|
EXPECT_EQ(g.blocks.size(), 5u);
|
|
|
|
EXPECT_EQ(g.blocks[0].line, 0);
|
|
EXPECT_EQ(g.blocks[1].line, 0);
|
|
EXPECT_EQ(g.blocks[2].line, 0);
|
|
EXPECT_EQ(g.blocks[3].line, 1);
|
|
EXPECT_EQ(g.blocks[4].line, 1);
|
|
|
|
EXPECT_EQ(g.blocks[0].line_position, 0);
|
|
EXPECT_EQ(g.blocks[1].line_position, 1);
|
|
EXPECT_EQ(g.blocks[2].line_position, 2);
|
|
EXPECT_EQ(g.blocks[3].line_position, 0);
|
|
EXPECT_EQ(g.blocks[4].line_position, 1);
|
|
|
|
EXPECT_EQ(g.blocks[0].x, 0);
|
|
EXPECT_EQ(g.blocks[0].y, 0);
|
|
EXPECT_EQ(g.blocks[0].dim_x, 10);
|
|
EXPECT_EQ(g.blocks[0].dim_y, 5);
|
|
|
|
EXPECT_EQ(g.blocks[1].x, 0);
|
|
EXPECT_EQ(g.blocks[1].y, 5);
|
|
EXPECT_EQ(g.blocks[1].dim_x, 10);
|
|
EXPECT_EQ(g.blocks[1].dim_y, 5);
|
|
|
|
EXPECT_EQ(g.blocks[2].x, 0);
|
|
EXPECT_EQ(g.blocks[2].y, 10);
|
|
EXPECT_EQ(g.blocks[2].dim_x, 10);
|
|
EXPECT_EQ(g.blocks[2].dim_y, 5);
|
|
|
|
EXPECT_EQ(g.blocks[3].x, 10);
|
|
EXPECT_EQ(g.blocks[3].y, 0);
|
|
EXPECT_EQ(g.blocks[3].dim_x, 10);
|
|
EXPECT_EQ(g.blocks[3].dim_y, 5);
|
|
|
|
EXPECT_EQ(g.blocks[4].x, 10);
|
|
EXPECT_EQ(g.blocks[4].y, 5);
|
|
EXPECT_EQ(g.blocks[4].dim_x, 10);
|
|
EXPECT_EQ(g.blocks[4].dim_y, 5);
|
|
}
|
|
|
|
TEST(FlexboxHelperTest, BasicRowInversed) {
|
|
flexbox_helper::Block block_10_5;
|
|
block_10_5.min_size_x = 10;
|
|
block_10_5.min_size_y = 5;
|
|
|
|
flexbox_helper::Global g;
|
|
g.blocks = {
|
|
block_10_5, block_10_5, block_10_5, block_10_5, block_10_5,
|
|
};
|
|
|
|
g.size_x = 32;
|
|
g.size_y = 16;
|
|
g.config = FlexboxConfig().Set(FlexboxConfig::Direction::RowInversed);
|
|
flexbox_helper::Compute(g);
|
|
|
|
EXPECT_EQ(g.blocks.size(), 5u);
|
|
|
|
EXPECT_EQ(g.blocks[0].line, 0);
|
|
EXPECT_EQ(g.blocks[1].line, 0);
|
|
EXPECT_EQ(g.blocks[2].line, 0);
|
|
EXPECT_EQ(g.blocks[3].line, 1);
|
|
EXPECT_EQ(g.blocks[4].line, 1);
|
|
|
|
EXPECT_EQ(g.blocks[0].line_position, 0);
|
|
EXPECT_EQ(g.blocks[1].line_position, 1);
|
|
EXPECT_EQ(g.blocks[2].line_position, 2);
|
|
EXPECT_EQ(g.blocks[3].line_position, 0);
|
|
EXPECT_EQ(g.blocks[4].line_position, 1);
|
|
|
|
EXPECT_EQ(g.blocks[0].x, 22);
|
|
EXPECT_EQ(g.blocks[0].y, 0);
|
|
EXPECT_EQ(g.blocks[0].dim_x, 10);
|
|
EXPECT_EQ(g.blocks[0].dim_y, 5);
|
|
|
|
EXPECT_EQ(g.blocks[1].x, 12);
|
|
EXPECT_EQ(g.blocks[1].y, 0);
|
|
EXPECT_EQ(g.blocks[1].dim_x, 10);
|
|
EXPECT_EQ(g.blocks[1].dim_y, 5);
|
|
|
|
EXPECT_EQ(g.blocks[2].x, 2);
|
|
EXPECT_EQ(g.blocks[2].y, 0);
|
|
EXPECT_EQ(g.blocks[2].dim_x, 10);
|
|
EXPECT_EQ(g.blocks[2].dim_y, 5);
|
|
|
|
EXPECT_EQ(g.blocks[3].x, 22);
|
|
EXPECT_EQ(g.blocks[3].y, 5);
|
|
EXPECT_EQ(g.blocks[3].dim_x, 10);
|
|
EXPECT_EQ(g.blocks[3].dim_y, 5);
|
|
|
|
EXPECT_EQ(g.blocks[4].x, 12);
|
|
EXPECT_EQ(g.blocks[4].y, 5);
|
|
EXPECT_EQ(g.blocks[4].dim_x, 10);
|
|
EXPECT_EQ(g.blocks[4].dim_y, 5);
|
|
}
|
|
|
|
TEST(FlexboxHelperTest, BasicColumnInversed) {
|
|
flexbox_helper::Block block_10_5;
|
|
block_10_5.min_size_x = 10;
|
|
block_10_5.min_size_y = 5;
|
|
|
|
flexbox_helper::Global g;
|
|
g.blocks = {
|
|
block_10_5, block_10_5, block_10_5, block_10_5, block_10_5,
|
|
};
|
|
|
|
g.size_x = 32;
|
|
g.size_y = 16;
|
|
g.config = FlexboxConfig().Set(FlexboxConfig::Direction::ColumnInversed);
|
|
flexbox_helper::Compute(g);
|
|
|
|
EXPECT_EQ(g.blocks.size(), 5u);
|
|
|
|
EXPECT_EQ(g.blocks[0].line, 0);
|
|
EXPECT_EQ(g.blocks[1].line, 0);
|
|
EXPECT_EQ(g.blocks[2].line, 0);
|
|
EXPECT_EQ(g.blocks[3].line, 1);
|
|
EXPECT_EQ(g.blocks[4].line, 1);
|
|
|
|
EXPECT_EQ(g.blocks[0].line_position, 0);
|
|
EXPECT_EQ(g.blocks[1].line_position, 1);
|
|
EXPECT_EQ(g.blocks[2].line_position, 2);
|
|
EXPECT_EQ(g.blocks[3].line_position, 0);
|
|
EXPECT_EQ(g.blocks[4].line_position, 1);
|
|
|
|
EXPECT_EQ(g.blocks[0].x, 0);
|
|
EXPECT_EQ(g.blocks[0].y, 11);
|
|
EXPECT_EQ(g.blocks[0].dim_x, 10);
|
|
EXPECT_EQ(g.blocks[0].dim_y, 5);
|
|
|
|
EXPECT_EQ(g.blocks[1].x, 0);
|
|
EXPECT_EQ(g.blocks[1].y, 6);
|
|
EXPECT_EQ(g.blocks[1].dim_x, 10);
|
|
EXPECT_EQ(g.blocks[1].dim_y, 5);
|
|
|
|
EXPECT_EQ(g.blocks[2].x, 0);
|
|
EXPECT_EQ(g.blocks[2].y, 1);
|
|
EXPECT_EQ(g.blocks[2].dim_x, 10);
|
|
EXPECT_EQ(g.blocks[2].dim_y, 5);
|
|
|
|
EXPECT_EQ(g.blocks[3].x, 10);
|
|
EXPECT_EQ(g.blocks[3].y, 11);
|
|
EXPECT_EQ(g.blocks[3].dim_x, 10);
|
|
EXPECT_EQ(g.blocks[3].dim_y, 5);
|
|
|
|
EXPECT_EQ(g.blocks[4].x, 10);
|
|
EXPECT_EQ(g.blocks[4].y, 6);
|
|
EXPECT_EQ(g.blocks[4].dim_x, 10);
|
|
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.
|