@Test public void addConstraintMatchWithConstraintMatch() { addConstraintMatch(true); }
@Test public void rewardPenalizeWithConstraintMatch() { rewardPenalize(true); }
RuleContext hard1 = mockRuleContext("hard1"); scoreHolder.addHardConstraintMatch(hard1, -1); assertEquals(HardSoftScore.of(-1, 0), scoreHolder.extractScore(0)); RuleContext hard2Undo = mockRuleContext("hard2Undo"); scoreHolder.addHardConstraintMatch(hard2Undo, -8); assertEquals(HardSoftScore.of(-9, 0), scoreHolder.extractScore(0)); callOnDelete(hard2Undo); assertEquals(HardSoftScore.of(-1, 0), scoreHolder.extractScore(0)); RuleContext soft1 = mockRuleContext("soft1", DEFAULT_JUSTIFICATION, OTHER_JUSTIFICATION); scoreHolder.addSoftConstraintMatch(soft1, -10); callOnUpdate(soft1); scoreHolder.addSoftConstraintMatch(soft1, -20); // Overwrite existing RuleContext multi1 = mockRuleContext("multi1"); scoreHolder.addMultiConstraintMatch(multi1, -100, -1000); callOnUpdate(multi1); scoreHolder.addMultiConstraintMatch(multi1, -300, -4000); // Overwrite existing RuleContext hard3 = mockRuleContext("hard3"); scoreHolder.addHardConstraintMatch(hard3, -10000); callOnUpdate(hard3); scoreHolder.addHardConstraintMatch(hard3, -50000); // Overwrite existing RuleContext soft2Undo = mockRuleContext("soft2Undo", UNDO_JUSTIFICATION); scoreHolder.addSoftConstraintMatch(soft2Undo, -99); callOnDelete(soft2Undo);
public void rewardPenalize(boolean constraintMatchEnabled) { HardSoftScoreHolder scoreHolder = new HardSoftScoreHolder(constraintMatchEnabled); Rule hard1 = mockRule("hard1"); scoreHolder.configureConstraintWeight(hard1, HardSoftScore.ofHard(10)); Rule hard2 = mockRule("hard2"); scoreHolder.configureConstraintWeight(hard2, HardSoftScore.ofHard(100)); Rule soft1 = mockRule("soft1"); scoreHolder.configureConstraintWeight(soft1, HardSoftScore.ofSoft(10)); Rule soft2 = mockRule("soft2"); scoreHolder.configureConstraintWeight(soft2, HardSoftScore.ofSoft(100)); scoreHolder.penalize(mockRuleContext(hard1)); assertEquals(HardSoftScore.of(-10, 0), scoreHolder.extractScore(0)); scoreHolder.penalize(mockRuleContext(hard2), 2); assertEquals(HardSoftScore.of(-210, 0), scoreHolder.extractScore(0)); scoreHolder.reward(mockRuleContext(soft1)); assertEquals(HardSoftScore.of(-210, 10), scoreHolder.extractScore(0)); scoreHolder.reward(mockRuleContext(soft2), 3); assertEquals(HardSoftScore.of(-210, 310), scoreHolder.extractScore(0)); }
@Test public void rewardPenalizeWithoutConstraintMatch() { rewardPenalize(false); }
@Test public void addConstraintMatchWithoutConstraintMatch() { addConstraintMatch(false); }