From df4c1b7c71528b105a824798d4cb68ba99f1ee37 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Wed, 28 Apr 2021 21:27:38 +0300 Subject: [PATCH] =?UTF-8?q?Text:=20=D0=B4=D0=BE=D0=BF=D0=BE=D0=BB=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=20children?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/mc/protocol/model/text/Text.java | 26 ++++++++++++++++--- .../java/mc/protocol/model/text/TextTest.java | 24 +++++++++++++++-- 2 files changed, 44 insertions(+), 6 deletions(-) diff --git a/protocol/src/main/java/mc/protocol/model/text/Text.java b/protocol/src/main/java/mc/protocol/model/text/Text.java index 94607a2..27041ec 100644 --- a/protocol/src/main/java/mc/protocol/model/text/Text.java +++ b/protocol/src/main/java/mc/protocol/model/text/Text.java @@ -1,5 +1,6 @@ package mc.protocol.model.text; +import com.google.common.collect.ImmutableList; import lombok.EqualsAndHashCode; import lombok.ToString; @@ -10,13 +11,15 @@ public class Text { public static final Text EMPTY = of(""); private String content; + private ImmutableList children; - Text(String content) { + Text(String content, ImmutableList children) { this.content = content; + this.children = children; } public static Text of(String content) { - return new Text(content); + return new Text(content, null); } public static Text.Builder builder() { @@ -25,6 +28,7 @@ public class Text { public static class Builder { private String content; + private ImmutableList.Builder childrenBuilder; public Builder append(String content) { if (this.content == null) { @@ -35,11 +39,25 @@ public class Text { return this; } + public Builder append(Text text) { + if (text == null || EMPTY.equals(text)) { + return this; + } + + if (this.childrenBuilder == null) { + this.childrenBuilder = ImmutableList.builder(); + } + + this.childrenBuilder.add(text); + return this; + } + public Text build() { - if (content == null) { + if (content == null && childrenBuilder == null) { return EMPTY; } else { - return new Text(content); + return new Text(content, + childrenBuilder == null ? null : childrenBuilder.build()); } } } diff --git a/protocol/src/test/java/mc/protocol/model/text/TextTest.java b/protocol/src/test/java/mc/protocol/model/text/TextTest.java index ed3d423..9513bef 100644 --- a/protocol/src/test/java/mc/protocol/model/text/TextTest.java +++ b/protocol/src/test/java/mc/protocol/model/text/TextTest.java @@ -1,5 +1,6 @@ package mc.protocol.model.text; +import com.google.common.collect.ImmutableList; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; @@ -20,11 +21,30 @@ class TextTest { Text expected; actual = Text.builder().append("123").build(); - expected = new Text("123"); + expected = new Text("123", null); assertEquals(expected, actual); actual = Text.builder().append("123").append("456").build(); - expected = new Text("123456"); + expected = new Text("123456", null); + assertEquals(expected, actual); + } + + @Test + void childrenTest() { + Text actual; + Text expected; + + actual = Text.builder().append("123").append((Text) null).build(); + expected = new Text("123", null); + assertEquals(expected, actual); + + actual = Text.builder().append("123").append(Text.EMPTY).build(); + expected = new Text("123", null); + assertEquals(expected, actual); + + Text child = Text.of("456"); + actual = Text.builder().append("123").append(child).build(); + expected = new Text("123", ImmutableList.of(child)); assertEquals(expected, actual); } } \ No newline at end of file