Skip to content

test: reduce the amount of testdomains - #2806

Open
triceo wants to merge 3 commits into
TimefoldAI:mainfrom
triceo:testdomain-consolidation
Open

triceo wants to merge 3 commits into
TimefoldAI:mainfrom
triceo:testdomain-consolidation

Conversation

@triceo

@triceo triceo commented Nov 6, 2026 •

Copy link
Copy Markdown
Collaborator

The domains getting deleted were either unused, or identical to something else.

@triceo
triceo requested review from a team and a balanced review from Copilot November 6, 2026 11:08

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 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

Copilot AI balanced review requested due to automatic review settings November 6, 2026 11:12

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No active review issues are reported for the test-fixture consolidation.

No open issues 🎉

Review effort: Balanced

@triceo triceo self-assigned this Nov 6, 2026

This branch was previously deployed

1 inactive deployment
internal — 66ae3753 Deployed Nov 6, 2026 by triceo via approval_required #1199
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants