package org.optaplanner.testgen; import java.io.File; import org.junit.Assert; import org.junit.Test; import org.kie.api.KieServices; import org.kie.api.builder.KieFileSystem; import org.kie.api.runtime.KieContainer; import org.kie.api.runtime.KieSession; import org.optaplanner.core.api.score.holder.ScoreHolder; import org.optaplanner.core.impl.score.buildin.simple.SimpleScoreDefinition; import org.optaplanner.core.impl.testdata.domain.TestdataEntity; import org.optaplanner.core.impl.testdata.domain.TestdataValue; public class TestGenWriterOutput { @Test public void test() { KieServices kieServices = KieServices.Factory.get(); KieFileSystem kfs = kieServices.newKieFileSystem(); kfs.write(kieServices.getResources() .newFileSystemResource(new File("SCORE_DRL_ABSOLUTE_PATH"), "UTF-8")); kfs.write(kieServices.getResources() .newClassPathResource("x")); kfs.write(kieServices.getResources() .newClassPathResource("y")); kieServices.newKieBuilder(kfs).buildAll(); KieContainer kieContainer = kieServices.newKieContainer(kieServices.getRepository().getDefaultReleaseId()); KieSession kieSession = kieContainer.newKieSession(); ScoreHolder scoreHolder = new SimpleScoreDefinition().buildScoreHolder(true); kieSession.setGlobal("scoreHolder", scoreHolder); String string_0 = new String(); TestdataEntity testdataEntity_1 = new TestdataEntity(); TestdataValue testdataValue_2 = new TestdataValue(); //abc //E testdataEntity_1.setCode("E"); //V testdataValue_2.setCode("V"); //operation I #0 kieSession.insert(testdataValue_2); //operation U #1 testdataEntity_1.setValue(testdataValue_2); kieSession.update(kieSession.getFactHandle(testdataEntity_1), testdataEntity_1, "value"); //operation D #2 kieSession.delete(kieSession.getFactHandle(testdataValue_2)); //operation F #3 kieSession.fireAllRules(); // This is the corrupted score, just to make sure the bug is reproducible Assert.assertEquals("1", scoreHolder.extractScore(0).toString()); kieSession = kieContainer.newKieSession(); scoreHolder = new SimpleScoreDefinition().buildScoreHolder(true); kieSession.setGlobal("scoreHolder", scoreHolder); // Insert everything into a fresh session to see the uncorrupted score //operation I #0 kieSession.insert(testdataValue_2); kieSession.fireAllRules(); Assert.assertEquals("0", scoreHolder.extractScore(0).toString()); } }