FTXUI/src/ftxui/dom/hbox_test.cpp

362 lines
8.6 KiB
C++
Raw Normal View History

2022-08-07 20:44:33 +08:00
#include <gtest/gtest.h>
#include <stddef.h> // for size_t
#include <string> // for string, allocator
#include <vector> // for vector
2021-05-02 02:40:35 +08:00
2022-04-28 16:43:31 +08:00
#include "ftxui/dom/elements.hpp" // for text, operator|, hbox, Element, flex_grow, flex_shrink
2022-01-07 18:03:54 +08:00
#include "ftxui/dom/node.hpp" // for Render
#include "ftxui/screen/color.hpp" // for ftxui
#include "ftxui/screen/screen.hpp" // for Screen
2018-09-18 14:48:40 +08:00
using namespace ftxui;
using namespace ftxui;
2018-09-18 14:48:40 +08:00
TEST(HBoxTest, NoFlex_NoFlex_NoFlex) {
auto root = hbox({
text("012"),
text("abc"),
text("ABC"),
});
2018-09-18 14:48:40 +08:00
std::vector<std::string> expectations = {
"", //
"0", //
"0a", //
"0aA", //
"01aA", //
"01abA", //
"01abAB", //
"012abAB", //
"012abcAB", //
"012abcABC", //
"012abcABC ", //
"012abcABC ", //
};
2022-04-17 21:47:20 +08:00
for (size_t i = 0; i < expectations.size(); ++i) {
Screen screen(i, 1);
Render(screen, root);
EXPECT_EQ(expectations[i], screen.ToString());
}
2018-09-18 14:48:40 +08:00
}
TEST(HBoxTest, FlexGrow_NoFlex_NoFlex) {
auto root = hbox({
text("012") | flex_grow,
text("abc"),
text("ABC"),
});
2018-09-18 14:48:40 +08:00
std::vector<std::string> expectations = {
"", //
"0", //
"0a", //
"0aA", //
"01aA", //
"01abA", //
"01abAB", //
"012abAB", //
"012abcAB", //
"012abcABC", //
"012 abcABC", //
"012 abcABC", //
};
2022-04-17 21:47:20 +08:00
for (size_t i = 0; i < expectations.size(); ++i) {
Screen screen(i, 1);
Render(screen, root);
EXPECT_EQ(expectations[i], screen.ToString());
}
2018-09-18 14:48:40 +08:00
}
TEST(HBoxTest, NoFlex_FlexGrow_NoFlex) {
auto root = hbox({
text("012"),
text("abc") | flex_grow,
text("ABC"),
});
2018-09-18 14:48:40 +08:00
std::vector<std::string> expectations = {
"", //
"0", //
"0a", //
"0aA", //
"01aA", //
"01abA", //
"01abAB", //
"012abAB", //
"012abcAB", //
"012abcABC", //
"012abc ABC", //
"012abc ABC", //
};
2022-04-17 21:47:20 +08:00
for (size_t i = 0; i < expectations.size(); ++i) {
Screen screen(i, 1);
Render(screen, root);
EXPECT_EQ(expectations[i], screen.ToString());
}
2018-09-18 14:48:40 +08:00
}
TEST(HBoxTest, NoFlex_NoFlex_FlexGrow) {
auto root = hbox({
text("012"),
text("abc"),
text("ABC") | flex_grow,
});
2018-09-18 14:48:40 +08:00
std::vector<std::string> expectations = {
"", //
"0", //
"0a", //
"0aA", //
"01aA", //
"01abA", //
"01abAB", //
"012abAB", //
"012abcAB", //
"012abcABC", //
"012abcABC ", //
"012abcABC ", //
};
2022-04-17 21:47:20 +08:00
for (size_t i = 0; i < expectations.size(); ++i) {
Screen screen(i, 1);
Render(screen, root);
EXPECT_EQ(expectations[i], screen.ToString());
}
2018-09-18 14:48:40 +08:00
}
TEST(HBoxTest, FlexGrow_NoFlex_FlexGrow) {
auto root = hbox({
text("012") | flex_grow,
text("abc"),
text("ABC") | flex_grow,
});
std::vector<std::string> expectations = {
"", //
"0", //
"0a", //
"0aA", //
"01aA", //
"01abA", //
"01abAB", //
"012abAB", //
"012abcAB", //
"012abcABC", //
"012abcABC ", //
"012 abcABC ", //
"012 abcABC ", //
"012 abcABC ", //
};
2022-04-17 21:47:20 +08:00
for (size_t i = 0; i < expectations.size(); ++i) {
Screen screen(i, 1);
Render(screen, root);
EXPECT_EQ(expectations[i], screen.ToString());
}
}
TEST(HBoxTest, FlexGrow_FlexGrow_FlexGrow) {
auto root = hbox({
text("012") | flex_grow,
text("abc") | flex_grow,
text("ABC") | flex_grow,
});
std::vector<std::string> expectations = {
"", //
"0", //
"0a", //
"0aA", //
"01aA", //
"01abA", //
"01abAB", //
"012abAB", //
"012abcAB", //
"012abcABC", //
"012abcABC ", //
"012abc ABC ", //
"012 abc ABC ", //
"012 abc ABC ", //
"012 abc ABC ", //
"012 abc ABC ", //
};
2022-04-17 21:47:20 +08:00
for (size_t i = 0; i < expectations.size(); ++i) {
Screen screen(i, 1);
Render(screen, root);
EXPECT_EQ(expectations[i], screen.ToString());
}
}
// ------
TEST(HBoxTest, FlexShrink_NoFlex_NoFlex) {
auto root = hbox({
text("012") | flex_shrink,
text("abc"),
text("ABC"),
});
std::vector<std::string> expectations = {
"", //
"a", //
"aA", //
"abA", //
"abAB", //
"abcAB", //
"abcABC", //
"0abcABC", //
"01abcABC", //
"012abcABC", //
"012abcABC ", //
"012abcABC ", //
};
2022-04-17 21:47:20 +08:00
for (size_t i = 0; i < expectations.size(); ++i) {
Screen screen(i, 1);
Render(screen, root);
EXPECT_EQ(expectations[i], screen.ToString());
}
2018-09-18 14:48:40 +08:00
}
TEST(HBoxTest, NoFlex_FlexShrink_NoFlex) {
auto root = hbox({
text("012"),
text("abc") | flex_shrink,
text("ABC"),
});
2018-09-18 14:48:40 +08:00
std::vector<std::string> expectations = {
"", //
"0", //
"0A", //
"01A", //
"01AB", //
"012AB", //
"012ABC", //
"012aABC", //
"012abABC", //
"012abcABC", //
"012abcABC ", //
"012abcABC ", //
};
2022-04-17 21:47:20 +08:00
for (size_t i = 0; i < expectations.size(); ++i) {
Screen screen(i, 1);
Render(screen, root);
EXPECT_EQ(expectations[i], screen.ToString());
}
2018-09-18 14:48:40 +08:00
}
TEST(HBoxTest, NoFlex_NoFlex_FlexShrink) {
auto root = hbox({
text("012"),
text("abc"),
text("ABC") | flex_shrink,
});
2018-09-18 14:48:40 +08:00
std::vector<std::string> expectations = {
"", //
"0", //
"0a", //
"01a", //
"01ab", //
"012ab", //
"012abc", //
"012abcA", //
"012abcAB", //
"012abcABC", //
"012abcABC ", //
"012abcABC ", //
};
2022-04-17 21:47:20 +08:00
for (size_t i = 0; i < expectations.size(); ++i) {
Screen screen(i, 1);
Render(screen, root);
EXPECT_EQ(expectations[i], screen.ToString());
}
2018-09-18 14:48:40 +08:00
}
TEST(HBoxTest, FlexShrink_NoFlex_FlexShrink) {
auto root = hbox({
text("012") | flex_shrink,
text("abc"),
text("ABC") | flex_shrink,
});
2018-09-18 14:48:40 +08:00
std::vector<std::string> expectations = {
"", //
"a", //
"ab", //
"abc", //
"0abc", //
"0abcA", //
"01abcA", //
"01abcAB", //
"012abcAB", //
"012abcABC", //
"012abcABC ", //
};
2022-04-17 21:47:20 +08:00
for (size_t i = 0; i < expectations.size(); ++i) {
Screen screen(i, 1);
Render(screen, root);
EXPECT_EQ(expectations[i], screen.ToString());
}
2018-09-18 14:48:40 +08:00
}
TEST(HBoxTest, FlexShrink_FlexShrink_FlexShrink) {
auto root = hbox({
text("012") | flex_shrink,
text("abc") | flex_shrink,
text("ABC") | flex_shrink,
});
2018-09-18 14:48:40 +08:00
std::vector<std::string> expectations = {
"", //
"0", //
"0a", //
"0aA", //
"01aA", //
"01abA", //
"01abAB", //
"012abAB", //
"012abcAB", //
"012abcABC", //
"012abcABC ", //
"012abcABC ", //
"012abcABC ", //
};
2022-04-17 21:47:20 +08:00
for (size_t i = 0; i < expectations.size(); ++i) {
Screen screen(i, 1);
Render(screen, root);
EXPECT_EQ(expectations[i], screen.ToString());
}
2018-09-18 14:48:40 +08:00
}
TEST(HBoxTest, FlexGrow_NoFlex_FlewShrink) {
auto root = hbox({
text("012") | flex_grow,
text("abc"),
text("ABC") | flex_shrink,
});
2018-09-18 14:48:40 +08:00
std::vector<std::string> expectations = {
"", //
"0", //
"0a", //
"01a", //
"01ab", //
"012ab", //
"012abc", //
"012abcA", //
"012abcAB", //
"012abcABC", //
"012 abcABC", //
"012 abcABC", //
"012 abcABC", //
};
2022-04-17 21:47:20 +08:00
for (size_t i = 0; i < expectations.size(); ++i) {
Screen screen(i, 1);
Render(screen, root);
EXPECT_EQ(expectations[i], screen.ToString());
}
2018-09-18 14:48:40 +08:00
}
// 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.