From 6f8a1b4ceba5a69e5174d5b97b9566c1f135d35b Mon Sep 17 00:00:00 2001 From: jeffcheasey88 Date: Wed, 31 May 2023 15:19:20 +0200 Subject: [PATCH] Operation -> Break --- .../java/operations/LoopAffectOperation.java | 16 +++++++++++++ .../java/operations/OperationFactory.java | 4 +++- .../peeratcode/parser/java/OperationTest.java | 24 ++++++++++++++++++- 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/src/be/jeffcheasey88/peeratcode/parser/java/operations/LoopAffectOperation.java b/src/be/jeffcheasey88/peeratcode/parser/java/operations/LoopAffectOperation.java index b2189b8..5c75309 100644 --- a/src/be/jeffcheasey88/peeratcode/parser/java/operations/LoopAffectOperation.java +++ b/src/be/jeffcheasey88/peeratcode/parser/java/operations/LoopAffectOperation.java @@ -44,4 +44,20 @@ public class LoopAffectOperation extends JavaElement{ System.out.println(start+"continue;"); } } + + public static class BreakOperation extends LoopAffectOperation{ + + private static Pattern PATTERN = Pattern.compile("^(\\s*break\\s*;).*$"); + + public BreakOperation(){ + super(PATTERN); + } + + @Override + public void show(int tab){ + String start = ""; + for(int i = 0; i < tab; i++) start+="\t"; + System.out.println(start+"break;"); + } + } } diff --git a/src/be/jeffcheasey88/peeratcode/parser/java/operations/OperationFactory.java b/src/be/jeffcheasey88/peeratcode/parser/java/operations/OperationFactory.java index 29e0d93..ebd11d8 100644 --- a/src/be/jeffcheasey88/peeratcode/parser/java/operations/OperationFactory.java +++ b/src/be/jeffcheasey88/peeratcode/parser/java/operations/OperationFactory.java @@ -12,6 +12,7 @@ import be.jeffcheasey88.peeratcode.parser.java.Variable; import be.jeffcheasey88.peeratcode.parser.java.operations.ConditionalOperation.ForOperation; import be.jeffcheasey88.peeratcode.parser.java.operations.ConditionalOperation.IfOperation; import be.jeffcheasey88.peeratcode.parser.java.operations.ConditionalOperation.WhileOperation; +import be.jeffcheasey88.peeratcode.parser.java.operations.LoopAffectOperation.BreakOperation; import be.jeffcheasey88.peeratcode.parser.java.operations.LoopAffectOperation.ContinueOperation; public class OperationFactory{ @@ -35,6 +36,7 @@ public class OperationFactory{ this.patterns.put(Pattern.compile("^\\s*do\\s*\\^GENERIC_FUNCTION\\d+.*$"), DoOperation.class); this.patterns.put(Pattern.compile("^\\s*continue\\s*;.*$"), ContinueOperation.class); + this.patterns.put(Pattern.compile("^\\s*break\\s*;.*$"), BreakOperation.class); this.patterns.put(Pattern.compile("^\\s*[^\\^\\s]+\\^GENERIC_PARENTHESIS\\d+;.*$"), MethodCallOperation.class); @@ -54,7 +56,7 @@ public class OperationFactory{ * switch case * return OK * continue OK - * break + * break OK * try catch finally * throw * else OK diff --git a/test/be/jeffcheasey88/peeratcode/parser/java/OperationTest.java b/test/be/jeffcheasey88/peeratcode/parser/java/OperationTest.java index 80d5fd4..ddde132 100644 --- a/test/be/jeffcheasey88/peeratcode/parser/java/OperationTest.java +++ b/test/be/jeffcheasey88/peeratcode/parser/java/OperationTest.java @@ -13,9 +13,9 @@ import org.junit.jupiter.api.TestInstance.Lifecycle; import be.jeffcheasey88.peeratcode.parser.java.operations.ConditionalOperation.ForOperation; import be.jeffcheasey88.peeratcode.parser.java.operations.ConditionalOperation.WhileOperation; import be.jeffcheasey88.peeratcode.parser.java.operations.DoOperation; +import be.jeffcheasey88.peeratcode.parser.java.operations.LoopAffectOperation.BreakOperation; import be.jeffcheasey88.peeratcode.parser.java.operations.LoopAffectOperation.ContinueOperation; import be.jeffcheasey88.peeratcode.parser.java.operations.MethodCallOperation; -import kotlin.coroutines.Continuation; @TestInstance(Lifecycle.PER_CLASS) class OperationTest{ @@ -115,4 +115,26 @@ class OperationTest{ } } + + @Test + void breakOperation(){ + try { + JavaParser parser = parse("package be.jeffcheasey88.peeratcode.parser.java; class Test{ void function(){ for(int i = 0; i < 1; i++) break ; } }"); + Class clazz = parser.getClazz(); + + clazz.show(0); + + assertEquals(1, clazz.getChilds().size()); + Function function = (Function) clazz.getChilds().get(0); + assertEquals(1, function.getChilds().size()); + + assertEquals(ForOperation.class, function.getChilds().get(0).getClass()); + ForOperation f = (ForOperation)function.getChilds().get(0); + assertEquals(1, f.getChilds().size()); + assertEquals(BreakOperation.class, f.getChilds().get(0).getClass()); + } catch (Exception e) { + e.printStackTrace(); + } + + } }