package dev.peerat.parser.java.element.function; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; 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.Function; import dev.peerat.parser.java.JavaElement; import dev.peerat.parser.java.Variable; import dev.peerat.parser.java.element.BaseElementTests; public class ConstructorFunction extends BaseElementTests{ { register( "package be.jeffcheasey88;" + "" + "public static final class Test{ " + " Test(){}" + "}", (javafile) -> { Class clazz = checkClass(javafile); List elements = clazz.getElements(); assertNotNull(elements); assertEquals(1, elements.size()); Function function = checkFunction(elements.get(0)); assertNotNull(function.getName()); assertEquals(function.getName().getValue(), function.getReturnType().getValue()); assertEquals(0, function.getElements().size()); assertEquals(0, function.getModifier()); assertNull(function.getParameters()); }); register( "package be.jeffcheasey88;" + "" + "public static final class Test{ " + " public Test(){}" + "}", (javafile) -> { Class clazz = checkClass(javafile); List elements = clazz.getElements(); assertNotNull(elements); assertEquals(1, elements.size()); Function function = checkFunction(elements.get(0)); assertNotNull(function.getName()); assertEquals(0, function.getElements().size()); assertEquals(Modifier.PUBLIC, function.getModifier()); assertNull(function.getParameters()); }); register( "package be.jeffcheasey88;" + "" + "public static final class Test{ " + " private Test(){}" + "}", (javafile) -> { Class clazz = checkClass(javafile); List elements = clazz.getElements(); assertNotNull(elements); assertEquals(1, elements.size()); Function function = checkFunction(elements.get(0)); assertNotNull(function.getName()); assertEquals(0, function.getElements().size()); assertEquals(Modifier.PRIVATE, function.getModifier()); assertNull(function.getParameters()); }); register( "package be.jeffcheasey88;" + "" + "public static final class Test{ " + " public Test(int i){}" + "}", (javafile) -> { Class clazz = checkClass(javafile); List elements = clazz.getElements(); assertNotNull(elements); assertEquals(1, elements.size()); Function function = checkFunction(elements.get(0)); assertNotNull(function.getName()); assertEquals(0, function.getElements().size()); assertEquals(Modifier.PUBLIC, function.getModifier()); assertEquals(1, function.getParameters().size()); Variable param1 = checkVariable(function.getParameters().get(0)); assertEquals("i", param1.getName().getValue()); assertEquals("int", param1.getType().getValue()); assertNull(param1.getValue()); }); register( "package be.jeffcheasey88;" + "" + "public static final class Test{ " + " public Test(int i, int j){}" + "}", (javafile) -> { Class clazz = checkClass(javafile); List elements = clazz.getElements(); assertNotNull(elements); assertEquals(1, elements.size()); Function function = checkFunction(elements.get(0)); assertNotNull(function.getName()); assertEquals(0, function.getElements().size()); assertEquals(Modifier.PUBLIC, function.getModifier()); assertEquals(2, function.getParameters().size()); Variable param1 = checkVariable(function.getParameters().get(0)); Variable param2 = checkVariable(function.getParameters().get(1)); assertEquals("i", param1.getName().getValue()); assertEquals("int", param1.getType().getValue()); assertNull(param1.getValue()); assertEquals("j", param2.getName().getValue()); assertEquals("int", param2.getType().getValue()); assertNull(param2.getValue()); }); register( "package be.jeffcheasey88;" + "" + "public static final class Test{ " + " public Test(int i, int j) throws Exception{}" + "}", (javafile) -> { Class clazz = checkClass(javafile); List elements = clazz.getElements(); assertNotNull(elements); assertEquals(1, elements.size()); Function function = checkFunction(elements.get(0)); assertNotNull(function.getName()); assertEquals(0, function.getElements().size()); assertEquals(Modifier.PUBLIC, function.getModifier()); assertEquals(2, function.getParameters().size()); Variable param1 = checkVariable(function.getParameters().get(0)); Variable param2 = checkVariable(function.getParameters().get(1)); assertEquals("i", param1.getName().getValue()); assertEquals("int", param1.getType().getValue()); assertNull(param1.getValue()); assertEquals("j", param2.getName().getValue()); assertEquals("int", param2.getType().getValue()); assertNull(param2.getValue()); assertNotNull(function.getThrowables()); assertEquals("Exception", function.getThrowables().get(0).getValue()); }); } }