Class: Test::Unit::DataSets
Relationships & Source Files | |
Inherits: | Object |
Defined in: | lib/test/unit/data-sets.rb |
Class Method Summary
- .new ⇒ DataSets constructor
Instance Attribute Summary
- #have_keep? ⇒ Boolean readonly
Instance Method Summary
Constructor Details
.new ⇒ DataSets
# File 'lib/test/unit/data-sets.rb', line 4
def initialize @variables = [] @procs = [] @value_sets = [] end
Instance Attribute Details
#have_keep? ⇒ Boolean
(readonly)
[ GitHub ]
# File 'lib/test/unit/data-sets.rb', line 25
def have_keep? each_data_set do |_, | return true if [:keep] end false end
Instance Method Details
#<<(data_set)
[ GitHub ]# File 'lib/test/unit/data-sets.rb', line 21
def <<(data_set) add(data_set) end
#==(other)
[ GitHub ]# File 'lib/test/unit/data-sets.rb', line 66
def ==(other) @variables == other.instance_variable_get(:@variables) and @procs == other.instance_variable_get(:@procs) and @value_sets == other.instance_variable_get(:@value_sets) end
#add(data_set, options = nil)
[ GitHub ]# File 'lib/test/unit/data-sets.rb', line 10
def add(data_set, =nil) ||= {} if data_set.respond_to?(:call) @procs << [data_set, ] elsif data_set.is_a?(Array) @variables << [data_set, ] else @value_sets << [data_set, ] end end
#each
[ GitHub ]# File 'lib/test/unit/data-sets.rb', line 42
def each variables = @variables value_sets = @value_sets @procs.each do |proc, | data_set = proc.call case data_set when Array variables += [[data_set, ]] else value_sets += [[data_set, ]] end end value_sets.each do |values, | values.each do |label, data| yield(label, data) end end each_pattern(variables) do |label, data| yield(label, data) end end
#each_data_set(&block) (private)
[ GitHub ]#each_pattern(variables) (private)
[ GitHub ]# File 'lib/test/unit/data-sets.rb', line 87
def each_pattern(variables) grouped_variables = variables.group_by do |_, | [:group] end grouped_variables.each do |group, group_variables| each_raw_pattern(group_variables) do |cell| label = String.new label << "group: #{group.inspect}" unless group.nil? data = {} cell.each do |variable, pattern, pattern_label| label << ", " unless label.empty? label << "#{variable}: #{pattern_label}" data[variable] = pattern end yield(label, data) end end end
#each_raw_pattern(variables, &block) (private)
[ GitHub ]# File 'lib/test/unit/data-sets.rb', line 106
def each_raw_pattern(variables, &block) return if variables.empty? sorted_variables = variables.sort_by do |(variable, _), _| variable end all_patterns = sorted_variables.collect do |(variable, patterns), _| if patterns.is_a?(Hash) patterns.collect do |pattern_label, pattern| [variable, pattern, pattern_label] end else patterns.collect do |pattern| [variable, pattern, pattern.inspect] end end end all_patterns[0].product(*all_patterns[1..-1], &block) end
#eql?(other) ⇒ Boolean
# File 'lib/test/unit/data-sets.rb', line 72
def eql?(other) self == other end
#hash
[ GitHub ]# File 'lib/test/unit/data-sets.rb', line 76
def hash [@variables, @procs, @value_sets].hash end
#keep
[ GitHub ]# File 'lib/test/unit/data-sets.rb', line 32
def keep new_data_sets = self.class.new each_data_set do |data_set, | next if .nil? next unless [:keep] new_data_sets.add(data_set, ) end new_data_sets end