![Tests passed successfully](https://img.shields.io/badge/tests-803%20passed%2C%201%20skipped-success)
Expand for details |Report|Passed|Failed|Skipped|Time| |:---|---:|---:|---:|---:| |FluentValidation.Tests|803:white_check_mark:||1:warning:|4s| ## :white_check_mark: FluentValidation.Tests **804** tests were completed in **4s** with **803** passed, **0** failed and **1** skipped. |Test suite|Passed|Failed|Skipped|Time| |:---|---:|---:|---:|---:| |[FluentValidation.Tests.AbstractValidatorTester](#r0s0)|35:white_check_mark:|||12ms| |[FluentValidation.Tests.AccessorCacheTests](#r0s1)|4:white_check_mark:||1:warning:|4ms| |[FluentValidation.Tests.AssemblyScannerTester](#r0s2)|2:white_check_mark:|||2ms| |[FluentValidation.Tests.CascadingFailuresTester](#r0s3)|38:white_check_mark:|||23ms| |[FluentValidation.Tests.ChainedValidationTester](#r0s4)|13:white_check_mark:|||6ms| |[FluentValidation.Tests.ChainingValidatorsTester](#r0s5)|3:white_check_mark:|||1ms| |[FluentValidation.Tests.ChildRulesTests](#r0s6)|2:white_check_mark:|||7ms| |[FluentValidation.Tests.CollectionValidatorWithParentTests](#r0s7)|16:white_check_mark:|||13ms| |[FluentValidation.Tests.ComplexValidationTester](#r0s8)|17:white_check_mark:|||26ms| |[FluentValidation.Tests.ConditionTests](#r0s9)|18:white_check_mark:|||9ms| |[FluentValidation.Tests.CreditCardValidatorTests](#r0s10)|2:white_check_mark:|||2ms| |[FluentValidation.Tests.CustomFailureActionTester](#r0s11)|3:white_check_mark:|||1ms| |[FluentValidation.Tests.CustomMessageFormatTester](#r0s12)|6:white_check_mark:|||3ms| |[FluentValidation.Tests.CustomValidatorTester](#r0s13)|10:white_check_mark:|||6ms| |[FluentValidation.Tests.DefaultValidatorExtensionTester](#r0s14)|30:white_check_mark:|||38ms| |[FluentValidation.Tests.EmailValidatorTests](#r0s15)|36:white_check_mark:|||18ms| |[FluentValidation.Tests.EmptyTester](#r0s16)|9:white_check_mark:|||5ms| |[FluentValidation.Tests.EnumValidatorTests](#r0s17)|12:white_check_mark:|||24ms| |[FluentValidation.Tests.EqualValidatorTests](#r0s18)|10:white_check_mark:|||3ms| |[FluentValidation.Tests.ExactLengthValidatorTester](#r0s19)|6:white_check_mark:|||2ms| |[FluentValidation.Tests.ExclusiveBetweenValidatorTests](#r0s20)|19:white_check_mark:|||6ms| |[FluentValidation.Tests.ExtensionTester](#r0s21)|4:white_check_mark:|||1ms| |[FluentValidation.Tests.ForEachRuleTests](#r0s22)|34:white_check_mark:|||47ms| |[FluentValidation.Tests.GreaterThanOrEqualToValidatorTester](#r0s23)|14:white_check_mark:|||5ms| |[FluentValidation.Tests.GreaterThanValidatorTester](#r0s24)|13:white_check_mark:|||4ms| |[FluentValidation.Tests.InclusiveBetweenValidatorTests](#r0s25)|18:white_check_mark:|||4ms| |[FluentValidation.Tests.InheritanceValidatorTest](#r0s26)|11:white_check_mark:|||18ms| |[FluentValidation.Tests.InlineValidatorTester](#r0s27)|1:white_check_mark:|||2ms| |[FluentValidation.Tests.LanguageManagerTests](#r0s28)|21:white_check_mark:|||28ms| |[FluentValidation.Tests.LengthValidatorTests](#r0s29)|16:white_check_mark:|||17ms| |[FluentValidation.Tests.LessThanOrEqualToValidatorTester](#r0s30)|13:white_check_mark:|||4ms| |[FluentValidation.Tests.LessThanValidatorTester](#r0s31)|16:white_check_mark:|||6ms| |[FluentValidation.Tests.LocalisedMessagesTester](#r0s32)|6:white_check_mark:|||3ms| |[FluentValidation.Tests.LocalisedNameTester](#r0s33)|2:white_check_mark:|||1ms| |[FluentValidation.Tests.MemberAccessorTests](#r0s34)|9:white_check_mark:|||5ms| |[FluentValidation.Tests.MessageFormatterTests](#r0s35)|10:white_check_mark:|||2ms| |[FluentValidation.Tests.ModelLevelValidatorTests](#r0s36)|2:white_check_mark:|||1ms| |[FluentValidation.Tests.NameResolutionPluggabilityTester](#r0s37)|3:white_check_mark:|||2ms| |[FluentValidation.Tests.NotEmptyTester](#r0s38)|10:white_check_mark:|||7ms| |[FluentValidation.Tests.NotEqualValidatorTests](#r0s39)|11:white_check_mark:|||7ms| |[FluentValidation.Tests.NotNullTester](#r0s40)|5:white_check_mark:|||1ms| |[FluentValidation.Tests.NullTester](#r0s41)|5:white_check_mark:|||2ms| |[FluentValidation.Tests.OnFailureTests](#r0s42)|10:white_check_mark:|||8ms| |[FluentValidation.Tests.PredicateValidatorTester](#r0s43)|5:white_check_mark:|||2ms| |[FluentValidation.Tests.PropertyChainTests](#r0s44)|7:white_check_mark:|||1ms| |[FluentValidation.Tests.RegularExpressionValidatorTests](#r0s45)|15:white_check_mark:|||6ms| |[FluentValidation.Tests.RuleBuilderTests](#r0s46)|29:white_check_mark:|||96ms| |[FluentValidation.Tests.RuleDependencyTests](#r0s47)|14:white_check_mark:|||3s| |[FluentValidation.Tests.RulesetTests](#r0s48)|21:white_check_mark:|||14ms| |[FluentValidation.Tests.ScalePrecisionValidatorTests](#r0s49)|6:white_check_mark:|||4ms| |[FluentValidation.Tests.SharedConditionTests](#r0s50)|42:white_check_mark:|||42ms| |[FluentValidation.Tests.StandalonePropertyValidationTester](#r0s51)|1:white_check_mark:|||0ms| |[FluentValidation.Tests.StringEnumValidatorTests](#r0s52)|10:white_check_mark:|||5ms| |[FluentValidation.Tests.TrackingCollectionTests](#r0s53)|3:white_check_mark:|||2ms| |[FluentValidation.Tests.TransformTests](#r0s54)|4:white_check_mark:|||3ms| |[FluentValidation.Tests.UserSeverityTester](#r0s55)|7:white_check_mark:|||3ms| |[FluentValidation.Tests.UserStateTester](#r0s56)|4:white_check_mark:|||3ms| |[FluentValidation.Tests.ValidateAndThrowTester](#r0s57)|14:white_check_mark:|||25ms| |[FluentValidation.Tests.ValidationResultTests](#r0s58)|8:white_check_mark:|||8ms| |[FluentValidation.Tests.ValidatorDescriptorTester](#r0s59)|5:white_check_mark:|||1ms| |[FluentValidation.Tests.ValidatorSelectorTests](#r0s60)|10:white_check_mark:|||9ms| |[FluentValidation.Tests.ValidatorTesterTester](#r0s61)|73:white_check_mark:|||74ms| ### :white_check_mark: FluentValidation.Tests.AbstractValidatorTester ``` :white_check_mark: Can_replace_default_errorcode_resolver :white_check_mark: CanValidateInstancesOfType_returns_false_when_comparing_against_some_other_type :white_check_mark: CanValidateInstancesOfType_returns_true_when_comparing_against_same_type :white_check_mark: CanValidateInstancesOfType_returns_true_when_comparing_against_subclass :white_check_mark: Default_error_code_should_be_class_name :white_check_mark: OverridePropertyName_should_override_property_name :white_check_mark: OverridePropertyName_with_lambda_should_override_property_name :white_check_mark: PreValidate_bypasses_nullcheck_on_instance :white_check_mark: RuleForeach_with_null_instances :white_check_mark: Should_be_valid_when_there_are_no_failures_for_single_property :white_check_mark: Should_not_main_state :white_check_mark: Should_throw_for_non_member_expression_when_validating_single_property :white_check_mark: Should_throw_when_rule_is_null :white_check_mark: Should_validate_public_Field :white_check_mark: Should_validate_single_Field :white_check_mark: Should_validate_single_property :white_check_mark: Should_validate_single_property_where_invalid_property_as_string :white_check_mark: Should_validate_single_property_where_property_as_string :white_check_mark: Uses_named_parameters_to_validate_ruleset :white_check_mark: Validates_single_property_by_path :white_check_mark: Validates_type_when_using_non_generic_validate_overload :white_check_mark: When_the_validators_fail_then_the_errors_Should_be_accessible_via_the_errors_property :white_check_mark: When_the_validators_fail_then_validatorrunner_should_return_false :white_check_mark: When_the_Validators_pass_then_the_validatorRunner_should_return_true :white_check_mark: WhenPreValidationReturnsFalse_ResultReturnToUserImmediatly_Validate(preValidationResult: ) :white_check_mark: WhenPreValidationReturnsFalse_ResultReturnToUserImmediatly_Validate(preValidationResult: AnotherInt Test Message) :white_check_mark: WhenPreValidationReturnsFalse_ResultReturnToUserImmediatly_ValidateAsync(preValidationResult: ) :white_check_mark: WhenPreValidationReturnsFalse_ResultReturnToUserImmediatly_ValidateAsync(preValidationResult: AnotherInt Test Message) :white_check_mark: WhenPreValidationReturnsTrue_ValidatorsGetHit_Validate :white_check_mark: WhenPreValidationReturnsTrue_ValidatorsGetHit_ValidateAsync :white_check_mark: WithErrorCode_should_override_error_code :white_check_mark: WithMessage_and_WithErrorCode_should_override_error_message_and_error_code :white_check_mark: WithMessage_should_override_error_message :white_check_mark: WithName_should_override_field_name :white_check_mark: WithName_should_override_field_name_with_value_from_other_property ``` ### :white_check_mark: FluentValidation.Tests.AccessorCacheTests ``` :warning: Benchmark :white_check_mark: Equality_comparison_check :white_check_mark: Gets_accessor :white_check_mark: Gets_member_for_nested_property :white_check_mark: Identifies_if_memberexp_acts_on_model_instance ``` ### :white_check_mark: FluentValidation.Tests.AssemblyScannerTester ``` :white_check_mark: Finds_validators_for_types :white_check_mark: ForEach_iterates_over_types ``` ### :white_check_mark: FluentValidation.Tests.CascadingFailuresTester ``` :white_check_mark: Cascade_mode_can_be_set_after_validator_instantiated :white_check_mark: Cascade_mode_can_be_set_after_validator_instantiated_async :white_check_mark: Cascade_mode_can_be_set_after_validator_instantiated_async_legacy :white_check_mark: Cascade_mode_can_be_set_after_validator_instantiated_legacy :white_check_mark: Validation_continues_on_failure :white_check_mark: Validation_continues_on_failure_async :white_check_mark: Validation_continues_on_failure_when_set_to_Stop_globally_and_overriden_at_rule_level :white_check_mark: Validation_continues_on_failure_when_set_to_Stop_globally_and_overriden_at_rule_level_async :white_check_mark: Validation_continues_on_failure_when_set_to_Stop_globally_and_overriden_at_rule_level_async_legacy :white_check_mark: Validation_continues_on_failure_when_set_to_Stop_globally_and_overriden_at_rule_level_legacy :white_check_mark: Validation_continues_on_failure_when_set_to_StopOnFirstFailure_at_validator_level_and_overriden_at_rule_level :white_check_mark: Validation_continues_on_failure_when_set_to_StopOnFirstFailure_at_validator_level_and_overriden_at_rule_level_async :white_check_mark: Validation_continues_on_failure_when_set_to_StopOnFirstFailure_at_validator_level_and_overriden_at_rule_level_async_legacy :white_check_mark: Validation_continues_on_failure_when_set_to_StopOnFirstFailure_at_validator_level_and_overriden_at_rule_level_legacy :white_check_mark: Validation_continues_to_second_validator_when_first_validator_succeeds_and_cascade_set_to_stop :white_check_mark: Validation_continues_to_second_validator_when_first_validator_succeeds_and_cascade_set_to_stop_async :white_check_mark: Validation_continues_to_second_validator_when_first_validator_succeeds_and_cascade_set_to_stop_async_legacy :white_check_mark: Validation_continues_to_second_validator_when_first_validator_succeeds_and_cascade_set_to_stop_legacy :white_check_mark: Validation_continues_when_set_to_Continue_at_validator_level :white_check_mark: Validation_continues_when_set_to_Continue_at_validator_level_async :white_check_mark: Validation_stops_on_failure_when_set_to_Continue_and_overriden_at_rule_level :white_check_mark: Validation_stops_on_failure_when_set_to_Continue_and_overriden_at_rule_level_async :white_check_mark: Validation_stops_on_failure_when_set_to_Continue_and_overriden_at_rule_level_async_legacy :white_check_mark: Validation_stops_on_failure_when_set_to_Continue_and_overriden_at_rule_level_legacy :white_check_mark: Validation_stops_on_first_failure :white_check_mark: Validation_stops_on_first_failure_async :white_check_mark: Validation_stops_on_first_failure_async_legacy :white_check_mark: Validation_stops_on_first_failure_legacy :white_check_mark: Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_overriden_at_rule_level :white_check_mark: Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_overriden_at_rule_level_and_async_validator_is_invoked_synchronously :white_check_mark: Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_overriden_at_rule_level_and_async_validator_is_invoked_synchronously_legacy :white_check_mark: Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_overriden_at_rule_level_async :white_check_mark: Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_overriden_at_rule_level_async_legacy :white_check_mark: Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_overriden_at_rule_level_legacy :white_check_mark: Validation_stops_on_first_failure_when_set_to_StopOnFirstFailure_at_validator_level :white_check_mark: Validation_stops_on_first_failure_when_set_to_StopOnFirstFailure_at_validator_level_async :white_check_mark: Validation_stops_on_first_failure_when_set_to_StopOnFirstFailure_at_validator_level_async_legacy :white_check_mark: Validation_stops_on_first_failure_when_set_to_StopOnFirstFailure_at_validator_level_legacy ``` ### :white_check_mark: FluentValidation.Tests.ChainedValidationTester ``` :white_check_mark: Can_validate_using_validator_for_base_type :white_check_mark: Chained_property_should_be_excluded :white_check_mark: Chained_validator_descriptor :white_check_mark: Chained_validator_should_not_be_invoked_on_null_property :white_check_mark: Condition_should_work_with_chained_property :white_check_mark: Explicitly_included_properties_should_be_propagated_to_nested_validators :white_check_mark: Explicitly_included_properties_should_be_propagated_to_nested_validators_using_strings :white_check_mark: Separate_validation_on_chained_property :white_check_mark: Separate_validation_on_chained_property_conditional :white_check_mark: Separate_validation_on_chained_property_valid :white_check_mark: Should_allow_normal_rules_and_chained_property_on_same_property :white_check_mark: Uses_explicit_ruleset :white_check_mark: Validates_chained_property ``` ### :white_check_mark: FluentValidation.Tests.ChainingValidatorsTester ``` :white_check_mark: Options_should_only_apply_to_current_validator :white_check_mark: Should_create_multiple_validators :white_check_mark: Should_execute_multiple_validators ``` ### :white_check_mark: FluentValidation.Tests.ChildRulesTests ``` :white_check_mark: Can_define_nested_rules_for_collection :white_check_mark: ChildRules_works_with_RuleSet ``` ### :white_check_mark: FluentValidation.Tests.CollectionValidatorWithParentTests ``` :white_check_mark: Async_condition_should_work_with_child_collection :white_check_mark: Can_specify_condition_for_individual_collection_elements :white_check_mark: Can_validate_collection_using_validator_for_base_type :white_check_mark: Collection_should_be_excluded :white_check_mark: Collection_should_be_explicitly_included_with_expression :white_check_mark: Collection_should_be_explicitly_included_with_string :white_check_mark: Condition_should_work_with_child_collection :white_check_mark: Creates_validator_using_context_from_property_value :white_check_mark: Should_override_property_name :white_check_mark: Should_work_with_top_level_collection_validator :white_check_mark: Should_work_with_top_level_collection_validator_and_overriden_name :white_check_mark: Skips_null_items :white_check_mark: Validates_collection :white_check_mark: Validates_collection_asynchronously :white_check_mark: Validates_collection_several_levels_deep :white_check_mark: Validates_collection_several_levels_deep_async ``` ### :white_check_mark: FluentValidation.Tests.ComplexValidationTester ``` :white_check_mark: Async_condition_should_work_with_complex_property :white_check_mark: Async_condition_should_work_with_complex_property_when_validator_invoked_synchronously :white_check_mark: Can_directly_validate_multiple_fields_of_same_type :white_check_mark: Can_validate_using_validator_for_base_type :white_check_mark: Complex_property_should_be_excluded :white_check_mark: Complex_validator_should_not_be_invoked_on_null_property :white_check_mark: Condition_should_work_with_complex_property :white_check_mark: Condition_should_work_with_complex_property_when_invoked_async :white_check_mark: Explicitly_included_properties_should_be_propagated_to_nested_validators :white_check_mark: Explicitly_included_properties_should_be_propagated_to_nested_validators_using_strings :white_check_mark: Multiple_rules_in_chain_with_childvalidator_shouldnt_reuse_accessor :white_check_mark: Multiple_rules_in_chain_with_childvalidator_shouldnt_reuse_accessor_async :white_check_mark: Should_allow_normal_rules_and_complex_property_on_same_property :white_check_mark: Should_override_propertyName :white_check_mark: Validates_child_validator_asynchronously :white_check_mark: Validates_child_validator_synchronously :white_check_mark: Validates_complex_property ``` ### :white_check_mark: FluentValidation.Tests.ConditionTests ``` :white_check_mark: Async_condition_executed_synchronosuly_with_asynchronous_collection_rule :white_check_mark: Async_condition_executed_synchronosuly_with_asynchronous_rule :white_check_mark: Async_condition_executed_synchronosuly_with_synchronous_collection_role :white_check_mark: Async_condition_executed_synchronosuly_with_synchronous_role :white_check_mark: Async_condition_is_applied_to_all_validators_in_the_chain :white_check_mark: Async_condition_is_applied_to_all_validators_in_the_chain_when_executed_synchronously :white_check_mark: Async_condition_is_applied_to_single_validator_in_the_chain_when_ApplyConditionTo_set_to_CurrentValidator :white_check_mark: Condition_is_applied_to_all_validators_in_the_chain :white_check_mark: Condition_is_applied_to_single_validator_in_the_chain_when_ApplyConditionTo_set_to_CurrentValidator :white_check_mark: Sync_condition_is_applied_to_async_validators :white_check_mark: Validation_should_fail_when_async_condition_does_not_match :white_check_mark: Validation_should_fail_when_async_condition_matches :white_check_mark: Validation_should_fail_when_condition_does_not_match :white_check_mark: Validation_should_fail_when_condition_matches :white_check_mark: Validation_should_succeed_when_async_condition_does_not_match :white_check_mark: Validation_should_succeed_when_async_condition_matches :white_check_mark: Validation_should_succeed_when_condition_does_not_match :white_check_mark: Validation_should_succeed_when_condition_matches ``` ### :white_check_mark: FluentValidation.Tests.CreditCardValidatorTests ``` :white_check_mark: IsValidTests :white_check_mark: When_validation_fails_the_default_error_should_be_set ``` ### :white_check_mark: FluentValidation.Tests.CustomFailureActionTester ``` :white_check_mark: Does_not_invoke_action_if_validation_success :white_check_mark: Invokes_custom_action_on_failure :white_check_mark: Passes_object_being_validated_to_action ``` ### :white_check_mark: FluentValidation.Tests.CustomMessageFormatTester ``` :white_check_mark: Replaces_propertyvalue_placeholder :white_check_mark: Replaces_propertyvalue_with_empty_string_when_null :white_check_mark: Should_format_custom_message :white_check_mark: Uses_custom_delegate_for_building_message :white_check_mark: Uses_custom_delegate_for_building_message_only_for_specific_validator :white_check_mark: Uses_property_value_in_message ``` ### :white_check_mark: FluentValidation.Tests.CustomValidatorTester ``` :white_check_mark: New_Custom_Returns_single_failure :white_check_mark: New_Custom_Returns_single_failure_async :white_check_mark: New_custom_uses_empty_property_name_for_model_level_rule :white_check_mark: New_Custom_When_property_name_omitted_infers_property_name :white_check_mark: New_Custom_When_property_name_omitted_infers_property_name_nested :white_check_mark: New_Custom_within_ruleset :white_check_mark: New_CustomAsync_within_ruleset :white_check_mark: Perserves_property_chain_using_custom :white_check_mark: Runs_async_rule_synchronously_when_validator_invoked_synchronously :white_check_mark: Runs_sync_rule_asynchronously_when_validator_invoked_asynchronously ``` ### :white_check_mark: FluentValidation.Tests.DefaultValidatorExtensionTester ``` :white_check_mark: Empty_should_create_EmptyValidator :white_check_mark: Equal_should_create_EqualValidator_with_explicit_value :white_check_mark: Equal_should_create_EqualValidator_with_lambda :white_check_mark: GreaterThan_should_create_GreaterThanValidator_with_explicit_value :white_check_mark: GreaterThan_should_create_GreaterThanValidator_with_lambda :white_check_mark: GreaterThanOrEqual_should_create_GreaterThanOrEqualValidator_with_explicit_value :white_check_mark: GreaterThanOrEqual_should_create_GreaterThanOrEqualValidator_with_lambda :white_check_mark: GreaterThanOrEqual_should_create_GreaterThanOrEqualValidator_with_lambda_with_other_Nullable :white_check_mark: Length_should_create_ExactLengthValidator :white_check_mark: Length_should_create_LengthValidator :white_check_mark: Length_should_create_MaximumLengthValidator :white_check_mark: Length_should_create_MinimumLengthValidator :white_check_mark: LessThan_should_create_LessThanValidator_with_explicit_value :white_check_mark: LessThan_should_create_LessThanValidator_with_lambda :white_check_mark: LessThanOrEqual_should_create_LessThanOrEqualValidator_with_explicit_value :white_check_mark: LessThanOrEqual_should_create_LessThanOrEqualValidator_with_lambda :white_check_mark: LessThanOrEqual_should_create_LessThanOrEqualValidator_with_lambda_with_other_Nullable :white_check_mark: Must_should_create_PredicateValidator_with_context :white_check_mark: Must_should_create_PredicateValidator_with_PropertyValidatorContext :white_check_mark: Must_should_create_PredicteValidator :white_check_mark: MustAsync_should_create_AsyncPredicateValidator_with_context :white_check_mark: MustAsync_should_create_AsyncPredicateValidator_with_PropertyValidatorContext :white_check_mark: MustAsync_should_create_AsyncPredicteValidator :white_check_mark: MustAsync_should_not_throw_InvalidCastException :white_check_mark: NotEmpty_should_create_NotEmptyValidator :white_check_mark: NotEqual_should_create_NotEqualValidator_with_explicit_value :white_check_mark: NotEqual_should_create_NotEqualValidator_with_lambda :white_check_mark: NotNull_should_create_NotNullValidator :white_check_mark: ScalePrecision_should_create_ScalePrecisionValidator :white_check_mark: ScalePrecision_should_create_ScalePrecisionValidator_with_ignore_trailing_zeros ``` ### :white_check_mark: FluentValidation.Tests.EmailValidatorTests ``` :white_check_mark: Fails_email_validation_aspnetcore_compatible(email: " \r \t \n") :white_check_mark: Fails_email_validation_aspnetcore_compatible(email: "") :white_check_mark: Fails_email_validation_aspnetcore_compatible(email: "@someDomain.com") :white_check_mark: Fails_email_validation_aspnetcore_compatible(email: "@someDomain@abc.com") :white_check_mark: Fails_email_validation_aspnetcore_compatible(email: "0") :white_check_mark: Fails_email_validation_aspnetcore_compatible(email: "someName") :white_check_mark: Fails_email_validation_aspnetcore_compatible(email: "someName@") :white_check_mark: Fails_email_validation_aspnetcore_compatible(email: "someName@a@b.com") :white_check_mark: Invalid_email_addressex_regex(email: "") :white_check_mark: Invalid_email_addressex_regex(email: "first.last@test..co.uk") :white_check_mark: Invalid_email_addressex_regex(email: "testperso") :white_check_mark: Invalid_email_addressex_regex(email: "thisisaverylongstringcodeplex.com") :white_check_mark: Valid_email_addresses_aspnetcore_compatible(email: " @someDomain.com") :white_check_mark: Valid_email_addresses_aspnetcore_compatible(email: "!#$%&'*+-/=?^_`|~@someDomain.com") :white_check_mark: Valid_email_addresses_aspnetcore_compatible(email: "\"firstName.lastName\"@someDomain.com") :white_check_mark: Valid_email_addresses_aspnetcore_compatible(email: "1234@someDomain.com") :white_check_mark: Valid_email_addresses_aspnetcore_compatible(email: "firstName.lastName@someDomain.com") :white_check_mark: Valid_email_addresses_aspnetcore_compatible(email: "someName@1234.com") :white_check_mark: Valid_email_addresses_aspnetcore_compatible(email: "someName@some_domain.com") :white_check_mark: Valid_email_addresses_aspnetcore_compatible(email: "someName@some~domain.com") :white_check_mark: Valid_email_addresses_aspnetcore_compatible(email: "someName@someDomain.com") :white_check_mark: Valid_email_addresses_aspnetcore_compatible(email: "someName@someDomain￯.com") :white_check_mark: Valid_email_addresses_aspnetcore_compatible(email: null) :white_check_mark: Valid_email_addresses_regex(email: "__somename@example.com") :white_check_mark: Valid_email_addresses_regex(email: "!def!xyz%abc@example.com") :white_check_mark: Valid_email_addresses_regex(email: "\"Abc@def\"@example.com") :white_check_mark: Valid_email_addresses_regex(email: "\"Abc\\@def\"@example.com") :white_check_mark: Valid_email_addresses_regex(email: "\"Fred Bloggs\"@example.com") :white_check_mark: Valid_email_addresses_regex(email: "\"Joe\\Blow\"@example.com") :white_check_mark: Valid_email_addresses_regex(email: "$A12345@example.com") :white_check_mark: Valid_email_addresses_regex(email: "customer/department=shipping@example.com") :white_check_mark: Valid_email_addresses_regex(email: "first.last@test.co.uk") :white_check_mark: Valid_email_addresses_regex(email: "testperson@gmail.com") :white_check_mark: Valid_email_addresses_regex(email: "TestPerson@gmail.com") :white_check_mark: Valid_email_addresses_regex(email: "testperson+label@gmail.com") :white_check_mark: Valid_email_addresses_regex(email: null) ``` ### :white_check_mark: FluentValidation.Tests.EmptyTester ``` :white_check_mark: Passes_for_ienumerable_that_doesnt_implement_ICollection :white_check_mark: Passes_when_collection_empty :white_check_mark: When_there_is_a_value_then_the_validator_should_fail :white_check_mark: When_validation_fails_error_should_be_set :white_check_mark: When_value_is_Default_for_type_validator_should_pass_datetime :white_check_mark: When_value_is_Default_for_type_validator_should_pass_int :white_check_mark: When_value_is_empty_string_validator_should_pass :white_check_mark: When_value_is_null_validator_should_pass :white_check_mark: When_value_is_whitespace_validation_should_pass ``` ### :white_check_mark: FluentValidation.Tests.EnumValidatorTests ``` :white_check_mark: Flags_enum_invalid_when_using_outofrange_negative_value :white_check_mark: Flags_enum_invalid_when_using_outofrange_positive_value :white_check_mark: Flags_enum_valid_when_using_bitwise_value :white_check_mark: Flags_enum_validates_correctly_when_using_zero_value :white_check_mark: Flags_enum_with_overlapping_flags_valid_when_using_bitwise_value :white_check_mark: IsValidTests :white_check_mark: Nullable_enum_invalid_when_bad_value_specified :white_check_mark: Nullable_enum_valid_when_property_value_is_null :white_check_mark: Nullable_enum_valid_when_value_specified :white_check_mark: When_the_enum_is_initialized_with_invalid_value_then_the_validator_should_fail :white_check_mark: When_the_enum_is_not_initialized_with_valid_value_then_the_validator_should_fail :white_check_mark: When_validation_fails_the_default_error_should_be_set ``` ### :white_check_mark: FluentValidation.Tests.EqualValidatorTests ``` :white_check_mark: Comparison_property_uses_custom_resolver :white_check_mark: Should_store_comparison_type :white_check_mark: Should_store_property_to_compare :white_check_mark: Should_succeed_on_case_insensitive_comparison :white_check_mark: Should_succeed_on_case_insensitive_comparison_using_expression :white_check_mark: Should_use_ordinal_comparison_by_default :white_check_mark: Validates_against_property :white_check_mark: When_the_objects_are_equal_validation_should_succeed :white_check_mark: When_the_objects_are_not_equal_validation_should_fail :white_check_mark: When_validation_fails_the_error_should_be_set ``` ### :white_check_mark: FluentValidation.Tests.ExactLengthValidatorTester ``` :white_check_mark: Min_and_max_properties_should_be_set :white_check_mark: When_exact_length_rule_failes_error_should_have_exact_length_error_errorcode :white_check_mark: When_the_text_is_an_exact_length_the_validator_should_pass :white_check_mark: When_the_text_length_is_larger_the_validator_should_fail :white_check_mark: When_the_text_length_is_smaller_the_validator_should_fail :white_check_mark: When_the_validator_fails_the_error_message_should_be_set ``` ### :white_check_mark: FluentValidation.Tests.ExclusiveBetweenValidatorTests ``` :white_check_mark: To_and_from_properties_should_be_set :white_check_mark: To_and_from_properties_should_be_set_for_dates :white_check_mark: To_and_from_properties_should_be_set_for_strings :white_check_mark: Validates_with_nullable_when_property_is_null :white_check_mark: Validates_with_nullable_when_property_not_null :white_check_mark: When_the_text_is_larger_than_the_range_then_the_validator_should_fail :white_check_mark: When_the_text_is_larger_than_the_range_then_the_validator_should_fail_for_strings :white_check_mark: When_the_to_is_smaller_than_the_from_then_the_validator_should_throw :white_check_mark: When_the_to_is_smaller_than_the_from_then_the_validator_should_throw_for_strings :white_check_mark: When_the_validator_fails_the_error_message_should_be_set :white_check_mark: When_the_validator_fails_the_error_message_should_be_set_for_strings :white_check_mark: When_the_value_is_between_the_range_specified_then_the_validator_should_pass :white_check_mark: When_the_value_is_between_the_range_specified_then_the_validator_should_pass_for_strings :white_check_mark: When_the_value_is_exactly_the_size_of_the_lower_bound_then_the_validator_should_fail :white_check_mark: When_the_value_is_exactly_the_size_of_the_lower_bound_then_the_validator_should_fail_for_strings :white_check_mark: When_the_value_is_exactly_the_size_of_the_upper_bound_then_the_validator_should_fail :white_check_mark: When_the_value_is_exactly_the_size_of_the_upper_bound_then_the_validator_should_fail_for_strings :white_check_mark: When_the_value_is_smaller_than_the_range_then_the_validator_should_fail :white_check_mark: When_the_value_is_smaller_than_the_range_then_the_validator_should_fail_for_strings ``` ### :white_check_mark: FluentValidation.Tests.ExtensionTester ``` :white_check_mark: Should_extract_member_from_member_expression :white_check_mark: Should_return_null_for_non_member_expressions :white_check_mark: Should_split_pascal_cased_member_name :white_check_mark: SplitPascalCase_should_return_null_when_input_is_null ``` ### :white_check_mark: FluentValidation.Tests.ForEachRuleTests ``` :white_check_mark: Async_condition_should_work_with_child_collection :white_check_mark: Can_access_colletion_index :white_check_mark: Can_access_colletion_index_async :white_check_mark: Can_access_parent_index :white_check_mark: Can_access_parent_index_async :white_check_mark: Can_specify_condition_for_individual_collection_elements :white_check_mark: Can_use_cascade_with_RuleForEach :white_check_mark: Can_validate_collection_using_validator_for_base_type :white_check_mark: Collection_should_be_excluded :white_check_mark: Collection_should_be_explicitly_included_with_expression :white_check_mark: Collection_should_be_explicitly_included_with_string :white_check_mark: Condition_should_work_with_child_collection :white_check_mark: Correctly_gets_collection_indices :white_check_mark: Correctly_gets_collection_indices_async :white_check_mark: Executes_rule_for_each_item_in_collection :white_check_mark: Executes_rule_for_each_item_in_collection_async :white_check_mark: Nested_collection_for_null_property_should_not_throw_null_reference :white_check_mark: Nested_conditions_Rule_For :white_check_mark: Nested_conditions_Rule_For_Each :white_check_mark: Overrides_indexer :white_check_mark: Overrides_indexer_async :white_check_mark: Regular_rules_can_drop_into_RuleForEach :white_check_mark: RuleForEach_async_RunsTasksSynchronously :white_check_mark: Should_not_scramble_property_name_when_using_collection_validators_several_levels_deep :white_check_mark: Should_not_scramble_property_name_when_using_collection_validators_several_levels_deep_with_ValidateAsync :white_check_mark: Should_override_property_name :white_check_mark: Skips_null_items :white_check_mark: Top_level_collection :white_check_mark: Uses_useful_error_message_when_used_on_non_property :white_check_mark: Validates_child_validator_asynchronously :white_check_mark: Validates_child_validator_synchronously :white_check_mark: Validates_collection :white_check_mark: When_runs_outside_RuleForEach_loop :white_check_mark: When_runs_outside_RuleForEach_loop_async ``` ### :white_check_mark: FluentValidation.Tests.GreaterThanOrEqualToValidatorTester ``` :white_check_mark: Comparison_property_uses_custom_resolver :white_check_mark: Comparison_type :white_check_mark: Should_fail_when_less_than_input :white_check_mark: Should_localize_value :white_check_mark: Should_set_default_error_when_validation_fails :white_check_mark: Should_succeed_when_equal_to_input :white_check_mark: Should_succeed_when_greater_than_input :white_check_mark: Validates_nullable_with_nullable_property :white_check_mark: Validates_with_nullable_property :white_check_mark: Validates_with_nullable_when_property_is_null :white_check_mark: Validates_with_nullable_when_property_is_null_cross_property :white_check_mark: Validates_with_nullable_when_property_not_null :white_check_mark: Validates_with_nullable_when_property_not_null_cross_property :white_check_mark: Validates_with_property ``` ### :white_check_mark: FluentValidation.Tests.GreaterThanValidatorTester ``` :white_check_mark: Comparison_property_uses_custom_resolver :white_check_mark: Comparison_Type :white_check_mark: Should_fail_when_equal_to_input :white_check_mark: Should_fail_when_less_than_input :white_check_mark: Should_set_default_error_when_validation_fails :white_check_mark: Should_succeed_when_greater_than_input :white_check_mark: Validates_nullable_with_nullable_property :white_check_mark: Validates_with_nullable_property :white_check_mark: Validates_with_nullable_when_property_is_null :white_check_mark: Validates_with_nullable_when_property_is_null_cross_property :white_check_mark: Validates_with_nullable_when_property_not_null :white_check_mark: Validates_with_nullable_when_property_not_null_cross_property :white_check_mark: Validates_with_property ``` ### :white_check_mark: FluentValidation.Tests.InclusiveBetweenValidatorTests ``` :white_check_mark: To_and_from_properties_should_be_set :white_check_mark: To_and_from_properties_should_be_set_for_strings :white_check_mark: Validates_with_nullable_when_property_is_null :white_check_mark: Validates_with_nullable_when_property_not_null :white_check_mark: When_the_text_is_larger_than_the_range_then_the_validator_should_fail :white_check_mark: When_the_text_is_larger_than_the_range_then_the_validator_should_fail_for_strings :white_check_mark: When_the_to_is_smaller_than_the_from_then_the_validator_should_throw :white_check_mark: When_the_to_is_smaller_than_the_from_then_the_validator_should_throw_for_strings :white_check_mark: When_the_validator_fails_the_error_message_should_be_set :white_check_mark: When_the_validator_fails_the_error_message_should_be_set_for_strings :white_check_mark: When_the_value_is_between_the_range_specified_then_the_validator_should_pass :white_check_mark: When_the_value_is_between_the_range_specified_then_the_validator_should_pass_for_strings :white_check_mark: When_the_value_is_exactly_the_size_of_the_lower_bound_then_the_validator_should_pass :white_check_mark: When_the_value_is_exactly_the_size_of_the_lower_bound_then_the_validator_should_pass_for_strings :white_check_mark: When_the_value_is_exactly_the_size_of_the_upper_bound_then_the_validator_should_pass :white_check_mark: When_the_value_is_exactly_the_size_of_the_upper_bound_then_the_validator_should_pass_for_strings :white_check_mark: When_the_value_is_smaller_than_the_range_then_the_validator_should_fail :white_check_mark: When_the_value_is_smaller_than_the_range_then_the_validator_should_fail_for_strings ``` ### :white_check_mark: FluentValidation.Tests.InheritanceValidatorTest ``` :white_check_mark: Can_use_custom_subclass_with_nongeneric_overload :white_check_mark: Validates_collection :white_check_mark: Validates_collection_async :white_check_mark: Validates_inheritance_async :white_check_mark: Validates_inheritance_hierarchy :white_check_mark: Validates_ruleset :white_check_mark: Validates_ruleset_async :white_check_mark: Validates_with_callback :white_check_mark: Validates_with_callback_accepting_derived :white_check_mark: Validates_with_callback_accepting_derived_async :white_check_mark: Validates_with_callback_async ``` ### :white_check_mark: FluentValidation.Tests.InlineValidatorTester ``` :white_check_mark: Uses_inline_validator_to_build_rules ``` ### :white_check_mark: FluentValidation.Tests.LanguageManagerTests ``` :white_check_mark: All_languages_should_be_loaded :white_check_mark: All_localizations_have_same_parameters_as_English :white_check_mark: Always_use_specific_language :white_check_mark: Always_use_specific_language_with_string_source :white_check_mark: Can_replace_message :white_check_mark: Can_replace_message_without_overriding_all_languages :white_check_mark: Disables_localization :white_check_mark: Falls_back_to_default_localization_key_when_error_code_key_not_found :white_check_mark: Falls_back_to_english_when_culture_not_registered :white_check_mark: Falls_back_to_english_when_translation_missing :white_check_mark: Falls_back_to_parent_culture :white_check_mark: Gets_translation_for_bosnian_latin_culture(cultureName: "bs-Latn-BA") :white_check_mark: Gets_translation_for_bosnian_latin_culture(cultureName: "bs-Latn") :white_check_mark: Gets_translation_for_bosnian_latin_culture(cultureName: "bs") :white_check_mark: Gets_translation_for_croatian_culture :white_check_mark: Gets_translation_for_culture :white_check_mark: Gets_translation_for_serbian_culture(cultureName: "sr-Latn-RS") :white_check_mark: Gets_translation_for_serbian_culture(cultureName: "sr-Latn") :white_check_mark: Gets_translation_for_serbian_culture(cultureName: "sr") :white_check_mark: Gets_translation_for_specific_culture :white_check_mark: Uses_error_code_as_localization_key ``` ### :white_check_mark: FluentValidation.Tests.LengthValidatorTests ``` :white_check_mark: Min_and_max_properties_should_be_set :white_check_mark: When_input_is_null_then_the_validator_should_pass :white_check_mark: When_the_max_is_smaller_than_the_min_then_the_validator_should_throw :white_check_mark: When_the_maxlength_validator_fails_the_error_message_should_be_set :white_check_mark: When_the_minlength_validator_fails_the_error_message_should_be_set :white_check_mark: When_the_text_is_between_the_lambda_range_specified_then_the_validator_should_pass :white_check_mark: When_the_text_is_between_the_range_specified_then_the_validator_should_pass :white_check_mark: When_the_text_is_exactly_the_size_of_the_lambda_lower_bound_then_the_validator_should_pass :white_check_mark: When_the_text_is_exactly_the_size_of_the_lambda_upper_bound_then_the_validator_should_pass :white_check_mark: When_the_text_is_exactly_the_size_of_the_lower_bound_then_the_validator_should_pass :white_check_mark: When_the_text_is_exactly_the_size_of_the_upper_bound_then_the_validator_should_pass :white_check_mark: When_the_text_is_larger_than_the_lambda_range_then_the_validator_should_fail :white_check_mark: When_the_text_is_larger_than_the_range_then_the_validator_should_fail :white_check_mark: When_the_text_is_smaller_than_the_lambda_range_then_the_validator_should_fail :white_check_mark: When_the_text_is_smaller_than_the_range_then_the_validator_should_fail :white_check_mark: When_the_validator_fails_the_error_message_should_be_set ``` ### :white_check_mark: FluentValidation.Tests.LessThanOrEqualToValidatorTester ``` :white_check_mark: Comparison_property_uses_custom_resolver :white_check_mark: Comparison_type :white_check_mark: Should_fail_when_greater_than_input :white_check_mark: Should_set_default_error_when_validation_fails :white_check_mark: Should_succeed_when_equal_to_input :white_check_mark: Should_succeed_when_less_than_input :white_check_mark: Validates_nullable_with_nullable_property :white_check_mark: Validates_with_nullable_property :white_check_mark: Validates_with_nullable_when_property_is_null :white_check_mark: Validates_with_nullable_when_property_is_null_cross_property :white_check_mark: Validates_with_nullable_when_property_not_null :white_check_mark: Validates_with_nullable_when_property_not_null_cross_property :white_check_mark: Validates_with_property ``` ### :white_check_mark: FluentValidation.Tests.LessThanValidatorTester ``` :white_check_mark: Comparison_property_uses_custom_resolver :white_check_mark: Comparison_type :white_check_mark: Extracts_property_from_constant_using_expression :white_check_mark: Extracts_property_from_expression :white_check_mark: Should_fail_when_equal_to_input :white_check_mark: Should_fail_when_greater_than_input :white_check_mark: Should_set_default_validation_message_when_validation_fails :white_check_mark: Should_succeed_when_less_than_input :white_check_mark: Should_throw_when_value_to_compare_is_null :white_check_mark: Validates_against_property :white_check_mark: Validates_nullable_with_nullable_property :white_check_mark: Validates_with_nullable_property :white_check_mark: Validates_with_nullable_when_property_is_null :white_check_mark: Validates_with_nullable_when_property_not_null :white_check_mark: Validates_with_nullable_when_property_not_null_cross_property :white_check_mark: Validates_with_nullable_when_property_null_cross_property ``` ### :white_check_mark: FluentValidation.Tests.LocalisedMessagesTester ``` :white_check_mark: Correctly_assigns_default_localized_error_message :white_check_mark: Does_not_throw_InvalidCastException_when_using_RuleForEach :white_check_mark: Formats_string_with_placeholders :white_check_mark: Formats_string_with_placeholders_when_you_cant_edit_the_string :white_check_mark: Uses_func_to_get_message :white_check_mark: Uses_string_format_with_property_value ``` ### :white_check_mark: FluentValidation.Tests.LocalisedNameTester ``` :white_check_mark: Uses_localized_name :white_check_mark: Uses_localized_name_expression ``` ### :white_check_mark: FluentValidation.Tests.MemberAccessorTests ``` :white_check_mark: ComplexPropertyGet :white_check_mark: ComplexPropertySet :white_check_mark: Equality :white_check_mark: ImplicitCast :white_check_mark: Name :white_check_mark: SimpleFieldGet :white_check_mark: SimpleFieldSet :white_check_mark: SimplePropertyGet :white_check_mark: SimplePropertySet ``` ### :white_check_mark: FluentValidation.Tests.MessageFormatterTests ``` :white_check_mark: Adds_argument_and_custom_arguments :white_check_mark: Adds_formatted_argument_and_custom_arguments :white_check_mark: Adds_formatted_argument_and_formatted_custom_arguments :white_check_mark: Adds_PropertyName_to_message :white_check_mark: Adds_value_to_message :white_check_mark: Format_property_value :white_check_mark: Should_ignore_unknown_numbered_parameters :white_check_mark: Should_ignore_unknown_parameters :white_check_mark: Understands_date_formats :white_check_mark: Understands_numeric_formats ``` ### :white_check_mark: FluentValidation.Tests.ModelLevelValidatorTests ``` :white_check_mark: Can_use_child_validator_at_model_level :white_check_mark: Validates_at_model_level ``` ### :white_check_mark: FluentValidation.Tests.NameResolutionPluggabilityTester ``` :white_check_mark: Resolves_nested_properties :white_check_mark: ShouldHaveValidationError_Should_support_custom_propertynameresolver :white_check_mark: Uses_custom_property_name ``` ### :white_check_mark: FluentValidation.Tests.NotEmptyTester ``` :white_check_mark: Fails_for_array :white_check_mark: Fails_for_ienumerable_that_doesnt_implement_ICollection :white_check_mark: Fails_when_collection_empty :white_check_mark: When_there_is_a_value_then_the_validator_should_pass :white_check_mark: When_validation_fails_error_should_be_set :white_check_mark: When_value_is_Default_for_type_validator_should_fail_datetime :white_check_mark: When_value_is_Default_for_type_validator_should_fail_int :white_check_mark: When_value_is_empty_string_validator_should_fail :white_check_mark: When_value_is_null_validator_should_fail :white_check_mark: When_value_is_whitespace_validation_should_fail ``` ### :white_check_mark: FluentValidation.Tests.NotEqualValidatorTests ``` :white_check_mark: Comparison_property_uses_custom_resolver :white_check_mark: Should_handle_custom_value_types_correctly :white_check_mark: Should_not_be_valid_for_case_insensitve_comparison :white_check_mark: Should_not_be_valid_for_case_insensitve_comparison_with_expression :white_check_mark: Should_store_comparison_type :white_check_mark: Should_store_property_to_compare :white_check_mark: Should_use_ordinal_comparison_by_default :white_check_mark: Validates_across_properties :white_check_mark: When_the_objects_are_equal_then_the_validator_should_fail :white_check_mark: When_the_objects_are_not_equal_then_the_validator_should_pass :white_check_mark: When_the_validator_fails_the_error_message_should_be_set ``` ### :white_check_mark: FluentValidation.Tests.NotNullTester ``` :white_check_mark: Fails_when_nullable_value_type_is_null :white_check_mark: Not_null_validator_should_not_crash_with_non_nullable_value_type :white_check_mark: NotNullValidator_should_fail_if_value_is_null :white_check_mark: NotNullValidator_should_pass_if_value_has_value :white_check_mark: When_the_validator_fails_the_error_message_should_be_set ``` ### :white_check_mark: FluentValidation.Tests.NullTester ``` :white_check_mark: Not_null_validator_should_not_crash_with_non_nullable_value_type :white_check_mark: NullValidator_should_fail_if_value_has_value :white_check_mark: NullValidator_should_pass_if_value_is_null :white_check_mark: Passes_when_nullable_value_type_is_null :white_check_mark: When_the_validator_passes_the_error_message_should_be_set ``` ### :white_check_mark: FluentValidation.Tests.OnFailureTests ``` :white_check_mark: OnFailure_called_for_each_failed_rule :white_check_mark: OnFailure_called_for_each_failed_rule_asyncAsync :white_check_mark: Should_be_able_to_access_error_message_in_OnFailure :white_check_mark: ShouldHaveChildValidator_should_be_true :white_check_mark: ShouldHaveChildValidator_works_with_Include :white_check_mark: WhenAsyncWithOnFailure_should_invoke_condition_on_async_inner_validator :white_check_mark: WhenAsyncWithOnFailure_should_invoke_condition_on_inner_validator :white_check_mark: WhenAsyncWithOnFailure_should_invoke_condition_on_inner_validator_invoked_synchronously :white_check_mark: WhenWithOnFailure_should_invoke_condition_on_async_inner_validator :white_check_mark: WhenWithOnFailure_should_invoke_condition_on_inner_validator ``` ### :white_check_mark: FluentValidation.Tests.PredicateValidatorTester ``` :white_check_mark: Should_fail_when_predicate_returns_false :white_check_mark: Should_succeed_when_predicate_returns_true :white_check_mark: Should_throw_when_predicate_is_null :white_check_mark: When_validation_fails_metadata_should_be_set_on_failure :white_check_mark: When_validation_fails_the_default_error_should_be_set ``` ### :white_check_mark: FluentValidation.Tests.PropertyChainTests ``` :white_check_mark: AddIndexer_throws_when_nothing_added :white_check_mark: Calling_ToString_should_construct_string_representation_of_chain :white_check_mark: Calling_ToString_should_construct_string_representation_of_chain_with_indexers :white_check_mark: Creates_from_expression :white_check_mark: Should_be_subchain :white_check_mark: Should_ignore_blanks :white_check_mark: Should_not_be_subchain ``` ### :white_check_mark: FluentValidation.Tests.RegularExpressionValidatorTests ``` :white_check_mark: Can_access_expression_in_message :white_check_mark: Can_access_expression_in_message_lambda :white_check_mark: Can_access_expression_in_message_lambda_regex :white_check_mark: Uses_lazily_loaded_expression :white_check_mark: Uses_lazily_loaded_expression_with_options :white_check_mark: Uses_regex_object :white_check_mark: When_the_text_does_not_match_the_lambda_regex_regular_expression_then_the_validator_should_fail :white_check_mark: When_the_text_does_not_match_the_lambda_regular_expression_then_the_validator_should_fail :white_check_mark: When_the_text_does_not_match_the_regular_expression_then_the_validator_should_fail :white_check_mark: When_the_text_is_empty_then_the_validator_should_fail :white_check_mark: When_the_text_is_null_then_the_validator_should_pass :white_check_mark: When_the_text_matches_the_lambda_regex_regular_expression_then_the_validator_should_pass :white_check_mark: When_the_text_matches_the_lambda_regular_expression_then_the_validator_should_pass :white_check_mark: When_the_text_matches_the_regular_expression_then_the_validator_should_pass :white_check_mark: When_validation_fails_the_default_error_should_be_set ``` ### :white_check_mark: FluentValidation.Tests.RuleBuilderTests ``` :white_check_mark: Adding_a_validator_should_return_builder :white_check_mark: Adding_a_validator_should_store_validator :white_check_mark: Calling_validate_should_delegate_to_underlying_validator :white_check_mark: Calling_ValidateAsync_should_delegate_to_underlying_async_validator :white_check_mark: Calling_ValidateAsync_should_delegate_to_underlying_sync_validator :white_check_mark: Conditional_child_validator_should_register_with_validator_type_not_property :white_check_mark: Nullable_object_with_async_condition_should_not_throw :white_check_mark: Nullable_object_with_condition_should_not_throw :white_check_mark: Property_should_return_null_when_it_is_not_a_property_being_validated :white_check_mark: Property_should_return_property_being_validated :white_check_mark: PropertyDescription_should_return_custom_property_name :white_check_mark: PropertyDescription_should_return_property_name_split :white_check_mark: Result_should_use_custom_property_name_when_no_property_name_can_be_determined :white_check_mark: Rule_for_a_non_memberexpression_should_not_generate_property_name :white_check_mark: Should_build_property_name :white_check_mark: Should_compile_expression :white_check_mark: Should_set_custom_error :white_check_mark: Should_set_custom_property_name :white_check_mark: Should_throw_if_message_is_null :white_check_mark: Should_throw_if_overriding_validator_is_null :white_check_mark: Should_throw_if_overriding_validator_provider_is_null :white_check_mark: Should_throw_if_property_name_is_null :white_check_mark: Should_throw_if_validator_is_null :white_check_mark: Should_throw_when_async_inverse_predicate_is_null :white_check_mark: Should_throw_when_async_predicate_is_null :white_check_mark: Should_throw_when_context_predicate_is_null :white_check_mark: Should_throw_when_inverse_context_predicate_is_null :white_check_mark: Should_throw_when_inverse_predicate_is_null :white_check_mark: Should_throw_when_predicate_is_null ``` ### :white_check_mark: FluentValidation.Tests.RuleDependencyTests ``` :white_check_mark: Async_inside_dependent_rules :white_check_mark: Async_inside_dependent_rules_when_parent_rule_not_async :white_check_mark: Dependent_rules_inside_ruleset :white_check_mark: Dependent_rules_inside_when :white_check_mark: Does_not_invoke_dependent_rule_if_parent_rule_does_not_pass :white_check_mark: Invokes_dependent_rule_if_parent_rule_passes :white_check_mark: Nested_dependent_rules :white_check_mark: Nested_dependent_rules_inside_ruleset :white_check_mark: Nested_dependent_rules_inside_ruleset_inside_method :white_check_mark: Nested_dependent_rules_inside_ruleset_no_result_when_second_level_fails :white_check_mark: Nested_dependent_rules_inside_ruleset_no_result_when_top_level_fails :white_check_mark: TestAsyncWithDependentRules_AsyncEntry :white_check_mark: TestAsyncWithDependentRules_SyncEntry :white_check_mark: Treats_root_level_RuleFor_call_as_dependent_rule_if_user_forgets_to_use_DependentRulesBuilder ``` ### :white_check_mark: FluentValidation.Tests.RulesetTests ``` :white_check_mark: Applies_multiple_rulesets_to_rule :white_check_mark: Combines_rulesets_and_explicit_properties :white_check_mark: Combines_rulesets_and_explicit_properties_async :white_check_mark: Executes_all_rules :white_check_mark: Executes_in_rule_in_default_and_none :white_check_mark: Executes_in_rule_in_ruleset_and_default :white_check_mark: Executes_multiple_rulesets :white_check_mark: Executes_rules_in_default_ruleset_and_specific_ruleset :white_check_mark: Executes_rules_in_specified_ruleset :white_check_mark: Executes_rules_not_specified_in_ruleset :white_check_mark: Includes_all_rulesets :white_check_mark: Includes_all_rulesets_async :white_check_mark: Includes_combination_of_rulesets :white_check_mark: Includes_combination_of_rulesets_async :white_check_mark: Ruleset_cascades_to_child_collection_validator :white_check_mark: Ruleset_cascades_to_child_validator :white_check_mark: Ruleset_selection_should_cascade_downwards_with_when_setting_child_validator_using_include_statement :white_check_mark: Ruleset_selection_should_cascade_downwards_with_when_setting_child_validator_using_include_statement_with_lambda :white_check_mark: Ruleset_selection_should_not_cascade_downwards_when_set_on_property :white_check_mark: Trims_spaces :white_check_mark: WithMessage_works_inside_rulesets ``` ### :white_check_mark: FluentValidation.Tests.ScalePrecisionValidatorTests ``` :white_check_mark: Scale_precision_should_be_valid :white_check_mark: Scale_precision_should_be_valid_when_ignoring_trailing_zeroes :white_check_mark: Scale_precision_should_be_valid_when_they_are_equal :white_check_mark: Scale_precision_should_not_be_valid :white_check_mark: Scale_precision_should_not_be_valid_when_ignoring_trailing_zeroes :white_check_mark: Scale_precision_should_not_be_valid_when_they_are_equal ``` ### :white_check_mark: FluentValidation.Tests.SharedConditionTests ``` :white_check_mark: Async_condition_can_be_used_inside_ruleset :white_check_mark: Condition_can_be_used_inside_ruleset :white_check_mark: Does_not_execute_custom_Rule_when_async_condition_false :white_check_mark: Does_not_execute_custom_Rule_when_condition_false :white_check_mark: Does_not_execute_customasync_Rule_when_async_condition_false :white_check_mark: Does_not_execute_customasync_Rule_when_condition_false :white_check_mark: Doesnt_throw_NullReferenceException_when_instance_not_null :white_check_mark: Doesnt_throw_NullReferenceException_when_instance_not_null_async :white_check_mark: Executes_custom_rule_when_async_condition_true :white_check_mark: Executes_custom_rule_when_condition_true :white_check_mark: Executes_customasync_rule_when_async_condition_true :white_check_mark: Executes_customasync_rule_when_condition_true :white_check_mark: Nested_async_conditions_with_Custom_rule :white_check_mark: Nested_async_conditions_with_CustomAsync_rule :white_check_mark: Nested_conditions_with_Custom_rule :white_check_mark: Nested_conditions_with_CustomAsync_rule :white_check_mark: Outer_async_Unless_clause_will_trump_an_inner_Unless_clause_when_inner_fails_but_the_outer_is_satisfied :white_check_mark: Outer_Unless_clause_will_trump_an_inner_Unless_clause_when_inner_fails_but_the_outer_is_satisfied :white_check_mark: Rules_invoke_when_inverse_shared_async_condition_matches :white_check_mark: Rules_invoke_when_inverse_shared_condition_matches :white_check_mark: Rules_not_invoked_when_inverse_shared_async_condition_does_not_match :white_check_mark: Rules_not_invoked_when_inverse_shared_condition_does_not_match :white_check_mark: RuleSet_can_be_used_inside_async_condition :white_check_mark: RuleSet_can_be_used_inside_condition :white_check_mark: Runs_otherwise_conditions_for_UnlessAsync :white_check_mark: Runs_otherwise_conditions_for_When :white_check_mark: Runs_otherwise_conditions_for_WhenAsync :white_check_mark: Runs_otherwise_conditons_for_Unless :white_check_mark: Shared_async_When_is_applied_to_groupd_rules_when_initial_predicate_is_true_and_all_individual_rules_are_satisfied :white_check_mark: Shared_async_When_is_applied_to_grouped_rules_when_initial_predicate_is_true :white_check_mark: Shared_async_When_is_not_applied_to_grouped_rules_when_initial_predicate_is_false :white_check_mark: Shared_async_When_respects_the_smaller_scope_of_a_inner_Unless_when_the_inner_Unless_predicate_fails :white_check_mark: Shared_async_When_respects_the_smaller_scope_of_an_inner_Unless_when_the_inner_Unless_predicate_is_satisfied :white_check_mark: Shared_When_is_applied_to_groupd_rules_when_initial_predicate_is_true_and_all_individual_rules_are_satisfied :white_check_mark: Shared_When_is_applied_to_grouped_rules_when_initial_predicate_is_true :white_check_mark: Shared_When_is_not_applied_to_grouped_rules_when_initial_predicate_is_false :white_check_mark: Shared_When_respects_the_smaller_scope_of_a_inner_Unless_when_the_inner_Unless_predicate_fails :white_check_mark: Shared_When_respects_the_smaller_scope_of_an_inner_Unless_when_the_inner_Unless_predicate_is_satisfied :white_check_mark: When_async_condition_executed_for_each_instance_of_RuleForEach_condition_should_not_be_cached :white_check_mark: When_condition_executed_for_each_instance_of_RuleForEach_condition_should_not_be_cached :white_check_mark: When_condition_only_executed_once :white_check_mark: WhenAsync_condition_only_executed_once ``` ### :white_check_mark: FluentValidation.Tests.StandalonePropertyValidationTester ``` :white_check_mark: Should_validate_property_value_without_instance ``` ### :white_check_mark: FluentValidation.Tests.StringEnumValidatorTests ``` :white_check_mark: IsValidTests_CaseInsensitive_CaseCorrect :white_check_mark: IsValidTests_CaseInsensitive_CaseIncorrect :white_check_mark: IsValidTests_CaseSensitive_CaseCorrect :white_check_mark: IsValidTests_CaseSensitive_CaseIncorrect :white_check_mark: When_enumType_is_not_an_enum_it_should_throw :white_check_mark: When_enumType_is_null_it_should_throw :white_check_mark: When_the_property_is_initialized_with_empty_string_then_the_validator_should_fail :white_check_mark: When_the_property_is_initialized_with_invalid_string_then_the_validator_should_fail :white_check_mark: When_the_property_is_initialized_with_null_then_the_validator_should_be_valid :white_check_mark: When_validation_fails_the_default_error_should_be_set ``` ### :white_check_mark: FluentValidation.Tests.TrackingCollectionTests ``` :white_check_mark: Add_AddsItem :white_check_mark: Should_not_raise_event_once_handler_detached :white_check_mark: When_Item_Added_Raises_ItemAdded ``` ### :white_check_mark: FluentValidation.Tests.TransformTests ``` :white_check_mark: Transforms_collection_element :white_check_mark: Transforms_collection_element_async :white_check_mark: Transforms_property_value :white_check_mark: Transforms_property_value_to_another_type ``` ### :white_check_mark: FluentValidation.Tests.UserSeverityTester ``` :white_check_mark: Can_Provide_conditional_severity :white_check_mark: Can_Provide_severity_for_item_in_collection :white_check_mark: Correctly_provides_object_being_validated :white_check_mark: Defaults_user_severity_to_error :white_check_mark: Should_use_last_supplied_severity :white_check_mark: Stores_user_severity_against_validation_failure :white_check_mark: Throws_when_provider_is_null ``` ### :white_check_mark: FluentValidation.Tests.UserStateTester ``` :white_check_mark: Can_Provide_state_for_item_in_collection :white_check_mark: Correctly_provides_object_being_validated :white_check_mark: Stores_user_state_against_validation_failure :white_check_mark: Throws_when_provider_is_null ``` ### :white_check_mark: FluentValidation.Tests.ValidateAndThrowTester ``` :white_check_mark: Does_not_throw_when_valid :white_check_mark: Does_not_throw_when_valid_and_a_ruleset :white_check_mark: Does_not_throw_when_valid_and_a_ruleset_async :white_check_mark: Does_not_throw_when_valid_async :white_check_mark: Only_root_validator_throws :white_check_mark: Populates_errors :white_check_mark: Serializes_exception :white_check_mark: Throws_exception :white_check_mark: Throws_exception_async :white_check_mark: Throws_exception_with_a_ruleset :white_check_mark: Throws_exception_with_a_ruleset_async :white_check_mark: ToString_provides_error_details :white_check_mark: ValidationException_provides_correct_message_when_appendDefaultMessage_false :white_check_mark: ValidationException_provides_correct_message_when_appendDefaultMessage_true ``` ### :white_check_mark: FluentValidation.Tests.ValidationResultTests ``` :white_check_mark: Can_serialize_failure :white_check_mark: Can_serialize_result :white_check_mark: Should_add_errors :white_check_mark: Should_be_valid_when_there_are_no_errors :white_check_mark: Should_not_be_valid_when_there_are_errors :white_check_mark: ToString_return_empty_string_when_there_is_no_error :white_check_mark: ToString_return_error_messages_with_given_separator :white_check_mark: ToString_return_error_messages_with_newline_as_separator ``` ### :white_check_mark: FluentValidation.Tests.ValidatorDescriptorTester ``` :white_check_mark: Does_not_throw_when_rule_declared_without_property :white_check_mark: Gets_validators_for_property :white_check_mark: GetValidatorsForMember_and_GetRulesForMember_can_both_retrieve_for_model_level_rule :white_check_mark: Returns_empty_collection_for_property_with_no_validators :white_check_mark: Should_retrieve_name_given_to_it_pass_property_as_string ``` ### :white_check_mark: FluentValidation.Tests.ValidatorSelectorTests ``` :white_check_mark: Can_use_property_with_include :white_check_mark: Does_not_validate_other_property :white_check_mark: Does_not_validate_other_property_using_expression :white_check_mark: Executes_correct_rule_when_using_property_with_include :white_check_mark: Executes_correct_rule_when_using_property_with_include_async :white_check_mark: Includes_nested_property :white_check_mark: Includes_nested_property_using_expression :white_check_mark: MemberNameValidatorSelector_returns_true_when_property_name_matches :white_check_mark: Validates_nullable_property_with_overriden_name_when_selected :white_check_mark: Validates_property_using_expression ``` ### :white_check_mark: FluentValidation.Tests.ValidatorTesterTester ``` :white_check_mark: Allows_only_one_failure_to_match :white_check_mark: Can_use_indexer_in_string_message :white_check_mark: Can_use_indexer_in_string_message_inverse :white_check_mark: Expected_error_code_check :white_check_mark: Expected_message_argument_check :white_check_mark: Expected_message_check :white_check_mark: Expected_severity_check :white_check_mark: Expected_state_check :white_check_mark: Matches_any_failure :white_check_mark: Matches_model_level_rule :white_check_mark: Model_level_check_fails_if_no_model_level_failures :white_check_mark: ShouldHaveChildValidator_should_not_throw_when_property_Does_have_child_validator :white_check_mark: ShouldHaveChildValidator_should_not_throw_when_property_Does_have_child_validator_and_expecting_a_basetype :white_check_mark: ShouldHaveChildValidator_should_not_throw_when_property_has_collection_validators :white_check_mark: ShouldHaveChildValidator_should_throw_when_property_has_a_different_child_validator :white_check_mark: ShouldHaveChildValidator_should_work_with_DependentRules :white_check_mark: ShouldHaveChildvalidator_throws_when_collection_property_Does_not_have_child_validator :white_check_mark: ShouldHaveChildValidator_throws_when_property_does_not_have_child_validator :white_check_mark: ShouldHaveChildValidator_works_on_model_level_rules :white_check_mark: ShouldHaveValidationError_async :white_check_mark: ShouldHaveValidationError_async_throws :white_check_mark: ShouldHaveValidationError_model_async :white_check_mark: ShouldHaveValidationError_model_async_throws :white_check_mark: ShouldHaveValidationError_preconstructed_object_does_not_throw_for_unwritable_property :white_check_mark: ShouldHaveValidationError_should_not_throw_when_there_are_errors_with_preconstructed_object :white_check_mark: ShouldHaveValidationError_should_not_throw_when_there_are_validation_errors :white_check_mark: ShouldHaveValidationError_should_not_throw_when_there_are_validation_errors__WhenAsyn_is_used(age: 42, cardNumber: "") :white_check_mark: ShouldHaveValidationError_should_not_throw_when_there_are_validation_errors__WhenAsyn_is_used(age: 42, cardNumber: null) :white_check_mark: ShouldHaveValidationError_should_not_throw_when_there_are_validation_errors_ruleforeach :white_check_mark: ShouldHaveValidationError_Should_support_nested_properties :white_check_mark: ShouldHaveValidationError_Should_throw_when_there_are_no_validation_errors :white_check_mark: ShouldHaveValidationError_should_throw_when_there_are_no_validation_errors_with_preconstructed_object :white_check_mark: ShouldHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_Is_Used(age: 17, cardNumber: "") :white_check_mark: ShouldHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_Is_Used(age: 17, cardNumber: "cardNumber") :white_check_mark: ShouldHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_Is_Used(age: 17, cardNumber: null) :white_check_mark: ShouldHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_Is_Used(age: 42, cardNumber: "cardNumber") :white_check_mark: ShouldHaveValidationError_should_throw_when_there_are_not_validation_errors_ruleforeach :white_check_mark: ShouldHaveValidationError_with_an_unmatched_rule_and_a_single_error_should_throw_an_exception :white_check_mark: ShouldHaveValidationError_with_an_unmatched_rule_and_multiple_errors_should_throw_an_exception :white_check_mark: ShouldHaveValidationErrorFor_takes_account_of_rulesets :white_check_mark: ShouldHaveValidationErrorFor_takes_account_of_rulesets_fluent_approach :white_check_mark: ShouldNotHaveValidationError_async :white_check_mark: ShouldNotHaveValidationError_async_model_throws :white_check_mark: ShouldNotHaveValidationError_async_throws :white_check_mark: ShouldNotHaveValidationError_model_async :white_check_mark: ShouldNotHaveValidationError_should_correctly_handle_explicitly_providing_object_to_validate :white_check_mark: ShouldNotHaveValidationError_should_correctly_handle_explicitly_providing_object_to_validate_and_other_property_fails_validation :white_check_mark: ShouldNotHaveValidationError_should_have_validation_error_details_when_thrown_ruleforeach :white_check_mark: ShouldNotHaveValidationError_should_not_throw_when_there_are_no_errors :white_check_mark: ShouldNotHAveValidationError_should_not_throw_When_there_are_no_errors_with_preconstructed_object :white_check_mark: ShouldNotHaveValidationError_should_not_throw_when_there_are_not_validation_errors_ruleforeach :white_check_mark: ShouldNotHaveValidationError_Should_support_nested_properties :white_check_mark: ShouldNotHaveValidationError_should_throw_when_there_are_errors :white_check_mark: ShouldNotHaveValidationError_should_throw_when_there_are_errors_with_preconstructed_object :white_check_mark: ShouldNotHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_is_used(age: 17, cardNumber: "") :white_check_mark: ShouldNotHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_is_used(age: 17, cardNumber: "cardNumber") :white_check_mark: ShouldNotHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_is_used(age: 17, cardNumber: null) :white_check_mark: ShouldNotHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_is_used(age: 42, cardNumber: "cardNumber") :white_check_mark: ShouldNotHaveValidationError_should_throw_when_there_are_validation_errors__WhenAsyn_is_used(age: 42, cardNumber: "") :white_check_mark: ShouldNotHaveValidationError_should_throw_when_there_are_validation_errors__WhenAsyn_is_used(age: 42, cardNumber: null) :white_check_mark: ShouldNotHaveValidationError_should_throw_when_there_are_validation_errors_ruleforeach :white_check_mark: Tests_nested_property :white_check_mark: Tests_nested_property_reverse :white_check_mark: Tests_nested_property_using_obsolete_method :white_check_mark: TestValidate_runs_async :white_check_mark: TestValidate_runs_async_throws :white_check_mark: Unexpected_error_code_check :white_check_mark: Unexpected_message_check(withoutErrMsg: "bar", errMessages: ["bar"]) :white_check_mark: Unexpected_message_check(withoutErrMsg: "bar", errMessages: ["foo", "bar"]) :white_check_mark: Unexpected_message_check(withoutErrMsg: "bar", errMessages: ["foo"]) :white_check_mark: Unexpected_message_check(withoutErrMsg: "bar", errMessages: []) :white_check_mark: Unexpected_severity_check :white_check_mark: Unexpected_state_check ```