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.
Fixes #50
Proposed Changes
Allow function calls to be validated like property values.
New Abstractions
Existing code is coupled to the idea of only validating property values obtained from
KProperty1
. A new abstract classValueValidator
was added to decouple the Validator from where the value is obtained. TheValueValidator
does everything theProperty
class does except implementors of the class must define how a value is extracted from the given instance.Two implementations of the class were added:
Property
which is responsible for extracting properties to be validatedFunction
which is responsible for invoking methods validating their return valueAlso, additional DSL factory methods were added to the validator context to allow the creation of the new
Function
ValueValidator
Missing Functionality
Currently functions can not be validated with given arguments. This seems like it could be addressed but for some reason I was not able to get it working.
Minimal Testing
Very little testing was done. If this approach is appreciated, I don't mind adding additional test cases.
Examples