diff --git a/src/main/java/analyzer/exercises/leap/AvoidConditionalLogic.java b/src/main/java/analyzer/exercises/leap/AvoidIfStatements.java
similarity index 59%
rename from src/main/java/analyzer/exercises/leap/AvoidConditionalLogic.java
rename to src/main/java/analyzer/exercises/leap/AvoidIfStatements.java
index 161de18f..0d95b006 100644
--- a/src/main/java/analyzer/exercises/leap/AvoidConditionalLogic.java
+++ b/src/main/java/analyzer/exercises/leap/AvoidIfStatements.java
@@ -3,12 +3,12 @@
import analyzer.Comment;
/**
- * @see Markdown Template
+ * @see Markdown Template
*/
-class AvoidConditionalLogic extends Comment {
+class AvoidIfStatements extends Comment {
@Override
public String getKey() {
- return "java.leap.avoid_conditional_logic";
+ return "java.leap.avoid_if_statements";
}
@Override
diff --git a/src/main/java/analyzer/exercises/leap/AvoidMultipleTernary.java b/src/main/java/analyzer/exercises/leap/AvoidMultipleTernary.java
new file mode 100644
index 00000000..6fe649ec
--- /dev/null
+++ b/src/main/java/analyzer/exercises/leap/AvoidMultipleTernary.java
@@ -0,0 +1,18 @@
+package analyzer.exercises.leap;
+
+import analyzer.Comment;
+
+/**
+ * @see Markdown Template
+ */
+class AvoidMultipleTernary extends Comment {
+ @Override
+ public String getKey() {
+ return "java.leap.avoid_multiple_ternary";
+ }
+
+ @Override
+ public Type getType() {
+ return Type.ACTIONABLE;
+ }
+}
diff --git a/src/main/java/analyzer/exercises/leap/LeapAnalyzer.java b/src/main/java/analyzer/exercises/leap/LeapAnalyzer.java
index c161221f..be8d86b0 100644
--- a/src/main/java/analyzer/exercises/leap/LeapAnalyzer.java
+++ b/src/main/java/analyzer/exercises/leap/LeapAnalyzer.java
@@ -70,13 +70,15 @@ public void visit(IntegerLiteralExpr node, OutputCollector output) {
@Override
public void visit(IfStmt node, OutputCollector output) {
- output.addComment(new AvoidConditionalLogic());
+ output.addComment(new AvoidIfStatements());
super.visit(node, output);
}
@Override
public void visit(ConditionalExpr node, OutputCollector output) {
- output.addComment(new AvoidConditionalLogic());
+ if (node.getThenExpr().isConditionalExpr() || node.getElseExpr().isConditionalExpr()) {
+ output.addComment(new AvoidMultipleTernary());
+ }
super.visit(node, output);
}
diff --git a/src/test/java/analyzer/AnalyzerIntegrationTest.java b/src/test/java/analyzer/AnalyzerIntegrationTest.java
index 26315c72..4b8cccde 100644
--- a/src/test/java/analyzer/AnalyzerIntegrationTest.java
+++ b/src/test/java/analyzer/AnalyzerIntegrationTest.java
@@ -68,10 +68,11 @@ void lasagna(String scenario) throws IOException {
@ValueSource(strings = {
"HardCodedTestCases",
"OptimalSolution",
+ "OptimalTernary",
"UsingGregorianCalendar",
"UsingIfStatements",
"UsingJavaTime",
- "UsingTernary",
+ "UsingMultipleTernary",
"UsingTooManyChecks",
})
void leap(String scenario) throws IOException {
diff --git a/src/test/resources/analyzer/AnalyzerIntegrationTest.leap.OptimalTernary.approved.txt b/src/test/resources/analyzer/AnalyzerIntegrationTest.leap.OptimalTernary.approved.txt
new file mode 100644
index 00000000..22116aca
--- /dev/null
+++ b/src/test/resources/analyzer/AnalyzerIntegrationTest.leap.OptimalTernary.approved.txt
@@ -0,0 +1,3 @@
+{
+ "comments": []
+}
\ No newline at end of file
diff --git a/src/test/resources/analyzer/AnalyzerIntegrationTest.leap.UsingIfStatements.approved.txt b/src/test/resources/analyzer/AnalyzerIntegrationTest.leap.UsingIfStatements.approved.txt
index 675b1c3a..f649bc25 100644
--- a/src/test/resources/analyzer/AnalyzerIntegrationTest.leap.UsingIfStatements.approved.txt
+++ b/src/test/resources/analyzer/AnalyzerIntegrationTest.leap.UsingIfStatements.approved.txt
@@ -1,7 +1,7 @@
{
"comments": [
{
- "comment": "java.leap.avoid_conditional_logic",
+ "comment": "java.leap.avoid_if_statements",
"params": {},
"type": "actionable"
},
diff --git a/src/test/resources/analyzer/AnalyzerIntegrationTest.leap.UsingTernary.approved.txt b/src/test/resources/analyzer/AnalyzerIntegrationTest.leap.UsingMultipleTernary.approved.txt
similarity index 78%
rename from src/test/resources/analyzer/AnalyzerIntegrationTest.leap.UsingTernary.approved.txt
rename to src/test/resources/analyzer/AnalyzerIntegrationTest.leap.UsingMultipleTernary.approved.txt
index 675b1c3a..293be9f1 100644
--- a/src/test/resources/analyzer/AnalyzerIntegrationTest.leap.UsingTernary.approved.txt
+++ b/src/test/resources/analyzer/AnalyzerIntegrationTest.leap.UsingMultipleTernary.approved.txt
@@ -1,7 +1,7 @@
{
"comments": [
{
- "comment": "java.leap.avoid_conditional_logic",
+ "comment": "java.leap.avoid_multiple_ternary",
"params": {},
"type": "actionable"
},
diff --git a/src/test/resources/scenarios/leap/OptimalTernary.java b/src/test/resources/scenarios/leap/OptimalTernary.java
new file mode 100644
index 00000000..b44ffda0
--- /dev/null
+++ b/src/test/resources/scenarios/leap/OptimalTernary.java
@@ -0,0 +1,5 @@
+class Leap {
+ boolean isLeapYear(int year) {
+ return (year % 100 == 0) ? (year % 400 == 0) : (year % 4 == 0);
+ }
+}
diff --git a/src/test/resources/scenarios/leap/UsingTernary.java b/src/test/resources/scenarios/leap/UsingMultipleTernary.java
similarity index 100%
rename from src/test/resources/scenarios/leap/UsingTernary.java
rename to src/test/resources/scenarios/leap/UsingMultipleTernary.java