Repository navigation
Conversation
triceo
force-pushed
the
testdomain-consolidation
branch
from
November 6, 2026 11:10
173a717 to
66ae375
Compare
Contributor
There was a problem hiding this comment.
🟢 Approval recommended
No active review issues remain for the test-fixture consolidation.
No open issues 🎉
What changed in this PR
This PR reduces test-domain duplication in Timefold Solver by reusing shared fixtures and removing specialized test classes. Changes are limited to core test code and Quarkus integration tests.
Changes:
- Replace duplicate entities, values, solutions, and constraint providers with shared fixtures.
- Remove specialized test-domain classes and helper implementations.
- Update affected tests, solution descriptors, and imports to use the shared types.
| File | Description |
|---|---|
| quarkus-integration/quarkus/deployment/src/test/java/ai/timefold/solver/quarkus/TimefoldProcessorImmutablePlanningSolutionTest.java | Import the shared record value. |
| quarkus-integration/quarkus/deployment/src/test/java/ai/timefold/solver/quarkus/TimefoldProcessorImmutablePlanningEntityTest.java | Import the shared record value. |
| core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/parameter/invalid/TestdataInvalidParameterSolution.java | Remove the invalid-parameter solution fixture. |
| core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/parameter/invalid/TestdataInvalidParameterEntity.java | Remove the invalid-parameter entity fixture. |
| core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/incomplete/TestdataIncompleteValueRangeSolution.java | Reuse TestdataEntity for incomplete value ranges. |
| core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/incomplete/TestdataIncompleteValueRangeEntity.java | Remove the duplicate entity fixture. |
| core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/incomplete/TestdataIncompleteValueRangeConstraintProvider.java | Remove the specialized constraint provider. |
| core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/entityproviding/unassignedvar/TestdataAllowsUnassignedEntityProvidingConstraintProvider.java | Remove the specialized constraint provider. |
| core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/entityproviding/TestdataEntityProvidingConstraintProvider.java | Remove the specialized constraint provider. |
| core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/entityproviding/parameter/invalid/TestdataInvalidTypeEntityProvidingWithParameterSolution.java | Remove the invalid-type solution fixture. |
| core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/entityproviding/parameter/invalid/TestdataInvalidTypeEntityProvidingWithParameterEntity.java | Remove the invalid-type entity fixture. |
| core/src/test/java/ai/timefold/solver/core/testdomain/valuerange/entityproviding/parameter/invalid/TestdataInvalidEntityProvidingWithParameterEntity.java | Remove the invalid-accessor entity fixture. |
| core/src/test/java/ai/timefold/solver/core/testdomain/sort/invalid/TestdataInvalidMixedComparatorSortableSolution.java | Remove the mixed-comparator solution fixture. |
| core/src/test/java/ai/timefold/solver/core/testdomain/sort/invalid/TestdataInvalidMixedComparatorSortableEntity.java | Remove the mixed-comparator entity fixture. |
| core/src/test/java/ai/timefold/solver/core/testdomain/shadow/method_variables/TestdataDeclarativeMethodVariablesSubclassValue.java | Remove the specialized subclass value. |
| core/src/test/java/ai/timefold/solver/core/testdomain/shadow/method_variables/TestdataDeclarativeMethodVariablesSolution.java | Reuse extended-domain values. |
| core/src/test/java/ai/timefold/solver/core/testdomain/shadow/method_variables/TestdataDeclarativeMethodVariablesEntity.java | Use extended-domain values in the list variable. |
| core/src/test/java/ai/timefold/solver/core/testdomain/shadow/method_variables/TestdataDeclarativeMethodVariablesConstraintProvider.java | Remove the specialized constraint provider. |
| core/src/test/java/ai/timefold/solver/core/testdomain/shadow/method_variables/TestdataDeclarativeMethodVariablesBaseValue.java | Remove the specialized base value. |
| core/src/test/java/ai/timefold/solver/core/testdomain/shadow/inverserelation/TestdataInverseRelationEasyScoreCalculator.java | Remove the inverse-relation score calculator. |
| core/src/test/java/ai/timefold/solver/core/testdomain/shadow/dynamic_follower/TestdataDynamicLeaderEntity.java | Remove the duplicate leader entity. |
| core/src/test/java/ai/timefold/solver/core/testdomain/shadow/dynamic_follower/TestdataDynamicHasValue.java | Remove the duplicate value interface. |
| core/src/test/java/ai/timefold/solver/core/testdomain/shadow/dynamic_follower/TestdataDynamicFollowerSolution.java | Reuse the shared leader entity. |
| core/src/test/java/ai/timefold/solver/core/testdomain/shadow/dynamic_follower/TestdataDynamicFollowerEntity.java | Use shared follower types and the leader getter. |
| core/src/test/java/ai/timefold/solver/core/testdomain/shadow/dynamic_follower/TestdataDynamicFollowerConstraintProvider.java | Remove the duplicate follower constraint provider. |
| core/src/test/java/ai/timefold/solver/core/testdomain/shadow/declarative/basicinverse/TestdataBasicInverseSolution.java | Use TestdataValue for owners. |
| core/src/test/java/ai/timefold/solver/core/testdomain/shadow/declarative/basicinverse/TestdataBasicInverseOwner.java | Remove the dedicated owner fixture. |
| core/src/test/java/ai/timefold/solver/core/testdomain/shadow/declarative/basicinverse/TestdataBasicInverseGroup.java | Change the owner type to TestdataValue. |
| core/src/test/java/ai/timefold/solver/core/testdomain/score/TestdataSimpleScoreSolution.java | Remove the duplicate simple-score solution. |
| core/src/test/java/ai/timefold/solver/core/testdomain/planningid/TestdataStringPlanningIdSolution.java | Remove the string planning-ID solution fixture. |
| core/src/test/java/ai/timefold/solver/core/testdomain/planningid/TestdataStringPlanningIdEntity.java | Remove the string planning-ID entity fixture. |
| core/src/test/java/ai/timefold/solver/core/testdomain/mixed/multientity/TestdataMixedMultiEntitySolution.java | Reuse TestdataValue for the first value range. |
| core/src/test/java/ai/timefold/solver/core/testdomain/mixed/multientity/TestdataMixedMultiEntityFirstValue.java | Remove the dedicated first-value fixture. |
| core/src/test/java/ai/timefold/solver/core/testdomain/mixed/multientity/TestdataMixedMultiEntityFirstEntity.java | Use TestdataValue in the list variable. |
| core/src/test/java/ai/timefold/solver/core/testdomain/list/pinned/index/TestdataPinnedWithIndexDistanceMeter.java | Remove the specialized distance meter. |
| core/src/test/java/ai/timefold/solver/core/testdomain/invalid/gettersetter/TestdataInvalidGetterEntity.java | Remove the missing-setter entity fixture. |
| core/src/test/java/ai/timefold/solver/core/testdomain/invalid/gettersetter/TestdataDifferentGetterSetterVisibilityEntity.java | Remove the accessor-visibility entity fixture. |
| core/src/test/java/ai/timefold/solver/core/testdomain/inheritance/entity/single/baseannotated/classes/pinned/TestdataExtendedPinnedSolution.java | Remove the extended pinned solution fixture. |
| core/src/test/java/ai/timefold/solver/core/testdomain/inheritance/entity/single/baseannotated/classes/pinned/TestdataExtendedPinnedEntity.java | Remove the extended pinned entity fixture. |
| core/src/test/java/ai/timefold/solver/core/testdomain/immutable/TestdataSolution.java | Import the shared record value. |
| core/src/test/java/ai/timefold/solver/core/testdomain/immutable/record/TestdataRecordValue.java | Remove the duplicate record value. |
| core/src/test/java/ai/timefold/solver/core/testdomain/immutable/record/TestdataRecordSolution.java | Import the shared record value. |
| core/src/test/java/ai/timefold/solver/core/testdomain/collection/TestdataSetBasedSolution.java | Reuse TestdataEntity across entity sets. |
| core/src/test/java/ai/timefold/solver/core/testdomain/collection/TestdataSetBasedEntity.java | Remove the duplicate set-based entity. |
| core/src/test/java/ai/timefold/solver/core/testdomain/clone/lookup/TestdataObjectEqualsSubclass.java | Remove the equality subclass fixture. |
| core/src/test/java/ai/timefold/solver/core/testdomain/clone/lookup/TestdataObjectEqualsNoHashCode.java | Remove the equality-only fixture. |
| core/src/test/java/ai/timefold/solver/core/testdomain/clone/lookup/TestdataObjectEquals.java | Remove the equality and hash-code fixture. |
| core/src/test/java/ai/timefold/solver/core/testdomain/cascade/multiple/TestdataMultipleCascadingValue.java | Remove the multiple-cascade value fixture. |
| core/src/test/java/ai/timefold/solver/core/testdomain/cascade/multiple/TestdataMultipleCascadingSolution.java | Remove the multiple-cascade solution fixture. |
| core/src/test/java/ai/timefold/solver/core/testdomain/cascade/multiple/TestdataMultipleCascadingEntity.java | Remove the multiple-cascade entity fixture. |
| core/src/test/java/ai/timefold/solver/core/preview/api/move/builtin/ChangeMoveProviderTest.java | Select TestdataEntity in the incomplete-range metamodel. |
| core/src/test/java/ai/timefold/solver/core/impl/solver/DefaultSolverTest.java | Use shared values in the mixed-model test. |
| core/src/test/java/ai/timefold/solver/core/impl/score/stream/common/inliner/SimpleScoreInlinerTest.java | Reuse TestdataSolution for score-inliner tests. |
| core/src/test/java/ai/timefold/solver/core/impl/domain/variable/VariableSupportTest.java | Use a shared value as the owner. |
| core/src/test/java/ai/timefold/solver/core/impl/domain/variable/declarative/DynamicFollowerValuesShadowVariableTest.java | Use shared leader and constraint-provider fixtures. |
| core/src/test/java/ai/timefold/solver/core/impl/domain/variable/declarative/DeclarativeShadowVariablesMethodVariablesTest.java | Use extended-domain values and constraints. |
| core/src/test/java/ai/timefold/solver/core/impl/domain/variable/declarative/BasicInverseShadowVariableTest.java | Update owners and metamodel types to TestdataValue. |
| core/src/test/java/ai/timefold/solver/core/impl/domain/solution/cloner/AbstractSolutionClonerTest.java | Use TestdataEntity in set-cloning tests. |
Review effort: Balanced
Christopher-Chianelli
approved these changes
Nov 9, 2026
This branch was previously deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The domains getting deleted were either unused, or identical to something else.