Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions rawterm/extras/border.h
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ namespace rawterm {

// Top line
const std::size_t post_title_len =
static_cast<std::size_t>(longest_txt + border_padding + 2) - trunc_title.size() - 1;
static_cast<std::size_t>(size.width() - border_padding) - trunc_title.size();
if (border_char.has_value()) {
render.at(0) = border_char.value() + trunc_title;
render.at(0) += std::string(post_title_len, border_char.value());
Expand All @@ -104,7 +104,8 @@ namespace rawterm {
if (line.size() > static_cast<std::size_t>(longest_txt)) {
drawable_text = line.substr(0, static_cast<std::size_t>(longest_txt));
}
const std::size_t line_buffer = longest_txt - drawable_text.size();
const std::size_t line_buffer =
size.width() - drawable_text.size() - border_padding - 2;
rendered_line += std::string(border_padding, ' ') + drawable_text +
std::string(border_padding + line_buffer, ' ');

Expand All @@ -123,7 +124,7 @@ namespace rawterm {
btm = std::string(render.at(0).size(), border_char.value());
} else {
btm = CORNER_BL;
for (std::size_t i = 0; i <= longest_txt + border_padding; i++) {
for (std::size_t i = 0; i <= size.width() - border_padding - 1; i++) {
btm += HORIZONTAL_BAR;
}
btm += CORNER_BR;
Expand Down
16 changes: 8 additions & 8 deletions tests/border_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ boost::ut::suite<"Border"> border_suite = [] {
"placerat quam finibus sollicitudin. Nullam condimentum tellus ante"};

"render without settings"_test = [&b, &text] {
std::vector<std::string> expected = {"┌────────┐", "│Lorem i│", "│consect│",
"│Morbi i│", "│placera│", "└────────┘"};
std::vector<std::string> expected = {"┌────────┐", "│Lorem i│", "│consect│",
"│Morbi i│", "│placera│", "└────────┘"};

auto rendered = b.render(&text);
expect(rendered == expected);
Expand All @@ -32,14 +32,14 @@ boost::ut::suite<"Border"> border_suite = [] {
};

"render with padding"_test = [&b, &text] {
std::vector<std::string> expected = {"┌────────┐", "│ Lorem i │", "│ consect │",
"│ Morbi i │", "│ placera │", "└────────┘"};
std::vector<std::string> expected = {"┌────────┐", "│ Lorem i│", "│ consect│",
"│ Morbi i│", "│ placera│", "└────────┘"};

auto rendered = b.render(&text);
expect(rendered == expected);

// either end is a box drawing char, which is 3 bytes
expect(rendered.at(1).size() == 15);
expect(rendered.at(1).size() == 14);
};

"Set title"_test = [&b, &b2] {
Expand All @@ -57,14 +57,14 @@ boost::ut::suite<"Border"> border_suite = [] {

"render with padding and title"_test = [&b, &text] {
auto rendered = b.render(&text);
std::string expected = "┌Super...┐";
std::string expected = "┌Super...┐";

expect(rendered.at(0) == expected);
};

"render with title"_test = [&b2, &text] {
auto rendered = b2.render(&text);
std::string expected = "#Test####";
std::string expected = "#Test#####";

expect(rendered.at(0) == expected);
};
Expand All @@ -81,7 +81,7 @@ boost::ut::suite<"Border"> border_suite = [] {

"render with padding, title, color"_test = [&b, &text] {
auto rendered = b.render(&text);
std::string expected = "┌Super...┐";
std::string expected = "┌Super...┐";

expect(rendered.at(0) == expected) << rendered.at(0);
};
Expand Down
Loading