diff --git a/approvaltests-tests/src/test/java/org/approvaltests/TableTest.java b/approvaltests-tests/src/test/java/org/approvaltests/TableTest.java index 15fd21b01..27e1bb79a 100644 --- a/approvaltests-tests/src/test/java/org/approvaltests/TableTest.java +++ b/approvaltests-tests/src/test/java/org/approvaltests/TableTest.java @@ -15,6 +15,14 @@ void abilityModifier() Approvals.verify(table); } @Test + void veryLongHeaders() + { + Integer[] inputs = Range.get(1, 2); + VerifiableMarkdownTable table = VerifiableMarkdownTable.create(inputs, a -> getModifier(a), + "The name is very long and it is a header", "Modifier"); + Approvals.verify(table); + } + @Test void differentCases() { // begin-snippet: markdown_table_example diff --git a/approvaltests-tests/src/test/java/org/approvaltests/TableTest.veryLongHeaders.approved.md b/approvaltests-tests/src/test/java/org/approvaltests/TableTest.veryLongHeaders.approved.md new file mode 100644 index 000000000..fa164a013 --- /dev/null +++ b/approvaltests-tests/src/test/java/org/approvaltests/TableTest.veryLongHeaders.approved.md @@ -0,0 +1,4 @@ +| The name is very long and it is a header | Modifier | +|------------------------------------------|----------| +| 1 | -5 | +| 2 | -4 | diff --git a/approvaltests-util-tests/src/test/java/com/spun/util/StringUtilsTest.java b/approvaltests-util-tests/src/test/java/com/spun/util/StringUtilsTest.java index 0b34ddfbe..29f578656 100644 --- a/approvaltests-util-tests/src/test/java/com/spun/util/StringUtilsTest.java +++ b/approvaltests-util-tests/src/test/java/com/spun/util/StringUtilsTest.java @@ -142,4 +142,14 @@ public void testSplitting() ParseInput.from(expected).withTypes(String.class, String.class) .verifyAll((i, p) -> Arrays.toString(StringUtils.split(i, p))); } + @Test + @UseReporter(AutoApproveReporter.class) + public void testRepeating() + { + var expected = """ + Hello, 3 -> HelloHelloHello + -, 56 -> -------------------------------------------------------- + """; + ParseInput.from(expected).withTypes(String.class, Integer.class).verifyAll((s, i) -> StringUtils.repeat(s, i)); + } } \ No newline at end of file diff --git a/approvaltests-util/src/main/java/com/spun/util/StringUtils.java b/approvaltests-util/src/main/java/com/spun/util/StringUtils.java index e6f1b20a7..cdad1e5f0 100644 --- a/approvaltests-util/src/main/java/com/spun/util/StringUtils.java +++ b/approvaltests-util/src/main/java/com/spun/util/StringUtils.java @@ -621,4 +621,8 @@ public static String removeFromEnd(String contents, int length) { return contents.substring(0, contents.length() - length); } + public static String repeat(String string, int times) + { + return new String(new char[times]).replace("\0", string); + } } diff --git a/approvaltests-util/src/main/java/com/spun/util/markdown/table/MarkdownTableHeader.java b/approvaltests-util/src/main/java/com/spun/util/markdown/table/MarkdownTableHeader.java index 1d6bb1d52..67e73e255 100644 --- a/approvaltests-util/src/main/java/com/spun/util/markdown/table/MarkdownTableHeader.java +++ b/approvaltests-util/src/main/java/com/spun/util/markdown/table/MarkdownTableHeader.java @@ -1,5 +1,7 @@ package com.spun.util.markdown.table; +import com.spun.util.StringUtils; + public class MarkdownTableHeader implements MarkdownTableElement, Resizable { private int padUntil = 1; @@ -11,7 +13,7 @@ public MarkdownTableHeader() public String toString() { int dashCount = padUntil + 2; // Math.max(3, padUntil + 2); - String dashes = "----------------------------------".substring(0, dashCount); + String dashes = StringUtils.repeat("-", dashCount); if (columnProperties == MarkdownColumn.RIGHT_JUSTIFIED) { dashes = dashes.substring(0, dashCount - 1) + ":";