diff --git a/src/dev/peerat/parser/java/JavaParser.java b/src/dev/peerat/parser/java/JavaParser.java index 4366714..25ad364 100644 --- a/src/dev/peerat/parser/java/JavaParser.java +++ b/src/dev/peerat/parser/java/JavaParser.java @@ -968,7 +968,7 @@ public class JavaParser extends Parser { (bag, token) -> bag.set("implement", bag.get("implement").concat(token)))).then(clazz_implement_name); clazz_implement_name.then((validator) -> validator.validate((token) -> token.getValue().equals("{"))) .end((parent, bag) -> { - Class current = new Class((((AnnotableBuffer)parent).getAnnotationBuffer()), bag.get("name"), bag.get("extend"), bag.get("implements")); + Class current = new Class((((AnnotableBuffer)parent).getAnnotationBuffer()), bag.get("name"), bag.get("extend"), bag.get("implement")); if(parent instanceof ClassContainer) ((ClassContainer)parent).addClass(current); return current; }) @@ -979,7 +979,7 @@ public class JavaParser extends Parser { .then(new RedirectStateTree<>(type, (global, local) -> global.set("extend", local.get()))); clazz_extend.then((validator) -> validator.validate((token) -> token.getValue().equals("{"))) .end((parent, bag) -> { - Class current = new Class((((AnnotableBuffer)parent).getAnnotationBuffer()), bag.get("name"), bag.get("extend"), bag.get("implements")); + Class current = new Class((((AnnotableBuffer)parent).getAnnotationBuffer()), bag.get("name"), bag.get("extend"), bag.get("implement")); if(parent instanceof ClassContainer) ((ClassContainer)parent).addClass(current); return current; }) @@ -1001,7 +1001,7 @@ public class JavaParser extends Parser { (bag, token) -> bag.set("name", token))); StateTree interface_start = interface_base.then((validator) -> validator.validate((token) -> token.getValue().equals("{"))); interface_start.end((parent,bag) -> { - Interface current = new Interface((((AnnotableBuffer)parent).getAnnotationBuffer()), bag.get("name")); + Interface current = new Interface((((AnnotableBuffer)parent).getAnnotationBuffer()), bag.get("name"), bag.get("extend")); if(parent instanceof ClassContainer) ((ClassContainer)parent).addClass(current); return current; }) @@ -1009,7 +1009,7 @@ public class JavaParser extends Parser { .unique((validator) -> validator.validate((token) -> token.getValue().equals("}"))).end((a,b) -> a); interface_base.then((validator) -> validator.validate((token) -> token.getValue().equals("extends"))) - .then(new RedirectStateTree<>(type, (global, local) -> global.set(null))) + .then(new RedirectStateTree<>(type, (global, local) -> global.set("extend", local.get()))) .then(interface_start); StateTree interface_mod = clazz_.then(new RedirectStateTree<>(modifier, (global, local) -> global.set("modifier", local))); @@ -1029,7 +1029,7 @@ public class JavaParser extends Parser { StateTree enum_start = enum_base.then((validator) -> validator.validate((token) -> token.getValue().equals("{"))); enum_start.end((parent,bag) -> { - Enumeration current = new Enumeration((((AnnotableBuffer)parent).getAnnotationBuffer()), bag.get("name")); + Enumeration current = new Enumeration((((AnnotableBuffer)parent).getAnnotationBuffer()), bag.get("name"), bag.get("implement")); if(parent instanceof ClassContainer) ((ClassContainer)parent).addClass(current); return current; }) diff --git a/test/dev/peerat/parser/java/element/clazz/ClazzWithExtend.java b/test/dev/peerat/parser/java/element/clazz/ClazzWithExtend.java new file mode 100644 index 0000000..04a5747 --- /dev/null +++ b/test/dev/peerat/parser/java/element/clazz/ClazzWithExtend.java @@ -0,0 +1,29 @@ +package dev.peerat.parser.java.element.clazz; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import dev.peerat.parser.java.Class; +import dev.peerat.parser.java.ClassBase; +import dev.peerat.parser.java.element.BaseElementTests; + +public class ClazzWithExtend extends BaseElementTests{ + + { + register( + () -> "package be.jeffcheasey88;" + + "" + + "public class Test extends MyTest{}", + (javafile) -> { + ClassBase clazzb = javafile.getMainClass(); + assertNotNull(clazzb); + assertTrue(clazzb instanceof Class); + Class clazz = (Class)clazzb; + assertEquals("Test", clazz.getName().getValue()); + assertEquals(0, clazz.getElements().size()); + assertEquals("MyTest", clazz.getExtension().getValue()); + }); + } + +} diff --git a/test/dev/peerat/parser/java/element/clazz/ClazzWithExtendsAndImplements.java b/test/dev/peerat/parser/java/element/clazz/ClazzWithExtendsAndImplements.java new file mode 100644 index 0000000..4199ec1 --- /dev/null +++ b/test/dev/peerat/parser/java/element/clazz/ClazzWithExtendsAndImplements.java @@ -0,0 +1,30 @@ +package dev.peerat.parser.java.element.clazz; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import dev.peerat.parser.java.Class; +import dev.peerat.parser.java.ClassBase; +import dev.peerat.parser.java.element.BaseElementTests; + +public class ClazzWithExtendsAndImplements extends BaseElementTests{ + + { + register( + () -> "package be.jeffcheasey88;" + + "" + + "public class Test extends MyBigTest implements MyTest{}", + (javafile) -> { + ClassBase clazzb = javafile.getMainClass(); + assertNotNull(clazzb); + assertTrue(clazzb instanceof Class); + Class clazz = (Class)clazzb; + assertEquals("Test", clazz.getName().getValue()); + assertEquals(0, clazz.getElements().size()); + assertEquals("MyBigTest", clazz.getExtension().getValue()); + assertEquals("MyTest", clazz.getImplementations().getValue()); //where pouvoir en récuperer plusieurs ? + }); + } + +} diff --git a/test/dev/peerat/parser/java/element/clazz/ClazzWithImplements.java b/test/dev/peerat/parser/java/element/clazz/ClazzWithImplements.java new file mode 100644 index 0000000..a0e6d6d --- /dev/null +++ b/test/dev/peerat/parser/java/element/clazz/ClazzWithImplements.java @@ -0,0 +1,29 @@ +package dev.peerat.parser.java.element.clazz; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import dev.peerat.parser.java.Class; +import dev.peerat.parser.java.ClassBase; +import dev.peerat.parser.java.element.BaseElementTests; + +public class ClazzWithImplements extends BaseElementTests{ + + { + register( + () -> "package be.jeffcheasey88;" + + "" + + "public class Test implements MyTest{}", + (javafile) -> { + ClassBase clazzb = javafile.getMainClass(); + assertNotNull(clazzb); + assertTrue(clazzb instanceof Class); + Class clazz = (Class)clazzb; + assertEquals("Test", clazz.getName().getValue()); + assertEquals(0, clazz.getElements().size()); + assertEquals("MyTest", clazz.getImplementations().getValue()); //where pouvoir en récuperer plusieurs ? + }); + } + +} diff --git a/test/dev/peerat/parser/java/element/clazz/EnumWithImplements.java b/test/dev/peerat/parser/java/element/clazz/EnumWithImplements.java new file mode 100644 index 0000000..226a965 --- /dev/null +++ b/test/dev/peerat/parser/java/element/clazz/EnumWithImplements.java @@ -0,0 +1,30 @@ +package dev.peerat.parser.java.element.clazz; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import dev.peerat.parser.java.Class; +import dev.peerat.parser.java.ClassBase; +import dev.peerat.parser.java.Enumeration; +import dev.peerat.parser.java.element.BaseElementTests; + +public class EnumWithImplements extends BaseElementTests{ + + { + register( + () -> "package be.jeffcheasey88;" + + "" + + "public enum Test implements MyTest{}", + (javafile) -> { + ClassBase clazzb = javafile.getMainClass(); + assertNotNull(clazzb); + assertTrue(clazzb instanceof Enumeration); + Enumeration clazz = (Enumeration)clazzb; + assertEquals("Test", clazz.getName().getValue()); + assertEquals(0, clazz.getElements().size()); + assertEquals("MyTest", clazz.getExtension().getValue()); + }); + } + +} diff --git a/test/dev/peerat/parser/java/element/clazz/InterfaceWithExtends.java b/test/dev/peerat/parser/java/element/clazz/InterfaceWithExtends.java new file mode 100644 index 0000000..8ea7768 --- /dev/null +++ b/test/dev/peerat/parser/java/element/clazz/InterfaceWithExtends.java @@ -0,0 +1,29 @@ +package dev.peerat.parser.java.element.clazz; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import dev.peerat.parser.java.ClassBase; +import dev.peerat.parser.java.Interface; +import dev.peerat.parser.java.element.BaseElementTests; + +public class InterfaceWithExtends extends BaseElementTests{ + + { + register( + () -> "package be.jeffcheasey88;" + + "" + + "public interface Test extends MyTest{}", + (javafile) -> { + ClassBase clazzb = javafile.getMainClass(); + assertNotNull(clazzb); + assertTrue(clazzb instanceof Interface); + Interface clazz = (Interface)clazzb; + assertEquals("Test", clazz.getName().getValue()); + assertEquals(0, clazz.getElements().size()); + assertEquals("MyTest", clazz.getExtension().getValue()); + }); + } + +}