added ConfigProcessor

This commit is contained in:
2023-04-09 22:56:11 +02:00
parent 1a59cafb0a
commit 4ab6b7072a
20 changed files with 469 additions and 27 deletions
@@ -0,0 +1,67 @@
package dev.asdf00.confindibus;
import dev.asdf00.confindibus.testclasses.*;
import org.junit.Assert;
import org.junit.Test;
import static com.sun.tools.javac.Main.compile;
public class ProcessorTest {
@Test
public void testSimpleConfig() {
Assert.assertEquals(0, compileWithProc(SimpleTestConfig.class));
}
@Test
public void testBrokenConfig() {
Assert.assertEquals(1, compileWithProc(BrokenConfig.class));
}
@Test
public void testBrokenSection1() {
Assert.assertEquals(1, compileWithProc(BrokenSection1.class));
}
@Test
public void testBrokenSection2() {
Assert.assertEquals(1, compileWithProc(BrokenSection2.class));
}
@Test
public void testBrokenValue1() {
Assert.assertEquals(1, compileWithProc(BrokenValue1.class));
}
@Test
public void testBrokenValue2() {
Assert.assertEquals(1, compileWithProc(BrokenValue2.class));
}
@Test
public void testBrokenValue3() {
Assert.assertEquals(1, compileWithProc(BrokenValue3.class));
}
@Test
public void testBrokenValue4() {
Assert.assertEquals(1, compileWithProc(BrokenValue4.class));
}
// =================================================================================================================
private int compileWithProc(Class<?>... classes) {
int fixedArgCnt = 3;
String[] args = new String[classes.length + fixedArgCnt];
args[0] = "-proc:only";
args[1] = "-processor";
args[2] = "dev.asdf00.confindibus.processor.ConfigProcessor";
for (int i = fixedArgCnt; i < args.length; i++) {
args[i] = testClass(classes[i - fixedArgCnt]);
}
return compile(args);
}
private String testClass(Class cls) {
return "test/" + cls.getName().replace('.', '/') + ".java";
}
}
@@ -0,0 +1,10 @@
package dev.asdf00.confindibus.testclasses;
import dev.asdf00.confindibus.annotations.Configuration;
import dev.asdf00.confindibus.annotations.Value;
@Configuration(path = "test")
public class BrokenConfig {
@Value(standard = "value")
public static String VALUE;
}
@@ -0,0 +1,10 @@
package dev.asdf00.confindibus.testclasses;
import dev.asdf00.confindibus.annotations.Section;
import dev.asdf00.confindibus.annotations.Value;
@Section(title = "test")
public class BrokenSection1 {
@Value(standard = "value")
public static String VALUE;
}
@@ -0,0 +1,11 @@
package dev.asdf00.confindibus.testclasses;
import dev.asdf00.confindibus.annotations.Configuration;
import dev.asdf00.confindibus.annotations.Section;
@Configuration(path = "test")
@Section(title = "sect")
public class BrokenSection2 {
@Section(title = "broken subsect")
public class Subsect { }
}
@@ -0,0 +1,12 @@
package dev.asdf00.confindibus.testclasses;
import dev.asdf00.confindibus.annotations.Configuration;
import dev.asdf00.confindibus.annotations.Section;
import dev.asdf00.confindibus.annotations.Value;
@Configuration(path = "test")
@Section(title = "sect")
public class BrokenValue1 {
@Value(standard = "test")
public String TEST;
}
@@ -0,0 +1,14 @@
package dev.asdf00.confindibus.testclasses;
import dev.asdf00.confindibus.annotations.Configuration;
import dev.asdf00.confindibus.annotations.Section;
import dev.asdf00.confindibus.annotations.Value;
@Configuration(path = "test")
@Section(title = "sect outer")
public class BrokenValue2 {
public static class InnerSection {
@Value(standard = "value")
public static String VALUE;
}
}
@@ -0,0 +1,12 @@
package dev.asdf00.confindibus.testclasses;
import dev.asdf00.confindibus.annotations.Configuration;
import dev.asdf00.confindibus.annotations.Section;
import dev.asdf00.confindibus.annotations.Value;
@Configuration(path = "test")
@Section(title = "sect")
public class BrokenValue3 {
@Value(standard = "")
public static Object VALUE;
}
@@ -0,0 +1,12 @@
package dev.asdf00.confindibus.testclasses;
import dev.asdf00.confindibus.annotations.Configuration;
import dev.asdf00.confindibus.annotations.Section;
import dev.asdf00.confindibus.annotations.Value;
@Configuration(path = "test")
@Section(title = "sect")
public class BrokenValue4 {
@Value(standard = "256")
public static byte VALUE;
}
@@ -0,0 +1,31 @@
package dev.asdf00.confindibus.testclasses;
import dev.asdf00.confindibus.annotations.Configuration;
import dev.asdf00.confindibus.annotations.Section;
import dev.asdf00.confindibus.annotations.Value;
@Configuration(path = "test")
@Section(title = "sect")
public class SimpleTestConfig {
@Value(standard = "1")
public static byte BYTE;
@Value(standard = "1")
public static short SHORT;
@Value(standard = "1")
public static int INT;
@Value(standard = "1")
public static long LONG;
@Value(standard = "1.0")
public static float FLOAT;
@Value(standard = "1.0")
public static double DOUBLE;
@Value(standard = "true")
public static boolean BOOLEAN;
@Value(standard = "c")
public static char CHAR;
@Value(standard = "string")
public static String STRING;
@Section(title = "test inner section")
public static class SubSection { }
}