public void run(KieContainer kieContainer, SimulationDescriptor simulationDescriptor, Scenario scenario, ExpressionEvaluator expressionEvaluator, ClassLoader classLoader, ScenarioRunnerData scenarioRunnerData) { extractGivenValues(simulationDescriptor, scenario.getUnmodifiableFactMappingValues(), classLoader, expressionEvaluator) .forEach(scenarioRunnerData::addGiven); extractExpectedValues(scenario.getUnmodifiableFactMappingValues()).forEach(scenarioRunnerData::addExpect); RequestContext requestContext = executeScenario(kieContainer, scenarioRunnerData, expressionEvaluator, simulationDescriptor); verifyConditions(simulationDescriptor, scenarioRunnerData, expressionEvaluator, requestContext); validateAssertion(scenarioRunnerData.getResults(), scenario); }
@Test public void cloneScenarioTest() { Scenario clonedScenario = simulation.cloneScenario(0, 1); assertEquals(originalScenario.getDescription(), clonedScenario.getDescription()); assertEquals(originalScenario.getUnmodifiableFactMappingValues().size(), clonedScenario.getUnmodifiableFactMappingValues().size()); assertEquals(originalScenario, simulation.getScenarioByIndex(0)); assertEquals(clonedScenario, simulation.getScenarioByIndex(1)); assertNotEquals(originalScenario, clonedScenario); assertNotEquals(originalScenario.getUnmodifiableFactMappingValues().get(0), clonedScenario.getUnmodifiableFactMappingValues().get(0)); }
@Test public void cloneScenarioTest() { Scenario clonedScenario = simulation.cloneScenario(0, 1); assertEquals(originalScenario.getDescription(), clonedScenario.getDescription()); assertEquals(originalScenario.getUnmodifiableFactMappingValues().size(), clonedScenario.getUnmodifiableFactMappingValues().size()); assertEquals(originalScenario, simulation.getScenarioByIndex(0)); assertEquals(clonedScenario, simulation.getScenarioByIndex(1)); assertNotEquals(originalScenario, clonedScenario); assertNotEquals(originalScenario.getUnmodifiableFactMappingValues().get(0), clonedScenario.getUnmodifiableFactMappingValues().get(0)); }
@Test public void extractExpectedValuesTest() { List<ScenarioExpect> scenario1Outputs = runnerHelper.extractExpectedValues(scenario1.getUnmodifiableFactMappingValues()); assertEquals(1, scenario1Outputs.size()); scenario2.addOrUpdateMappingValue(FactIdentifier.create("TEST", String.class.getCanonicalName()), ExpressionIdentifier.create("TEST", FactMappingType.EXPECT), "TEST"); List<ScenarioExpect> scenario2Outputs = runnerHelper.extractExpectedValues(scenario2.getUnmodifiableFactMappingValues()); assertEquals(3, scenario2Outputs.size()); assertEquals(1, scenario2Outputs.stream().filter(ScenarioExpect::isNewFact).count()); }
@Test public void groupByFactIdentifierAndFilterTest() { Map<FactIdentifier, List<FactMappingValue>> scenario1Given = runnerHelper.groupByFactIdentifierAndFilter(scenario1.getUnmodifiableFactMappingValues(), FactMappingType.GIVEN); Map<FactIdentifier, List<FactMappingValue>> scenario1Expected = runnerHelper.groupByFactIdentifierAndFilter(scenario1.getUnmodifiableFactMappingValues(), FactMappingType.EXPECT); Map<FactIdentifier, List<FactMappingValue>> scenario2Given = runnerHelper.groupByFactIdentifierAndFilter(scenario2.getUnmodifiableFactMappingValues(), FactMappingType.GIVEN); Map<FactIdentifier, List<FactMappingValue>> scenario2Expected = runnerHelper.groupByFactIdentifierAndFilter(scenario2.getUnmodifiableFactMappingValues(), FactMappingType.EXPECT); assertEquals(1, scenario1Given.keySet().size()); assertEquals(1, scenario1Expected.keySet().size()); assertEquals(2, scenario2Given.keySet().size()); assertEquals(2, scenario2Expected.keySet().size()); assertEquals(1, scenario1Given.get(personFactIdentifier).size()); assertEquals(1, scenario1Expected.get(personFactIdentifier).size()); assertEquals(1, scenario2Given.get(disputeFactIdentifier).size()); assertEquals(1, scenario2Expected.get(disputeFactIdentifier).size()); Scenario scenario = new Scenario(); scenario.addMappingValue(FactIdentifier.EMPTY, ExpressionIdentifier.DESCRIPTION, null); assertEquals(0, runnerHelper.groupByFactIdentifierAndFilter(scenario.getUnmodifiableFactMappingValues(), FactMappingType.GIVEN).size()); }
@Test public void sortTest() { ExpressionIdentifier expressionIdentifier2 = ExpressionIdentifier.create("Test expression 2", FactMappingType.GIVEN); simulationDescriptor.addFactMapping(factIdentifier, expressionIdentifier); simulationDescriptor.addFactMapping(factIdentifier, expressionIdentifier2); scenario.addMappingValue(factIdentifier, expressionIdentifier2, "Test 2"); FactMappingValue factMappingValue1 = scenario.addMappingValue(factIdentifier, this.expressionIdentifier, "Test"); assertEquals(scenario.getUnmodifiableFactMappingValues().get(1), factMappingValue1); scenario.sort(); assertNotEquals(scenario.getUnmodifiableFactMappingValues().get(1), factMappingValue1); assertEquals(scenario.getUnmodifiableFactMappingValues().get(0), factMappingValue1); } }
@Test public void sortTest() { ExpressionIdentifier expressionIdentifier2 = ExpressionIdentifier.create("Test expression 2", FactMappingType.GIVEN); simulationDescriptor.addFactMapping(factIdentifier, expressionIdentifier); simulationDescriptor.addFactMapping(factIdentifier, expressionIdentifier2); scenario.addMappingValue(factIdentifier, expressionIdentifier2, "Test 2"); FactMappingValue factMappingValue1 = scenario.addMappingValue(factIdentifier, this.expressionIdentifier, "Test"); assertEquals(scenario.getUnmodifiableFactMappingValues().get(1), factMappingValue1); scenario.sort(); assertNotEquals(scenario.getUnmodifiableFactMappingValues().get(1), factMappingValue1); assertEquals(scenario.getUnmodifiableFactMappingValues().get(0), factMappingValue1); } }
@Test public void extractGivenValuesTest() { List<ScenarioGiven> scenario1Inputs = runnerHelper.extractGivenValues(simulation.getSimulationDescriptor(), scenario1.getUnmodifiableFactMappingValues(), classLoader, expressionEvaluator); assertEquals(1, scenario1Inputs.size()); List<ScenarioGiven> scenario2Inputs = runnerHelper.extractGivenValues(simulation.getSimulationDescriptor(), scenario2.getUnmodifiableFactMappingValues(), classLoader, expressionEvaluator); assertEquals(2, scenario2Inputs.size()); }
@Test public void removeFactMappingByIndex() { assertEquals(2, simulation.getUnmodifiableScenarios().get(0).getUnmodifiableFactMappingValues().size()); assertEquals(1, simulation.getSimulationDescriptor().getUnmodifiableFactMappings().size()); simulation.removeFactMappingByIndex(0); assertEquals(1, simulation.getUnmodifiableScenarios().get(0).getUnmodifiableFactMappingValues().size()); assertEquals(0, simulation.getSimulationDescriptor().getUnmodifiableFactMappings().size()); }
@Test public void removeFactMappingByIndex() { assertEquals(2, simulation.getUnmodifiableScenarios().get(0).getUnmodifiableFactMappingValues().size()); assertEquals(1, simulation.getSimulationDescriptor().getUnmodifiableFactMappings().size()); simulation.removeFactMappingByIndex(0); assertEquals(1, simulation.getUnmodifiableScenarios().get(0).getUnmodifiableFactMappingValues().size()); assertEquals(0, simulation.getSimulationDescriptor().getUnmodifiableFactMappings().size()); }
@Test public void removeFactMapping() { assertEquals(2, simulation.getUnmodifiableScenarios().get(0).getUnmodifiableFactMappingValues().size()); assertEquals(1, simulation.getSimulationDescriptor().getUnmodifiableFactMappings().size()); simulation.removeFactMapping(simulation.getSimulationDescriptor().getFactMappingByIndex(0)); assertEquals(1, simulation.getUnmodifiableScenarios().get(0).getUnmodifiableFactMappingValues().size()); assertEquals(0, simulation.getSimulationDescriptor().getUnmodifiableFactMappings().size()); }
@Test public void removeFactMapping() { assertEquals(2, simulation.getUnmodifiableScenarios().get(0).getUnmodifiableFactMappingValues().size()); assertEquals(1, simulation.getSimulationDescriptor().getUnmodifiableFactMappings().size()); simulation.removeFactMapping(simulation.getSimulationDescriptor().getFactMappingByIndex(0)); assertEquals(1, simulation.getUnmodifiableScenarios().get(0).getUnmodifiableFactMappingValues().size()); assertEquals(0, simulation.getSimulationDescriptor().getUnmodifiableFactMappings().size()); }
/** * This method <i>insert</i> a row to the grid and populate it with values taken from given <code>Scenario</code> * @param row */ public void insertRowGridOnly(final int rowIndex, final GridRow row, final Scenario scenario) { checkSimulation(); super.insertRow(rowIndex, row); scenario.getUnmodifiableFactMappingValues().forEach(value -> { FactIdentifier factIdentifier = value.getFactIdentifier(); ExpressionIdentifier expressionIdentifier = value.getExpressionIdentifier(); if (value.getRawValue() == null || value.getRawValue() instanceof String) { // Let' put a placeholder String stringValue = (String) value.getRawValue(); int columnIndex = simulation.getSimulationDescriptor().getIndexByIdentifier(factIdentifier, expressionIdentifier); String placeHolder = ((ScenarioGridColumn) columns.get(columnIndex)).getPlaceHolder(); setCell(rowIndex, columnIndex, () -> new ScenarioGridCell(new ScenarioGridCellValue(stringValue, placeHolder))); } else { throw new UnsupportedOperationException("Only string is supported at the moment"); } }); updateIndexColumn(); }
when(gridCellValueMock.getValue()).thenReturn(GRID_CELL_TEXT); when(scenarioMock.getUnmodifiableFactMappingValues()).thenReturn(factMappingValuesMock);
@Test public void verifyConditionsTest() { List<ScenarioGiven> scenario1Inputs = runnerHelper.extractGivenValues(simulation.getSimulationDescriptor(), scenario1.getUnmodifiableFactMappingValues(), classLoader, expressionEvaluator); List<ScenarioExpect> scenario1Outputs = runnerHelper.extractExpectedValues(scenario1.getUnmodifiableFactMappingValues()); ScenarioRunnerData scenarioRunnerData1 = new ScenarioRunnerData(); scenario1Inputs.forEach(scenarioRunnerData1::addGiven); scenario1Outputs.forEach(scenarioRunnerData1::addExpect); runnerHelper.verifyConditions(simulation.getSimulationDescriptor(), scenarioRunnerData1, expressionEvaluator, null); assertEquals(1, scenarioRunnerData1.getResults().size()); List<ScenarioGiven> scenario2Inputs = runnerHelper.extractGivenValues(simulation.getSimulationDescriptor(), scenario2.getUnmodifiableFactMappingValues(), classLoader, expressionEvaluator); List<ScenarioExpect> scenario2Outputs = runnerHelper.extractExpectedValues(scenario2.getUnmodifiableFactMappingValues()); ScenarioRunnerData scenarioRunnerData2 = new ScenarioRunnerData(); scenario2Inputs.forEach(scenarioRunnerData2::addGiven); scenario2Outputs.forEach(scenarioRunnerData2::addExpect); runnerHelper.verifyConditions(simulation.getSimulationDescriptor(), scenarioRunnerData2, expressionEvaluator, null); assertEquals(2, scenarioRunnerData2.getResults().size()); }
@Test public void getScenarioResultsTest() { List<ScenarioGiven> scenario1Inputs = runnerHelper.extractGivenValues(simulation.getSimulationDescriptor(), scenario1.getUnmodifiableFactMappingValues(), classLoader, expressionEvaluator); List<ScenarioExpect> scenario1Outputs = runnerHelper.extractExpectedValues(scenario1.getUnmodifiableFactMappingValues()); scenario2.getUnmodifiableFactMappingValues(), classLoader, expressionEvaluator); List<ScenarioExpect> scenario2Outputs = runnerHelper.extractExpectedValues(scenario2.getUnmodifiableFactMappingValues());