Increases flexibility and reduces number of methods for the format builder
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				KnarCraft/KnarLib/pipeline/head This commit looks good
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	KnarCraft/KnarLib/pipeline/head This commit looks good
				
			Adds some tests for the FormatBuilder Replaces all the different methods with a few methods that accept any object Adds a method for converting any non-null object to a string Adds throws to the methods that might throw an IllegalStateException
This commit is contained in:
		@@ -6,7 +6,9 @@ import org.bukkit.command.CommandSender;
 | 
			
		||||
import org.jetbrains.annotations.NotNull;
 | 
			
		||||
import org.jetbrains.annotations.Nullable;
 | 
			
		||||
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
import java.lang.reflect.Array;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -17,6 +19,7 @@ public final class FormatBuilder {
 | 
			
		||||
 | 
			
		||||
    private static @Nullable StringFormatter stringFormatter = null;
 | 
			
		||||
    private static final IllegalStateException NOT_SETUP_EXCEPTION = new IllegalStateException("String formatter has not been set!");
 | 
			
		||||
    private static final String LIST_DELIMITER = ",";
 | 
			
		||||
    private @NotNull String toFormat;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -41,7 +44,7 @@ public final class FormatBuilder {
 | 
			
		||||
     * @param translatableMessage <p>The translatable message to format</p>
 | 
			
		||||
     * @throws IllegalStateException <p>If the string formatter has not been set</p>
 | 
			
		||||
     */
 | 
			
		||||
    public FormatBuilder(@NotNull TranslatableMessage translatableMessage) {
 | 
			
		||||
    public FormatBuilder(@NotNull TranslatableMessage translatableMessage) throws IllegalStateException {
 | 
			
		||||
        if (FormatBuilder.stringFormatter == null) {
 | 
			
		||||
            throw NOT_SETUP_EXCEPTION;
 | 
			
		||||
        }
 | 
			
		||||
@@ -98,10 +101,12 @@ public final class FormatBuilder {
 | 
			
		||||
     * @param placeholder <p>The placeholder to replace</p>
 | 
			
		||||
     * @param replacement <p>The replacement</p>
 | 
			
		||||
     * @return <p>This format builder</p>
 | 
			
		||||
     * @throws IllegalStateException <p>If the string formatter has not been set, and the placeholder or replacement is
 | 
			
		||||
     *                               a translatable message</p>
 | 
			
		||||
     */
 | 
			
		||||
    @NotNull
 | 
			
		||||
    public FormatBuilder replace(@NotNull String placeholder, @NotNull String replacement) {
 | 
			
		||||
        this.toFormat = StringFormatter.replacePlaceholder(this.toFormat, placeholder, replacement);
 | 
			
		||||
    public <K, L> FormatBuilder replace(@NotNull K placeholder, @NotNull L replacement) throws IllegalStateException {
 | 
			
		||||
        this.toFormat = StringFormatter.replacePlaceholder(this.toFormat, asString(placeholder), asString(replacement));
 | 
			
		||||
        return this;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -117,183 +122,6 @@ public final class FormatBuilder {
 | 
			
		||||
        return this;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Replaces placeholders for the current string
 | 
			
		||||
     *
 | 
			
		||||
     * @param placeholder <p>The translatable message to replace</p>
 | 
			
		||||
     * @param replacement <p>The replacement translatable message</p>
 | 
			
		||||
     * @return <p>This format builder</p>
 | 
			
		||||
     * @throws IllegalStateException <p>If the string formatter has not been set</p>
 | 
			
		||||
     */
 | 
			
		||||
    @NotNull
 | 
			
		||||
    public FormatBuilder replace(@NotNull TranslatableMessage placeholder,
 | 
			
		||||
                                 @NotNull TranslatableMessage replacement) {
 | 
			
		||||
        if (FormatBuilder.stringFormatter == null) {
 | 
			
		||||
            throw NOT_SETUP_EXCEPTION;
 | 
			
		||||
        }
 | 
			
		||||
        return replace(FormatBuilder.stringFormatter.getUnFormattedMessage(placeholder),
 | 
			
		||||
                FormatBuilder.stringFormatter.getUnFormattedMessage(replacement));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Replaces placeholders for the current string
 | 
			
		||||
     *
 | 
			
		||||
     * @param placeholder <p>The placeholder to replace</p>
 | 
			
		||||
     * @param replacement <p>The replacement translatable message</p>
 | 
			
		||||
     * @return <p>This format builder</p>
 | 
			
		||||
     * @throws IllegalStateException <p>If the string formatter has not been set</p>
 | 
			
		||||
     */
 | 
			
		||||
    @NotNull
 | 
			
		||||
    public FormatBuilder replace(@NotNull String placeholder, @NotNull TranslatableMessage replacement) {
 | 
			
		||||
        if (FormatBuilder.stringFormatter == null) {
 | 
			
		||||
            throw NOT_SETUP_EXCEPTION;
 | 
			
		||||
        }
 | 
			
		||||
        return replace(placeholder, FormatBuilder.stringFormatter.getUnFormattedMessage(replacement));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Replaces placeholders for the current string
 | 
			
		||||
     *
 | 
			
		||||
     * @param placeholder <p>The translatable message placeholder to replace</p>
 | 
			
		||||
     * @param replacement <p>The replacement string</p>
 | 
			
		||||
     * @return <p>This format builder</p>
 | 
			
		||||
     * @throws IllegalStateException <p>If the string formatter has not been set</p>
 | 
			
		||||
     */
 | 
			
		||||
    @NotNull
 | 
			
		||||
    public FormatBuilder replace(@NotNull TranslatableMessage placeholder, @NotNull String replacement) {
 | 
			
		||||
        if (FormatBuilder.stringFormatter == null) {
 | 
			
		||||
            throw NOT_SETUP_EXCEPTION;
 | 
			
		||||
        }
 | 
			
		||||
        return replace(FormatBuilder.stringFormatter.getUnFormattedMessage(placeholder), replacement);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Replaces placeholders for the current string
 | 
			
		||||
     *
 | 
			
		||||
     * @param placeholder   <p>The placeholder to replace</p>
 | 
			
		||||
     * @param stringBuilder <p>The replacement string builder</p>
 | 
			
		||||
     * @return <p>This format builder</p>
 | 
			
		||||
     */
 | 
			
		||||
    @NotNull
 | 
			
		||||
    public FormatBuilder replace(@NotNull String placeholder, @NotNull StringBuilder stringBuilder) {
 | 
			
		||||
        return replace(placeholder, stringBuilder.toString());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Replaces placeholders for the current string
 | 
			
		||||
     *
 | 
			
		||||
     * @param placeholder <p>The placeholder to replace</p>
 | 
			
		||||
     * @param replacement <p>The replacement</p>
 | 
			
		||||
     * @return <p>This format builder</p>
 | 
			
		||||
     */
 | 
			
		||||
    @NotNull
 | 
			
		||||
    public FormatBuilder replace(@NotNull String placeholder, @NotNull FormatBuilder replacement) {
 | 
			
		||||
        return replace(placeholder, replacement.toString());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Replaces placeholders for the current string
 | 
			
		||||
     *
 | 
			
		||||
     * @param placeholder <p>The placeholder to replace</p>
 | 
			
		||||
     * @param replacement <p>The replacement</p>
 | 
			
		||||
     * @return <p>This format builder</p>
 | 
			
		||||
     */
 | 
			
		||||
    @NotNull
 | 
			
		||||
    public FormatBuilder replace(@NotNull FormatBuilder placeholder, @NotNull String replacement) {
 | 
			
		||||
        return replace(placeholder.toString(), replacement);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Replaces placeholders for the current string
 | 
			
		||||
     *
 | 
			
		||||
     * @param placeholder <p>The placeholder to replace</p>
 | 
			
		||||
     * @param replacement <p>The replacement</p>
 | 
			
		||||
     * @return <p>This format builder</p>
 | 
			
		||||
     */
 | 
			
		||||
    @NotNull
 | 
			
		||||
    public FormatBuilder replace(@NotNull FormatBuilder placeholder, @NotNull FormatBuilder replacement) {
 | 
			
		||||
        return replace(placeholder.toString(), replacement.toString());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Replaces placeholders for the current string
 | 
			
		||||
     *
 | 
			
		||||
     * @param placeholder <p>The placeholder to replace</p>
 | 
			
		||||
     * @param replacement <p>The replacement</p>
 | 
			
		||||
     * @return <p>This format builder</p>
 | 
			
		||||
     * @throws IllegalStateException <p>If the string formatter has not been set</p>
 | 
			
		||||
     */
 | 
			
		||||
    @NotNull
 | 
			
		||||
    public FormatBuilder replace(@NotNull TranslatableMessage placeholder, @NotNull FormatBuilder replacement) {
 | 
			
		||||
        return replace(placeholder, replacement.toString());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Replaces placeholders for the current string
 | 
			
		||||
     *
 | 
			
		||||
     * @param placeholder <p>The placeholder to replace</p>
 | 
			
		||||
     * @param replacement <p>The replacement</p>
 | 
			
		||||
     * @return <p>This format builder</p>
 | 
			
		||||
     * @throws IllegalStateException <p>If the string formatter has not been set</p>
 | 
			
		||||
     */
 | 
			
		||||
    @NotNull
 | 
			
		||||
    public FormatBuilder replace(@NotNull FormatBuilder placeholder, @NotNull TranslatableMessage replacement) {
 | 
			
		||||
        return replace(placeholder.toString(), replacement);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Replaces a placeholder for the current string
 | 
			
		||||
     *
 | 
			
		||||
     * @param placeholder <p>The translatable message placeholder to replace</p>
 | 
			
		||||
     * @param replacement <p>The object to get the string value of</p>
 | 
			
		||||
     * @return <p>This format builder</p>
 | 
			
		||||
     * @throws IllegalStateException <p>If the string formatter has not been set</p>
 | 
			
		||||
     */
 | 
			
		||||
    @NotNull
 | 
			
		||||
    public FormatBuilder replace(@NotNull TranslatableMessage placeholder, @NotNull Object replacement) {
 | 
			
		||||
        return replace(placeholder, String.valueOf(replacement));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Replaces a placeholder for the current string
 | 
			
		||||
     *
 | 
			
		||||
     * @param placeholder <p>The placeholder to replace</p>
 | 
			
		||||
     * @param replacement <p>The object to get the string value of</p>
 | 
			
		||||
     * @return <p>This format builder</p>
 | 
			
		||||
     */
 | 
			
		||||
    @NotNull
 | 
			
		||||
    public FormatBuilder replace(@NotNull String placeholder, @NotNull Object replacement) {
 | 
			
		||||
        return replace(placeholder, String.valueOf(replacement));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Replaces a placeholder for the current string
 | 
			
		||||
     *
 | 
			
		||||
     * <p>This method turns the given array into a string, and replaces the placeholder with that string.</p>
 | 
			
		||||
     *
 | 
			
		||||
     * @param placeholder <p>The placeholder to replace</p>
 | 
			
		||||
     * @param replacement <p>The list of strings to replace with</p>
 | 
			
		||||
     * @return <p>This format builder</p>
 | 
			
		||||
     */
 | 
			
		||||
    @NotNull
 | 
			
		||||
    public FormatBuilder replace(@NotNull String placeholder, @NotNull List<String> replacement) {
 | 
			
		||||
        return replace(placeholder, replacement.toArray());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Replaces a placeholder for the current string
 | 
			
		||||
     *
 | 
			
		||||
     * <p>This method turns the given array into a string, and replaces the placeholder with that string.</p>
 | 
			
		||||
     *
 | 
			
		||||
     * @param placeholder <p>The placeholder to replace</p>
 | 
			
		||||
     * @param replacement <p>The list of strings to replace with</p>
 | 
			
		||||
     * @return <p>This format builder</p>
 | 
			
		||||
     */
 | 
			
		||||
    @NotNull
 | 
			
		||||
    public FormatBuilder replace(@NotNull String placeholder, @NotNull String[] replacement) {
 | 
			
		||||
        return replace(placeholder, Arrays.toString(replacement));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Converts color codes in the current string
 | 
			
		||||
     *
 | 
			
		||||
@@ -304,7 +132,7 @@ public final class FormatBuilder {
 | 
			
		||||
     * @throws IllegalStateException <p>If the string formatter has not been set</p>
 | 
			
		||||
     */
 | 
			
		||||
    @NotNull
 | 
			
		||||
    public FormatBuilder color() {
 | 
			
		||||
    public FormatBuilder color() throws IllegalStateException {
 | 
			
		||||
        if (FormatBuilder.stringFormatter == null) {
 | 
			
		||||
            throw NOT_SETUP_EXCEPTION;
 | 
			
		||||
        }
 | 
			
		||||
@@ -331,57 +159,21 @@ public final class FormatBuilder {
 | 
			
		||||
     *
 | 
			
		||||
     * @param input <p>The input to append</p>
 | 
			
		||||
     * @return <p>This format builder</p>
 | 
			
		||||
     * @throws IllegalStateException <p>If the string formatter has not been set, and the input is a translatable message</p>
 | 
			
		||||
     */
 | 
			
		||||
    @NotNull
 | 
			
		||||
    public FormatBuilder append(@NotNull String input) {
 | 
			
		||||
        this.toFormat += input;
 | 
			
		||||
    public <K> FormatBuilder append(@NotNull K input) throws IllegalStateException {
 | 
			
		||||
        this.toFormat += asString(input);
 | 
			
		||||
        return this;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Appends the given translatable message to this format builder
 | 
			
		||||
     *
 | 
			
		||||
     * @param translatableMessage <p>The translatable message to append</p>
 | 
			
		||||
     * @return <p>This format builder</p>
 | 
			
		||||
     * @throws IllegalStateException <p>If the string formatter has not been set</p>
 | 
			
		||||
     */
 | 
			
		||||
    @NotNull
 | 
			
		||||
    public FormatBuilder append(@NotNull TranslatableMessage translatableMessage) {
 | 
			
		||||
        if (FormatBuilder.stringFormatter == null) {
 | 
			
		||||
            throw NOT_SETUP_EXCEPTION;
 | 
			
		||||
        }
 | 
			
		||||
        return append(FormatBuilder.stringFormatter.getUnFormattedMessage(translatableMessage));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Appends the given string builder's output to this format builder
 | 
			
		||||
     *
 | 
			
		||||
     * @param stringBuilder <p>The string builder to append</p>
 | 
			
		||||
     * @return <p>This format builder</p>
 | 
			
		||||
     */
 | 
			
		||||
    @NotNull
 | 
			
		||||
    public FormatBuilder append(@NotNull StringBuilder stringBuilder) {
 | 
			
		||||
        return append(stringBuilder.toString());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Appends the given format builder's output to this format builder
 | 
			
		||||
     *
 | 
			
		||||
     * @param formatBuilder <p>The format builder to append</p>
 | 
			
		||||
     * @return <p>This format builder</p>
 | 
			
		||||
     */
 | 
			
		||||
    @NotNull
 | 
			
		||||
    public FormatBuilder append(@NotNull FormatBuilder formatBuilder) {
 | 
			
		||||
        return append(formatBuilder.toString());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Displays the result to the specified command sender as a success message
 | 
			
		||||
     *
 | 
			
		||||
     * @param commandSender <p>The recipient</p>
 | 
			
		||||
     * @throws IllegalStateException <p>If the string formatter has not been set</p>
 | 
			
		||||
     */
 | 
			
		||||
    public void success(@NotNull CommandSender commandSender) {
 | 
			
		||||
    public void success(@NotNull CommandSender commandSender) throws IllegalStateException {
 | 
			
		||||
        if (FormatBuilder.stringFormatter == null) {
 | 
			
		||||
            throw NOT_SETUP_EXCEPTION;
 | 
			
		||||
        }
 | 
			
		||||
@@ -394,7 +186,7 @@ public final class FormatBuilder {
 | 
			
		||||
     * @param commandSender <p>The recipient</p>
 | 
			
		||||
     * @throws IllegalStateException <p>If the string formatter has not been set</p>
 | 
			
		||||
     */
 | 
			
		||||
    public void error(@NotNull CommandSender commandSender) {
 | 
			
		||||
    public void error(@NotNull CommandSender commandSender) throws IllegalStateException {
 | 
			
		||||
        if (FormatBuilder.stringFormatter == null) {
 | 
			
		||||
            throw NOT_SETUP_EXCEPTION;
 | 
			
		||||
        }
 | 
			
		||||
@@ -407,7 +199,7 @@ public final class FormatBuilder {
 | 
			
		||||
     * @param commandSender <p>The recipient</p>
 | 
			
		||||
     * @throws IllegalStateException <p>If the string formatter has not been set</p>
 | 
			
		||||
     */
 | 
			
		||||
    public void neutral(@NotNull CommandSender commandSender) {
 | 
			
		||||
    public void neutral(@NotNull CommandSender commandSender) throws IllegalStateException {
 | 
			
		||||
        if (FormatBuilder.stringFormatter == null) {
 | 
			
		||||
            throw NOT_SETUP_EXCEPTION;
 | 
			
		||||
        }
 | 
			
		||||
@@ -420,4 +212,41 @@ public final class FormatBuilder {
 | 
			
		||||
        return this.toFormat;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Converts the given input to a string
 | 
			
		||||
     *
 | 
			
		||||
     * @param input <p>The input to convert</p>
 | 
			
		||||
     * @return <p>The corresponding string</p>
 | 
			
		||||
     * @throws IllegalStateException <p>If the string formatter has not been set, and the input is a translatable message.</p>
 | 
			
		||||
     */
 | 
			
		||||
    @NotNull
 | 
			
		||||
    private <K> String asString(@NotNull K input) {
 | 
			
		||||
        if (input instanceof String string) {
 | 
			
		||||
            return string;
 | 
			
		||||
        } else if (input instanceof TranslatableMessage translatableMessage) {
 | 
			
		||||
            if (FormatBuilder.stringFormatter == null) {
 | 
			
		||||
                throw NOT_SETUP_EXCEPTION;
 | 
			
		||||
            }
 | 
			
		||||
            return FormatBuilder.stringFormatter.getUnFormattedMessage(translatableMessage);
 | 
			
		||||
        } else if (input instanceof FormatBuilder builder) {
 | 
			
		||||
            return builder.toString();
 | 
			
		||||
        } else if (input instanceof StringBuilder builder) {
 | 
			
		||||
            return builder.toString();
 | 
			
		||||
        } else if (input instanceof Collection<?> collection) {
 | 
			
		||||
            List<String> output = new ArrayList<>(collection.size());
 | 
			
		||||
            for (Object item : collection) {
 | 
			
		||||
                output.add(String.valueOf(item));
 | 
			
		||||
            }
 | 
			
		||||
            return String.join(LIST_DELIMITER, output);
 | 
			
		||||
        } else if (input.getClass().isArray()) {
 | 
			
		||||
            int length = Array.getLength(input);
 | 
			
		||||
            List<String> output = new ArrayList<>(length);
 | 
			
		||||
            for (int i = 0; i < length; i++) {
 | 
			
		||||
                output.add(String.valueOf(Array.get(input, i)));
 | 
			
		||||
            }
 | 
			
		||||
            return String.join(LIST_DELIMITER, output);
 | 
			
		||||
        }
 | 
			
		||||
        return String.valueOf(input);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,43 @@
 | 
			
		||||
package net.knarcraft.knarlib.formatting;
 | 
			
		||||
 | 
			
		||||
import net.knarcraft.knarlib.particle.ParticleMode;
 | 
			
		||||
import org.junit.jupiter.api.Test;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
import static org.junit.jupiter.api.Assertions.assertEquals;
 | 
			
		||||
 | 
			
		||||
@SuppressWarnings("SpellCheckingInspection")
 | 
			
		||||
public class FormatBuilderTest {
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void replaceTest() {
 | 
			
		||||
        FormatBuilder builder = new FormatBuilder("{1}{2}{3}{4}{5}");
 | 
			
		||||
        builder.replace("{1}", List.of(1, 2, 3, 4, 5));
 | 
			
		||||
        assertEquals("1,2,3,4,5{2}{3}{4}{5}", builder.toString());
 | 
			
		||||
        builder.replace("{2}", "StringTest");
 | 
			
		||||
        assertEquals("1,2,3,4,5StringTest{3}{4}{5}", builder.toString());
 | 
			
		||||
        StringBuilder testBuilder = new StringBuilder().append("This").append(" ").append("is").append(" ").append("some").append(" ").append("text");
 | 
			
		||||
        builder.replace("{3}", testBuilder);
 | 
			
		||||
        assertEquals("1,2,3,4,5StringTestThis is some text{4}{5}", builder.toString());
 | 
			
		||||
        builder.replace("{4}", new FormatBuilder("JustTesting").replace("Testing", "Fishing"));
 | 
			
		||||
        assertEquals("1,2,3,4,5StringTestThis is some textJustFishing{5}", builder.toString());
 | 
			
		||||
        builder.replace("{5}", new String[]{"a", "b", "c"});
 | 
			
		||||
        assertEquals("1,2,3,4,5StringTestThis is some textJustFishinga,b,c", builder.toString());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void appendTest() {
 | 
			
		||||
        FormatBuilder builder = new FormatBuilder();
 | 
			
		||||
        assertEquals("", builder.toString());
 | 
			
		||||
        builder.append("Test");
 | 
			
		||||
        assertEquals("Test", builder.toString());
 | 
			
		||||
        builder.append(new int[]{1, 2, 3, 4, 5});
 | 
			
		||||
        assertEquals("Test1,2,3,4,5", builder.toString());
 | 
			
		||||
        builder.append(new FormatBuilder("abc")).append(new StringBuilder("k").append(" ").append("z"));
 | 
			
		||||
        assertEquals("Test1,2,3,4,5abck z", builder.toString());
 | 
			
		||||
        builder.append(List.of(ParticleMode.SINGLE, ParticleMode.CIRCLE, ParticleMode.CUBE));
 | 
			
		||||
        assertEquals("Test1,2,3,4,5abck zSINGLE,CIRCLE,CUBE", builder.toString());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user