From 4f16bdbabbad82b6130b19bcc0a4621dee83e86e Mon Sep 17 00:00:00 2001 From: md_5 Date: Mon, 18 Sep 2017 20:46:38 +1000 Subject: SPIGOT-3568: Fix single letter pagination edge case --- src/main/java/org/bukkit/util/ChatPaginator.java | 5 ++++- src/test/java/org/bukkit/ChatPaginatorTest.java | 18 +++++++++++++----- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/bukkit/util/ChatPaginator.java b/src/main/java/org/bukkit/util/ChatPaginator.java index 87c8aec6..b0b91ad8 100644 --- a/src/main/java/org/bukkit/util/ChatPaginator.java +++ b/src/main/java/org/bukkit/util/ChatPaginator.java @@ -93,7 +93,10 @@ public class ChatPaginator { for (String partialWord : word.toString().split("(?<=\\G.{" + lineLength + "})")) { lines.add(partialWord); } - } else if (line.length() + word.length() - lineColorChars == lineLength) { // Line exactly the correct length...newline + } else if (line.length() + 1 + word.length() - lineColorChars == lineLength) { // Line exactly the correct length...newline + if (line.length() > 0) { + line.append(' '); + } line.append(word); lines.add(line.toString()); line = new StringBuilder(); diff --git a/src/test/java/org/bukkit/ChatPaginatorTest.java b/src/test/java/org/bukkit/ChatPaginatorTest.java index 0a8acae9..a644b150 100644 --- a/src/test/java/org/bukkit/ChatPaginatorTest.java +++ b/src/test/java/org/bukkit/ChatPaginatorTest.java @@ -7,14 +7,12 @@ import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.nullValue; import static org.junit.Assert.assertThat; -/** - */ public class ChatPaginatorTest { @Test public void testWordWrap1() { String rawString = ChatColor.RED + "123456789 123456789 123456789"; String[] lines = ChatPaginator.wordWrap(rawString, 19); - + assertThat(lines.length, is(2)); assertThat(lines[0], is(ChatColor.RED + "123456789 123456789")); assertThat(lines[1], is(ChatColor.RED.toString() + "123456789")); @@ -128,12 +126,22 @@ public class ChatPaginatorTest { assertThat(lines.length, is(1)); assertThat(lines[0], is(ChatColor.RED + "a a a " + ChatColor.BLUE + "a a")); } - + + @Test + public void testWordWrap12() { + String rawString = "123 1 123"; + String[] lines = ChatPaginator.wordWrap(rawString, 5); + + assertThat(lines.length, is(2)); + assertThat(lines[0], is(ChatColor.WHITE.toString() + "123 1")); + assertThat(lines[1], is(ChatColor.WHITE.toString() + "123")); + } + @Test public void testPaginate1() { String rawString = "1234 123456789 123456789 123456789"; ChatPaginator.ChatPage page = ChatPaginator.paginate(rawString, 1, 6, 2); - + assertThat(page.getPageNumber(), is(1)); assertThat(page.getTotalPages(), is(4)); assertThat(page.getLines().length, is(2)); -- cgit v1.2.3