lib/rast/parameter_generator.rb in rast-0.19.1 vs lib/rast/parameter_generator.rb in rast-1.0.0
- old
+ new
@@ -1,13 +1,15 @@
# frozen_string_literal: true
require 'yaml'
-require 'rast/rast_spec'
+
require 'rast/rules/rule'
require 'rast/rules/rule_evaluator'
-require 'rast/rules/rule_validator'
+require 'rast/rast_spec'
+require 'rast/rule_validator'
+
# Generates the test parameters.
class ParameterGenerator
# Allow access so yaml-less can build the config via dsl.
attr_accessor :specs_config
@@ -34,10 +36,13 @@
spec = build_spec(spec_config)
list = []
variables = spec.variables
+ # dict.first method returns the first key and value as an array, so invoking
+ # .first, then . last would return the
+ # first value.
var_first = variables.first
multipliers = []
(1...variables.size).each { |i| multipliers << variables.values[i].dup }
scenarios = var_first.last.product(*multipliers)
@@ -65,30 +70,29 @@
def valid_case?(scenario, spec)
return true unless with_optional_clause?(spec)
include_result = true
unless spec.exclude_clause.nil?
- include_result = qualify_secario?(spec, scenario, false)
+ include_result = qualify_scenario?(spec, scenario, false)
end
return include_result if no_include_or_dont_include?(spec, include_result)
- qualify_secario?(spec, scenario, true)
+ qualify_scenario?(spec, scenario, true)
end
# blech!
def no_include_or_dont_include?(spec, include_result)
spec.include_clause.nil? || !include_result
end
- def qualify_secario?(spec, scenario, is_included)
+ def qualify_scenario?(spec, scenario, is_included)
action = is_included ? 'include' : 'exclude'
- rule_evaluator = RuleEvaluator.new(converters: spec.converters)
+ rule_evaluator = RuleEvaluator.new(token_converters: spec.token_converter)
clause = Rule.sanitize(clause: spec.send("#{action}_clause"))
rule_evaluator.parse(expression: clause)
rule_evaluator.evaluate(
- scenario: scenario,
- rule_token_convert: spec.token_converter
+ scenario: scenario
) == is_included.to_s
end
# Has an exclude or include clause
def with_optional_clause?(spec)