dataconnect: testing: re-write Struct and ListValue arbs #7619
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.
This PR refactors of the
dataconnectarbitrary data generation forStructandListValuetypes for testing. The changes streamline the complex logic involved in creating diverse and deeply nested test data, enhancing the overall maintainability and clarity of the property-based testing framework. By consolidating common patterns and introducing a dedicated generator class, the codebase becomes more organized and easier to extend.Highlights
StructandListValueinstances has been significantly refactored to reduce code duplication. This involved introducing a newCompositeValueArbabstract class and aStructOrListValueGeneratorhelper.StructandListValueinstances has been centralized within theStructOrListValueGenerator, replacing previous duplicated logic and helper functions.Changelog
withAddedField,withAddedListIndex,Sample,withEdgecases) and added new ones (DataConnectPathSegment,withAddedPathSegment).valuefunction to accept an optionalstructKeyparameter, which is propagated tostructandlistValuecalls.listValueandstructfunction signatures to include new parameters (structKey,structSize,listSize) and adjusted their constructor calls to use new parameter names (sizeRange,depthRange, etc.).StructArbandListValueArbclasses with a new abstractCompositeValueArbbase class.GenerateCompositeValueProbabilitiesdata class to group probability parameters for cleaner function signatures.StructOrListValueGeneratorto centralize the core logic for generatingStructandListValueinstances, including handling nesting and edge cases.StructArbandListValueArbto extendCompositeValueArband delegate their generation logic to the newStructOrListValueGenerator.NextNestedValueResultdata class andNextNestedValueCaseenum, along with theRandomSource.nextNestedValueextension function, as their functionality is now integrated into the new generator architecture.