From 2e69f1c72e2ec6df4a8941ee24ac27b484d9bb37 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Tue, 3 Apr 2018 13:42:29 -0700 Subject: [PATCH] Adding more unit tests for IfStatement class Fixes #9314 --- .../config/ir/imperative/IfStatementTest.java | 112 +++++++++++++++++- 1 file changed, 107 insertions(+), 5 deletions(-) diff --git a/logstash-core/src/test/java/org/logstash/config/ir/imperative/IfStatementTest.java b/logstash-core/src/test/java/org/logstash/config/ir/imperative/IfStatementTest.java index dad8b1840c3..f4207384ddc 100644 --- a/logstash-core/src/test/java/org/logstash/config/ir/imperative/IfStatementTest.java +++ b/logstash-core/src/test/java/org/logstash/config/ir/imperative/IfStatementTest.java @@ -1,25 +1,127 @@ package org.logstash.config.ir.imperative; import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import java.util.stream.Stream; import org.logstash.config.ir.InvalidIRException; +import org.logstash.config.ir.graph.BooleanEdge; import org.logstash.config.ir.graph.Graph; +import org.logstash.config.ir.graph.Vertex; import static org.logstash.config.ir.IRHelpers.*; public class IfStatementTest { @Test - public void testEmptyIfStatement() throws InvalidIRException { + public void testEmptyIf() throws InvalidIRException { + Statement trueStatement = new NoopStatement(randMeta()); + Statement falseStatement = new NoopStatement(randMeta()); IfStatement ifStatement = new IfStatement( - randMeta(), - createTestExpression(), - new NoopStatement(randMeta()), - new NoopStatement(randMeta()) + randMeta(), + createTestExpression(), + trueStatement, + falseStatement ); Graph ifStatementGraph = ifStatement.toGraph(); assertTrue(ifStatementGraph.isEmpty()); } + + @Test + public void testIfWithOneTrueStatement() throws InvalidIRException { + Statement trueStatement = new PluginStatement(randMeta(), testPluginDefinition()); + Statement falseStatement = new NoopStatement(randMeta()); + IfStatement ifStatement = new IfStatement( + randMeta(), + createTestExpression(), + trueStatement, + falseStatement + ); + + Graph ifStatementGraph = ifStatement.toGraph(); + assertFalse(ifStatementGraph.isEmpty()); + + Stream trueVertices = ifStatementGraph + .edges() + .filter(e -> e instanceof BooleanEdge) + .map(e -> (BooleanEdge) e) + .filter(e -> e.getEdgeType() == true) + .map(e -> e.getTo()); + assertEquals(1, trueVertices.count()); + + Stream falseVertices = ifStatementGraph + .edges() + .filter(e -> e instanceof BooleanEdge) + .map(e -> (BooleanEdge) e) + .filter(e -> e.getEdgeType() == false) + .map(e -> e.getTo()); + assertEquals(0, falseVertices.count()); + } + + + @Test + public void testIfWithOneFalseStatement() throws InvalidIRException { + Statement trueStatement = new NoopStatement(randMeta()); + Statement falseStatement = new PluginStatement(randMeta(), testPluginDefinition()); + IfStatement ifStatement = new IfStatement( + randMeta(), + createTestExpression(), + trueStatement, + falseStatement + ); + + Graph ifStatementGraph = ifStatement.toGraph(); + assertFalse(ifStatementGraph.isEmpty()); + + Stream trueVertices = ifStatementGraph + .edges() + .filter(e -> e instanceof BooleanEdge) + .map(e -> (BooleanEdge) e) + .filter(e -> e.getEdgeType() == true) + .map(e -> e.getTo()); + assertEquals(0, trueVertices.count()); + + Stream falseVertices = ifStatementGraph + .edges() + .filter(e -> e instanceof BooleanEdge) + .map(e -> (BooleanEdge) e) + .filter(e -> e.getEdgeType() == false) + .map(e -> e.getTo()); + assertEquals(1, falseVertices.count()); + } + + @Test + public void testIfWithOneTrueOneFalseStatement() throws InvalidIRException { + Statement trueStatement = new PluginStatement(randMeta(), testPluginDefinition()); + Statement falseStatement = new PluginStatement(randMeta(), testPluginDefinition()); + IfStatement ifStatement = new IfStatement( + randMeta(), + createTestExpression(), + trueStatement, + falseStatement + ); + + Graph ifStatementGraph = ifStatement.toGraph(); + assertFalse(ifStatementGraph.isEmpty()); + + Stream trueVertices = ifStatementGraph + .edges() + .filter(e -> e instanceof BooleanEdge) + .map(e -> (BooleanEdge) e) + .filter(e -> e.getEdgeType() == true) + .map(e -> e.getTo()); + assertEquals(1, trueVertices.count()); + + Stream falseVertices = ifStatementGraph + .edges() + .filter(e -> e instanceof BooleanEdge) + .map(e -> (BooleanEdge) e) + .filter(e -> e.getEdgeType() == false) + .map(e -> e.getTo()); + assertEquals(1, falseVertices.count()); + } }