-
Notifications
You must be signed in to change notification settings - Fork 169
Description
Is your feature request related to a problem? Please describe.
I am trying to unit test that a constraint in situation X generates a (better/worse/different) penalty than in situation Y. I would prefer not to hard code expected penalty values, since these may change, just that two situations are different.
However, a SingleConstraintVerification only provides methods to compare with known values: penalizes(long times), penalizedBy(long matchWeightTotal), penalizesByMoreThan(String s, long l), etc.
Describe the solution you'd like
There are two possible solutions I can think of, which would both work for me:
Comparing two solutions through the constraintVerifier
constraintVerifier.verifyThat(someConstraint).givenSolution(Solution_ someSolution).penalizesByMoreThan(Solution_ someOtherSolution)
Being able to obtain a score through the constraint verifier
Although I realise the API might be a little confusing in my example below (getting a score from a ConstraintVerifier ) something like constraintVerifier.verifyThat(someConstraint).givenSolution(Solution_ someSolution).score() would allow me to write the assertion myself:
HardSoftScore score1 = constraintVerifier.verifyThat(someConstraint).givenSolution(Solution_ someSolution).score()
HardSoftScore score2 = constraintVerifier.verifyThat(someConstraint).givenSolution(Solution_ otherSolution).score()
assertTrue(score1.compareTo(score2) > 0)
Describe alternatives you've considered
I am currently working through the SolutionManager with solutionManager.analyse(solution) and comparing those scores. However, this includes all constraints not just the one I'm trying to test, so this feels more fragile.