class TestCaseGenerator::DSLContext

Attributes

children[R]
class_name[R]
labels[R]

Public Class Methods

new() click to toggle source
# File lib/test_case_generator/dsl_context.rb, line 10
def initialize
  @patterns = []
  @before = []
  @after = []
  @children = []
  @labels = []
  @class_name = nil
end

Public Instance Methods

<<(events) click to toggle source
# File lib/test_case_generator/dsl_context.rb, line 19
def <<(events)
  if events.is_a?(String) || events.is_a?(Symbol)
    @patterns << [events]
    @labels << events unless @labels.include? events
  else
    @patterns << events
    events.each do |label|
      @labels << label unless @labels.include? label
    end
  end
end
add_async_events(src_items, options={}) click to toggle source
# File lib/test_case_generator/dsl_context.rb, line 157
def add_async_events(src_items, options={})
  out_items = []

  src_items.each do |pattern1|
    idx_from = options[:from].nil? ? nil : pattern1.find_index{|item| item==options[:from]}
    if idx_from.nil?
      out_items << pattern1
      next
    end

    pattern2 = pattern1[idx_from + 1 ... pattern1.size]
    idx_to = options[:to].nil? ? nil : pattern2.find_index{|item| item==options[:to]}

    tmp_items = idx_to.nil? ? [pattern2] : [pattern2[0 ... idx_to]]
    Utils.para! tmp_items, options[:items]

    out_items.concat tmp_items.map{ |ptn| pattern1[0 .. idx_from] + ptn + (idx_to.nil? ? [] : pattern2[idx_to ... pattern2.size]) }
  end

  out_items.uniq
end
add_async_events!(src_items, options={}) click to toggle source
# File lib/test_case_generator/dsl_context.rb, line 179
def add_async_events!(src_items, options={})
  tmp_items = add_async_events(src_items, options)

  src_items.clear
  src_items.concat tmp_items
  src_items
end
add_patterns(patterns) click to toggle source
# File lib/test_case_generator/dsl_context.rb, line 187
def add_patterns(patterns)
  @patterns.concat patterns

  patterns.each do |pattern|
    pattern.each do |label|
      @labels << label unless @labels.include? label
    end
  end
end
after() { |after| ... } click to toggle source
# File lib/test_case_generator/dsl_context.rb, line 39
def after
  yield @after
end
before() { |before| ... } click to toggle source
# File lib/test_case_generator/dsl_context.rb, line 35
def before
  yield @before
end
choice()
Alias for: pattern
concat(&block) click to toggle source
# File lib/test_case_generator/dsl_context.rb, line 57
def concat(&block)
  child_context = DSLContext.new
  child_context.instance_eval &block

  first = true
  tmp = []
  child_context.children.each do |ctx|
    tmp2 = []
    ctx.raw_each do |ptn|
      if first
        tmp2 << ptn
      else
        tmp.each do |x|
          tmp2 << x + ptn
        end
      end
    end

    tmp = tmp2
    first = false
  end

  tmp.each do |x|
    @patterns << x
    x.each do |label|
      @labels << label unless @labels.include? label
    end
  end
end
def_labels() { |labels| ... } click to toggle source
# File lib/test_case_generator/dsl_context.rb, line 31
def def_labels
  yield @labels
end
def_state_machine(options={}, &block) click to toggle source
# File lib/test_case_generator/dsl_context.rb, line 139
def def_state_machine(options={}, &block)
  ctx = StateMachineContext.new(options)
  ctx.instance_eval &block if block_given?
  ctx
end
each() { |map { |p| make_method_name p| ... } click to toggle source
# File lib/test_case_generator/dsl_context.rb, line 205
def each
  raw_each do |raw_ptn|
    yield raw_ptn.map { |p|
      # p.to_s.split('_').inject([]) { |buffer, e|
      #   buffer << (buffer.empty? ? e : e.capitalize)
      # }.join
      TestCaseGenerator::Utils.make_method_name p
    }
  end
end
para(*args) click to toggle source
# File lib/test_case_generator/dsl_context.rb, line 135
def para(*args)
  Utils.para *args
end
parallel(&block) click to toggle source
# File lib/test_case_generator/dsl_context.rb, line 91
def parallel(&block)
  child_context = DSLContext.new
  child_context.instance_eval &block

  first = true
  tmp = []
  child_context.children.each do |ctx|
    tmp2 = []
    ctx.raw_each do |ptn|
      if first
        tmp2 << ptn
      else
        tmp.each do |x|
          (0..x.length + ptn.length - 1).to_a.combination(x.length) do |index_arr|
            x_index = 0
            ptn_index = 0
            tmp2 << (0..x.length + ptn.length - 1).map do |i|
              if index_arr.include?(i)
                ret = x[x_index]
                x_index += 1
              else
                ret = ptn[ptn_index]
                ptn_index += 1
              end

              ret
            end
          end
        end
      end
    end

    tmp = tmp2
    first = false
  end

  tmp.each do |x|
    @patterns << x
    x.each do |label|
      @labels << label unless @labels.include? label
    end
  end
end
pattern() { |child_context| ... } click to toggle source
# File lib/test_case_generator/dsl_context.rb, line 43
def pattern
  child_context = DSLContext.new
  yield child_context
  @children << child_context

  child_context.raw_each do |ptn|
    @patterns << ptn
    ptn.each do |label|
      @labels << label unless @labels.include? label
    end
  end
end
Also aliased as: choice
raw_each() { |before| ... } click to toggle source
# File lib/test_case_generator/dsl_context.rb, line 201
def raw_each
  @patterns.each { |ptn| yield @before + ptn + @after }
end
seq(*args) click to toggle source
# File lib/test_case_generator/dsl_context.rb, line 87
def seq(*args)
  Utils.concat *args
end
set_class_name(class_name) click to toggle source
# File lib/test_case_generator/dsl_context.rb, line 197
def set_class_name(class_name)
  @class_name = class_name
end
state_machine(options={}, &block) click to toggle source
# File lib/test_case_generator/dsl_context.rb, line 145
def state_machine(options={}, &block)
  ctx = def_state_machine options, &block

  ctx.items.each do |x|
    @patterns << x
    x.each do |label|
      @labels << label unless @labels.include? label
    end
  end
  # @patterns.concat ctx.items
end