From a892b7e9c2f67b072cf1461241f4ba5488e41370 Mon Sep 17 00:00:00 2001 From: isXander Date: Tue, 15 Aug 2023 17:34:52 +0100 Subject: Complete config tests --- .../dev/isxander/yacl3/test/AutogenConfigTest.java | 117 +++++++++++++++++++++ .../java/dev/isxander/yacl3/test/ConfigV2Test.java | 75 ------------- .../main/java/dev/isxander/yacl3/test/GuiTest.java | 4 +- 3 files changed, 119 insertions(+), 77 deletions(-) create mode 100644 test-common/src/main/java/dev/isxander/yacl3/test/AutogenConfigTest.java delete mode 100644 test-common/src/main/java/dev/isxander/yacl3/test/ConfigV2Test.java (limited to 'test-common') diff --git a/test-common/src/main/java/dev/isxander/yacl3/test/AutogenConfigTest.java b/test-common/src/main/java/dev/isxander/yacl3/test/AutogenConfigTest.java new file mode 100644 index 0000000..7a064d5 --- /dev/null +++ b/test-common/src/main/java/dev/isxander/yacl3/test/AutogenConfigTest.java @@ -0,0 +1,117 @@ +package dev.isxander.yacl3.test; + +import com.google.common.collect.Lists; +import dev.isxander.yacl3.api.NameableEnum; +import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.ControllerBuilder; +import dev.isxander.yacl3.api.controller.StringControllerBuilder; +import dev.isxander.yacl3.config.v2.api.ConfigClassHandler; +import dev.isxander.yacl3.config.v2.api.ConfigField; +import dev.isxander.yacl3.config.v2.api.autogen.Boolean; +import dev.isxander.yacl3.config.v2.api.autogen.Label; +import dev.isxander.yacl3.config.v2.api.serializer.GsonConfigSerializerBuilder; +import dev.isxander.yacl3.config.v2.api.SerialEntry; +import dev.isxander.yacl3.config.v2.api.autogen.*; +import dev.isxander.yacl3.platform.YACLPlatform; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; + +import java.awt.*; +import java.util.List; + +public class AutogenConfigTest { + public static ConfigClassHandler INSTANCE = ConfigClassHandler.createBuilder(AutogenConfigTest.class) + .id(new ResourceLocation("yacl3", "config")) + .serializer(config -> GsonConfigSerializerBuilder.create(config) + .setPath(YACLPlatform.getConfigDir().resolve("yacl-test-v2.json5")) + .setJson5(true) + .build()) + .build(); + + @AutoGen(category = "test", group = "master_test") + @MasterTickBox({ "testTickBox", "testBoolean", "testInt", "testDouble", "testFloat", "testLong", "testIntField", "testDoubleField", "testFloatField", "testLongField", "testEnum", "testColor", "testString" }) + @SerialEntry(comment = "This option disables all the other options in this group") + public boolean masterOption = true; + + @AutoGen(category = "test", group = "master_test") + @TickBox + @SerialEntry(comment = "This is a cool comment omg this is amazing") + public boolean testTickBox = true; + + @AutoGen(category = "test", group = "master_test") + @Boolean(formatter = Boolean.Formatter.YES_NO, colored = true) + @SerialEntry(comment = "This is a cool comment omg this is amazing") + public boolean testBoolean = true; + + @AutoGen(category = "test", group = "master_test") + @IntSlider(min = 0, max = 10, step = 2) + @SerialEntry public int testInt = 0; + + @AutoGen(category = "test", group = "master_test") + @DoubleSlider(min = 0.1, max = 10.2, step = 0.1) + @SerialEntry public double testDouble = 0.1; + + @AutoGen(category = "test", group = "master_test") + @FloatSlider(min = 0.1f, max = 10.2f, step = 0.1f) + @SerialEntry public float testFloat = 0.1f; + + @AutoGen(category = "test", group = "master_test") + @LongSlider(min = 0, max = 10, step = 2) + @SerialEntry public long testLong = 0; + + @AutoGen(category = "test", group = "master_test") + @IntField(min = 0, max = 10) + @SerialEntry public int testIntField = 0; + + @AutoGen(category = "test", group = "master_test") + @DoubleField(min = 0.1, max = 10.2) + @SerialEntry public double testDoubleField = 0.1; + + @AutoGen(category = "test", group = "master_test") + @FloatField(min = 0.1f, max = 10.2f) + @SerialEntry public float testFloatField = 0.1f; + + @AutoGen(category = "test", group = "master_test") + @LongField(min = 0, max = 10) + @SerialEntry public long testLongField = 0; + + @AutoGen(category = "test", group = "master_test") + @EnumCycler + @SerialEntry public Alphabet testEnum = Alphabet.A; + + @AutoGen(category = "test", group = "master_test") + @ColorField + @SerialEntry public Color testColor = new Color(0xFF0000FF, true); + + @AutoGen(category = "test", group = "master_test") + @StringField + @SerialEntry public String testString = "Test string"; + + @AutoGen(category = "test", group = "misc") @Label + private final Component testLabel = Component.literal("Test label"); + + @AutoGen(category = "test") + @ListGroup(valueFactory = TestListFactory.class, controllerFactory = TestListFactory.class) + @SerialEntry public List testList = Lists.newArrayList("A", "B"); + + public enum Alphabet implements NameableEnum { + A, B, C; + + @Override + public Component getDisplayName() { + return Component.literal(name()); + } + } + + public static class TestListFactory implements ListGroup.ValueFactory, ListGroup.ControllerFactory { + @Override + public String provideNewValue() { + return ""; + } + + @Override + public ControllerBuilder createController(ListGroup annotation, ConfigField> field, OptionAccess storage, Option option) { + return StringControllerBuilder.create(option); + } + } +} diff --git a/test-common/src/main/java/dev/isxander/yacl3/test/ConfigV2Test.java b/test-common/src/main/java/dev/isxander/yacl3/test/ConfigV2Test.java deleted file mode 100644 index 462bef8..0000000 --- a/test-common/src/main/java/dev/isxander/yacl3/test/ConfigV2Test.java +++ /dev/null @@ -1,75 +0,0 @@ -package dev.isxander.yacl3.test; - -import com.google.common.collect.Lists; -import dev.isxander.yacl3.api.NameableEnum; -import dev.isxander.yacl3.api.Option; -import dev.isxander.yacl3.api.controller.ControllerBuilder; -import dev.isxander.yacl3.api.controller.StringControllerBuilder; -import dev.isxander.yacl3.config.v2.api.ConfigClassHandler; -import dev.isxander.yacl3.config.v2.api.ConfigField; -import dev.isxander.yacl3.config.v2.api.serializer.GsonConfigSerializerBuilder; -import dev.isxander.yacl3.config.v2.api.SerialEntry; -import dev.isxander.yacl3.config.v2.api.autogen.*; -import dev.isxander.yacl3.platform.YACLPlatform; -import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; - -import java.util.List; - -public class ConfigV2Test { - public static ConfigClassHandler INSTANCE = ConfigClassHandler.createBuilder(ConfigV2Test.class) - .id(new ResourceLocation("yacl3", "config")) - .serializer(config -> GsonConfigSerializerBuilder.create(config) - .setPath(YACLPlatform.getConfigDir().resolve("yacl-test-v2.json5")) - .setJson5(true) - .build()) - .build(); - - @AutoGen(category = "test", group = "master_test") - @MasterTickBox({ "testTickBox", "testInt", "testEnum" }) - @SerialEntry(comment = "This option does this and that which is cool because this...") - public boolean masterOption = true; - - @AutoGen(category = "test", group = "master_test") - @TickBox - @SerialEntry(comment = "This is a cool comment omg this is amazing") - public boolean testTickBox = true; - - @AutoGen(category = "test", group = "master_test") - @IntSlider(min = 0, max = 10, step = 2) - @SerialEntry public int testInt = 0; - - @AutoGen(category = "test", group = "master_test") - @EnumCycler - @SerialEntry public Alphabet testEnum = Alphabet.A; - - @AutoGen(category = "test", group = "misc") @Label - private final Component testLabel = Component.literal("Test label"); - - @AutoGen(category = "test") - @ListGroup(valueFactory = TestListValueFactory.class, controllerFactory = TestListControllerFactory.class) - @SerialEntry public List testList = Lists.newArrayList("A", "B"); - - public enum Alphabet implements NameableEnum { - A, B, C; - - @Override - public Component getDisplayName() { - return Component.literal(name()); - } - } - - public static class TestListValueFactory implements ListGroup.ValueFactory { - @Override - public String provideNewValue() { - return ""; - } - } - - public static class TestListControllerFactory implements ListGroup.ControllerFactory { - @Override - public ControllerBuilder createController(ListGroup annotation, ConfigField> field, OptionAccess storage, Option option) { - return StringControllerBuilder.create(option); - } - } -} diff --git a/test-common/src/main/java/dev/isxander/yacl3/test/GuiTest.java b/test-common/src/main/java/dev/isxander/yacl3/test/GuiTest.java index 6430c48..9c232ca 100644 --- a/test-common/src/main/java/dev/isxander/yacl3/test/GuiTest.java +++ b/test-common/src/main/java/dev/isxander/yacl3/test/GuiTest.java @@ -45,8 +45,8 @@ public class GuiTest { .option(ButtonOption.createBuilder() .name(Component.literal("Auto-gen test")) .action((screen, opt) -> { - ConfigV2Test.INSTANCE.serializer().load(); - Minecraft.getInstance().setScreen(ConfigV2Test.INSTANCE.generateGui().generateScreen(screen)); + AutogenConfigTest.INSTANCE.serializer().load(); + Minecraft.getInstance().setScreen(AutogenConfigTest.INSTANCE.generateGui().generateScreen(screen)); }) .build()) .group(OptionGroup.createBuilder() -- cgit