diff --git a/test/dev/peerat/parser/java/element/BaseElementTests.java b/test/dev/peerat/parser/java/element/BaseElementTests.java index 6a8bcca..a3b4619 100644 --- a/test/dev/peerat/parser/java/element/BaseElementTests.java +++ b/test/dev/peerat/parser/java/element/BaseElementTests.java @@ -1,5 +1,8 @@ package dev.peerat.parser.java.element; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + import java.util.ArrayList; import java.util.List; import java.util.function.Consumer; @@ -8,6 +11,10 @@ import java.util.function.Supplier; import org.junit.jupiter.api.Test; import dev.peerat.parser.Parser; +import dev.peerat.parser.java.Class; +import dev.peerat.parser.java.ClassBase; +import dev.peerat.parser.java.Enumeration; +import dev.peerat.parser.java.Interface; import dev.peerat.parser.java.JavaElement; import dev.peerat.parser.java.JavaFile; import dev.peerat.parser.java.JavaParser; @@ -35,4 +42,24 @@ public class BaseElementTests{ System.out.println("passed "+size+" tests"); } + public Class checkClass(JavaFile javafile){ + ClassBase clazzb = javafile.getMainClass(); + assertNotNull(clazzb); + assertTrue(clazzb instanceof Class); + return (Class)clazzb; + } + + public Interface checkInterface(JavaFile javafile){ + ClassBase clazzb = javafile.getMainClass(); + assertNotNull(clazzb); + assertTrue(clazzb instanceof Interface); + return (Interface)clazzb; + } + + public Enumeration checkEnum(JavaFile javafile){ + ClassBase clazzb = javafile.getMainClass(); + assertNotNull(clazzb); + assertTrue(clazzb instanceof Enumeration); + return (Enumeration)clazzb; + } } diff --git a/test/dev/peerat/parser/java/element/annotation/ClazzAnnotation.java b/test/dev/peerat/parser/java/element/annotation/ClazzAnnotation.java index ff82e3d..0cfe624 100644 --- a/test/dev/peerat/parser/java/element/annotation/ClazzAnnotation.java +++ b/test/dev/peerat/parser/java/element/annotation/ClazzAnnotation.java @@ -13,6 +13,8 @@ import dev.peerat.parser.TokenType; import dev.peerat.parser.java.Annotation; import dev.peerat.parser.java.Class; import dev.peerat.parser.java.ClassBase; +import dev.peerat.parser.java.Enumeration; +import dev.peerat.parser.java.Interface; import dev.peerat.parser.java.Value; import dev.peerat.parser.java.element.BaseElementTests; @@ -25,10 +27,7 @@ public class ClazzAnnotation extends BaseElementTests{ + "@Test " + "public static class Test{}", (javafile) -> { - ClassBase clazzb = javafile.getMainClass(); - assertNotNull(clazzb); - assertTrue(clazzb instanceof Class); - Class clazz = (Class)clazzb; + Class clazz = checkClass(javafile); List annotations = clazz.getAnnotations(); assertNotNull(annotations); assertEquals(1, annotations.size()); @@ -43,10 +42,7 @@ public class ClazzAnnotation extends BaseElementTests{ + "@be.jeffcheasey88.Test " + "public static class Test{}", (javafile) -> { - ClassBase clazzb = javafile.getMainClass(); - assertNotNull(clazzb); - assertTrue(clazzb instanceof Class); - Class clazz = (Class)clazzb; + Class clazz = checkClass(javafile); List annotations = clazz.getAnnotations(); assertNotNull(annotations); assertEquals(1, annotations.size()); @@ -61,10 +57,7 @@ public class ClazzAnnotation extends BaseElementTests{ + "@Test() " + "public static class Test{}", (javafile) -> { - ClassBase clazzb = javafile.getMainClass(); - assertNotNull(clazzb); - assertTrue(clazzb instanceof Class); - Class clazz = (Class)clazzb; + Class clazz = checkClass(javafile); List annotations = clazz.getAnnotations(); assertNotNull(annotations); assertEquals(1, annotations.size()); @@ -79,10 +72,7 @@ public class ClazzAnnotation extends BaseElementTests{ + "@Test(\"Hello\") " + "public static class Test{}", (javafile) -> { - ClassBase clazzb = javafile.getMainClass(); - assertNotNull(clazzb); - assertTrue(clazzb instanceof Class); - Class clazz = (Class)clazzb; + Class clazz = checkClass(javafile); List annotations = clazz.getAnnotations(); assertNotNull(annotations); assertEquals(1, annotations.size()); @@ -103,10 +93,7 @@ public class ClazzAnnotation extends BaseElementTests{ + "@Test(offset=8) " + "public static class Test{}", (javafile) -> { - ClassBase clazzb = javafile.getMainClass(); - assertNotNull(clazzb); - assertTrue(clazzb instanceof Class); - Class clazz = (Class)clazzb; + Class clazz = checkClass(javafile); List annotations = clazz.getAnnotations(); assertNotNull(annotations); assertEquals(1, annotations.size()); @@ -125,10 +112,7 @@ public class ClazzAnnotation extends BaseElementTests{ + "@Test(offset=8,concat=\",\") " + "public static class Test{}", (javafile) -> { - ClassBase clazzb = javafile.getMainClass(); - assertNotNull(clazzb); - assertTrue(clazzb instanceof Class); - Class clazz = (Class)clazzb; + Class clazz = checkClass(javafile); List annotations = clazz.getAnnotations(); assertNotNull(annotations); assertEquals(1, annotations.size()); @@ -137,6 +121,42 @@ public class ClazzAnnotation extends BaseElementTests{ assertNotNull(annotation.getParameters()); assertEquals(2, annotation.getParameters().size()); }); + + register( + () -> "package be.jeffcheasey88;" + + "" + + "@Test " + + "public static interface Test{}", + (javafile) -> { + ClassBase clazzb = javafile.getMainClass(); + assertNotNull(clazzb); + assertTrue(clazzb instanceof Interface); + Interface clazz = (Interface)clazzb; + List annotations = clazz.getAnnotations(); + assertNotNull(annotations); + assertEquals(1, annotations.size()); + Annotation annotation = annotations.get(0); + assertEquals("Test", annotation.getName().getValue()); + assertNull(annotation.getParameters()); + }); + + register( + () -> "package be.jeffcheasey88;" + + "" + + "@Test " + + "public static enum Test{}", + (javafile) -> { + ClassBase clazzb = javafile.getMainClass(); + assertNotNull(clazzb); + assertTrue(clazzb instanceof Enumeration); + Enumeration clazz = (Enumeration)clazzb; + List annotations = clazz.getAnnotations(); + assertNotNull(annotations); + assertEquals(1, annotations.size()); + Annotation annotation = annotations.get(0); + assertEquals("Test", annotation.getName().getValue()); + assertNull(annotation.getParameters()); + }); } } diff --git a/test/dev/peerat/parser/java/element/variable/VariableInClass.java b/test/dev/peerat/parser/java/element/variable/VariableInClass.java new file mode 100644 index 0000000..f509519 --- /dev/null +++ b/test/dev/peerat/parser/java/element/variable/VariableInClass.java @@ -0,0 +1,204 @@ +package dev.peerat.parser.java.element.variable; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.lang.reflect.Modifier; +import java.util.List; + +import dev.peerat.parser.java.Class; +import dev.peerat.parser.java.JavaElement; +import dev.peerat.parser.java.Variable; +import dev.peerat.parser.java.element.BaseElementTests; + +public class VariableInClass extends BaseElementTests{ + + { + register( + () -> "package be.jeffcheasey88;" + + "" + + "public static final class Test{ " + + " int i;" + + "}", + (javafile) -> { + Class clazz = checkClass(javafile); + List elements = clazz.getElements(); + assertNotNull(elements); + assertEquals(1, elements.size()); + JavaElement element = elements.get(0); + assertNotNull(element); + assertTrue(element instanceof Variable); + Variable variable = (Variable) element; + assertEquals(0, variable.getModifier()); + assertEquals("int", variable.getType().getValue()); + assertEquals("i", variable.getName().getValue()); + assertNull(variable.getValue()); + }); + + register( + () -> "package be.jeffcheasey88;" + + "" + + "public static final class Test{ " + + " private int i;" + + "}", + (javafile) -> { + Class clazz = checkClass(javafile); + List elements = clazz.getElements(); + assertNotNull(elements); + assertEquals(1, elements.size()); + JavaElement element = elements.get(0); + assertNotNull(element); + assertTrue(element instanceof Variable); + Variable variable = (Variable) element; + assertEquals(Modifier.PRIVATE, variable.getModifier()); + assertEquals("int", variable.getType().getValue()); + assertEquals("i", variable.getName().getValue()); + assertNull(variable.getValue()); + }); + + register( + () -> "package be.jeffcheasey88;" + + "" + + "public static final class Test{ " + + " private final int i;" + + "}", + (javafile) -> { + Class clazz = checkClass(javafile); + List elements = clazz.getElements(); + assertNotNull(elements); + assertEquals(1, elements.size()); + JavaElement element = elements.get(0); + assertNotNull(element); + assertTrue(element instanceof Variable); + Variable variable = (Variable) element; + assertEquals(Modifier.PRIVATE+Modifier.FINAL, variable.getModifier()); + assertEquals("int", variable.getType().getValue()); + assertEquals("i", variable.getName().getValue()); + assertNull(variable.getValue()); + }); + + register( + () -> "package be.jeffcheasey88;" + + "" + + "public static final class Test{ " + + " private final int i = 4;" + + "}", + (javafile) -> { + Class clazz = checkClass(javafile); + List elements = clazz.getElements(); + assertNotNull(elements); + assertEquals(1, elements.size()); + JavaElement element = elements.get(0); + assertNotNull(element); + assertTrue(element instanceof Variable); + Variable variable = (Variable) element; + assertEquals(Modifier.PRIVATE+Modifier.FINAL, variable.getModifier()); + assertEquals("int", variable.getType().getValue()); + assertEquals("i", variable.getName().getValue()); + assertEquals("4", variable.getValue().getToken().getValue()); + }); + + register( + () -> "package be.jeffcheasey88;" + + "" + + "public static final class Test{ " + + " private final int i = 4, j;" + + "}", + (javafile) -> { + Class clazz = checkClass(javafile); + List elements = clazz.getElements(); + assertNotNull(elements); + assertEquals(2, elements.size()); + JavaElement element = elements.get(0); + assertNotNull(element); + assertTrue(element instanceof Variable); + Variable variable = (Variable) element; + assertEquals(Modifier.PRIVATE+Modifier.FINAL, variable.getModifier()); + assertEquals("int", variable.getType().getValue()); + assertEquals("i", variable.getName().getValue()); + assertEquals("4", variable.getValue().getToken().getValue()); + + element = elements.get(1); + assertNotNull(element); + assertTrue(element instanceof Variable); + variable = (Variable) element; + assertEquals(Modifier.PRIVATE+Modifier.FINAL, variable.getModifier()); + assertEquals("int", variable.getType().getValue()); + assertEquals("j", variable.getName().getValue()); + assertNull(variable.getValue()); + }); + + register( + () -> "package be.jeffcheasey88;" + + "" + + "public static final class Test{ " + + " private final int i = 4, j = 6;" + + "}", + (javafile) -> { + Class clazz = checkClass(javafile); + List elements = clazz.getElements(); + assertNotNull(elements); + assertEquals(2, elements.size()); + JavaElement element = elements.get(0); + assertNotNull(element); + assertTrue(element instanceof Variable); + Variable variable = (Variable) element; + assertEquals(Modifier.PRIVATE+Modifier.FINAL, variable.getModifier()); + assertEquals("int", variable.getType().getValue()); + assertEquals("i", variable.getName().getValue()); + assertEquals("4", variable.getValue().getToken().getValue()); + + element = elements.get(1); + assertNotNull(element); + assertTrue(element instanceof Variable); + variable = (Variable) element; + assertEquals(Modifier.PRIVATE+Modifier.FINAL, variable.getModifier()); + assertEquals("int", variable.getType().getValue()); + assertEquals("j", variable.getName().getValue()); + assertEquals("6", variable.getValue().getToken().getValue()); + }); + + register( + () -> "package be.jeffcheasey88;" + + "" + + "public static final class Test{ " + + " private final int i = 4, j = 6;" + + " List list;" + + "}", + (javafile) -> { + Class clazz = checkClass(javafile); + List elements = clazz.getElements(); + assertNotNull(elements); + assertEquals(3, elements.size()); + JavaElement element = elements.get(0); + assertNotNull(element); + assertTrue(element instanceof Variable); + Variable variable = (Variable) element; + assertEquals(Modifier.PRIVATE+Modifier.FINAL, variable.getModifier()); + assertEquals("int", variable.getType().getValue()); + assertEquals("i", variable.getName().getValue()); + assertEquals("4", variable.getValue().getToken().getValue()); + + element = elements.get(1); + assertNotNull(element); + assertTrue(element instanceof Variable); + variable = (Variable) element; + assertEquals(Modifier.PRIVATE+Modifier.FINAL, variable.getModifier()); + assertEquals("int", variable.getType().getValue()); + assertEquals("j", variable.getName().getValue()); + assertEquals("6", variable.getValue().getToken().getValue()); + + element = elements.get(2); + assertNotNull(element); + assertTrue(element instanceof Variable); + variable = (Variable) element; + assertEquals(0, variable.getModifier()); + assertEquals("List", variable.getType().getValue()); + assertEquals("list", variable.getName().getValue()); + assertNull(variable.getValue()); + }); + } + +}