protected void ShouldFailRule(Action <ValidationTestConfig> configure)
    {
        var config = new ValidationTestConfig();

        config.Rules.Add(Rule);
        configure(config);

        config.Rules.Any().ShouldBeTrue("Must provide at least one rule to validate against.");

        config.Schema.Initialize();

        var result = Validate(config);

        result.IsValid.ShouldBeFalse("Expected validation errors though there were none.");
        config.ValidateResult(result);
    }
    protected void ShouldPassRule(Action <ValidationTestConfig> configure)
    {
        var config = new ValidationTestConfig();

        config.Rules.Add(Rule);
        configure(config);

        config.Rules.Any().ShouldBeTrue("Must provide at least one rule to validate against.");

        config.Schema.Initialize();

        var result = Validate(config);

        string message = "";

        if (result.Errors?.Any() == true)
        {
            message = string.Join(", ", result.Errors.Select(x => x.Message));
        }
        result.IsValid.ShouldBeTrue(message);
        config.ValidateResult(result);
    }