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)); }