diff --git a/common/implementation/src/test/java/MetaTest.java b/common/implementation/src/test/java/MetaTest.java new file mode 100644 index 000000000..c0c278fa8 --- /dev/null +++ b/common/implementation/src/test/java/MetaTest.java @@ -0,0 +1,35 @@ +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.config.ConfigTemplate; +import com.dfsek.tectonic.config.Configuration; +import com.dfsek.tectonic.loading.ConfigLoader; +import com.dfsek.tectonic.yaml.YamlConfiguration; +import com.dfsek.terra.api.config.meta.Meta; +import com.dfsek.terra.config.preprocessor.MetaValuePreprocessor; +import org.junit.jupiter.api.Test; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class MetaTest { + @Test + public void testMetaList() { + Configuration meta = new YamlConfiguration(MetaTest.class.getResourceAsStream("/meta.yml"), "meta.yml"); + Configuration metaTarget = new YamlConfiguration(MetaTest.class.getResourceAsStream("/metaTarget.yml"), "metaTarget.yml"); + + Map configurationMap = new HashMap<>(); + + configurationMap.put(meta.getName(), meta); + configurationMap.put(metaTarget.getName(), metaTarget); + + ConfigLoader loader = new ConfigLoader(); + loader.registerPreprocessor(Meta.class, new MetaValuePreprocessor(configurationMap)); + + loader.load(new ConfigTest(), meta).list.forEach(System.out::println); + } + + private static final class ConfigTest implements ConfigTemplate { + @Value("list") + private @Meta List<@Meta String> list; + } +} diff --git a/common/implementation/src/test/resources/meta.yml b/common/implementation/src/test/resources/meta.yml new file mode 100644 index 000000000..863f1a6ef --- /dev/null +++ b/common/implementation/src/test/resources/meta.yml @@ -0,0 +1,9 @@ +list: + - ONE + - "<< metaTarget.yml:list" + - FOUR + - FIVE + - SIX + - "<< metaTarget.yml:list2" + - NINE + - TEN \ No newline at end of file diff --git a/common/implementation/src/test/resources/metaTarget.yml b/common/implementation/src/test/resources/metaTarget.yml new file mode 100644 index 000000000..c64ab3085 --- /dev/null +++ b/common/implementation/src/test/resources/metaTarget.yml @@ -0,0 +1,6 @@ +list: + - TWO + - THREE +list2: + - SEVEN + - EIGHT \ No newline at end of file