@Test public void addConstraintMatchWithConstraintMatch() { addConstraintMatch(true); }
@Test public void rewardPenalizeWithoutConstraintMatch() { rewardPenalize(false); }
RuleContext hard1 = mockRuleContext("hard1"); scoreHolder.addHardConstraintMatch(hard1, -1L); assertEquals(HardMediumSoftLongScore.of(-1L, 0L, 0L), scoreHolder.extractScore(0)); RuleContext hard2Undo = mockRuleContext("hard2Undo"); scoreHolder.addHardConstraintMatch(hard2Undo, -8L); assertEquals(HardMediumSoftLongScore.of(-9L, 0L, 0L), scoreHolder.extractScore(0)); callOnDelete(hard2Undo); assertEquals(HardMediumSoftLongScore.of(-1L, 0L, 0L), scoreHolder.extractScore(0)); RuleContext medium1 = mockRuleContext("medium1"); scoreHolder.addMediumConstraintMatch(medium1, -10L); callOnUpdate(medium1); RuleContext soft1 = mockRuleContext("soft1", DEFAULT_JUSTIFICATION, OTHER_JUSTIFICATION); scoreHolder.addSoftConstraintMatch(soft1, -100L); callOnUpdate(soft1); RuleContext multi1 = mockRuleContext("multi1"); scoreHolder.addMultiConstraintMatch(multi1, -1000L, -10000L, -100000L); callOnUpdate(multi1); RuleContext hard3 = mockRuleContext("hard3"); scoreHolder.addHardConstraintMatch(hard3, -1000000L); callOnUpdate(hard3); RuleContext soft2Undo = mockRuleContext("soft2Undo", UNDO_JUSTIFICATION); scoreHolder.addSoftConstraintMatch(soft2Undo, -99L); callOnDelete(soft2Undo);
public void rewardPenalize(boolean constraintMatchEnabled) { HardMediumSoftLongScoreHolder scoreHolder = new HardMediumSoftLongScoreHolder(constraintMatchEnabled); Rule hard1 = mockRule("hard1"); scoreHolder.configureConstraintWeight(hard1, HardMediumSoftLongScore.ofHard(10L)); Rule hard2 = mockRule("hard2"); scoreHolder.configureConstraintWeight(hard2, HardMediumSoftLongScore.ofHard(100L)); Rule medium1 = mockRule("medium1"); scoreHolder.configureConstraintWeight(medium1, HardMediumSoftLongScore.ofMedium(10L)); Rule soft1 = mockRule("soft1"); scoreHolder.configureConstraintWeight(soft1, HardMediumSoftLongScore.ofSoft(10L)); Rule soft2 = mockRule("soft2"); scoreHolder.configureConstraintWeight(soft2, HardMediumSoftLongScore.ofSoft(100L)); scoreHolder.penalize(mockRuleContext(hard1)); assertEquals(HardMediumSoftLongScore.of(-10L, 0L, 0L), scoreHolder.extractScore(0)); scoreHolder.penalize(mockRuleContext(hard2), 2L); assertEquals(HardMediumSoftLongScore.of(-210L, 0L, 0L), scoreHolder.extractScore(0)); scoreHolder.penalize(mockRuleContext(medium1), 9L); assertEquals(HardMediumSoftLongScore.of(-210L, -90L, 0L), scoreHolder.extractScore(0)); scoreHolder.reward(mockRuleContext(soft1)); assertEquals(HardMediumSoftLongScore.of(-210L, -90L, 10L), scoreHolder.extractScore(0)); scoreHolder.reward(mockRuleContext(soft2), 3L); assertEquals(HardMediumSoftLongScore.of(-210L, -90L, 310L), scoreHolder.extractScore(0)); }
@Test public void rewardPenalizeWithConstraintMatch() { rewardPenalize(true); }
@Test public void addConstraintMatchWithoutConstraintMatch() { addConstraintMatch(false); }