class Rcodetools::XMPTestUnitFilter

Constants

OTHER

Public Class Methods

new(opts = {}) click to toggle source
Calls superclass method Rcodetools::XMPFilter.new
# File lib/rcodetools/xmptestunitfilter.rb, line 7
def initialize(opts = {})
  super
  @output_stdout = false
  mod = @parentheses ? :WithParentheses : :Poetry
  extend self.class.const_get(mod) unless opts[:_no_extend_module]
end

Private Instance Methods

_value_assertions(klass_value_txt_pair, expression) click to toggle source
# File lib/rcodetools/xmptestunitfilter.rb, line 54
def _value_assertions(klass_value_txt_pair, expression)
  klass_txt, value_txt = klass_value_txt_pair
  value = eval(value_txt) || OTHER.new
  # special cases
  value = nil if value_txt.strip == "nil"
  value = false if value_txt.strip == "false"
  value_assertions klass_txt, value_txt, value, expression
rescue Exception
  return object_assertions(klass_txt, value_txt, expression)
end
annotated_line(line, expression, runtime_data, idx) click to toggle source
# File lib/rcodetools/xmptestunitfilter.rb, line 15
def annotated_line(line, expression, runtime_data, idx)
  indent =  /^\s*/.match(line)[0]
  assertions(expression.strip, runtime_data, idx).map{|x| indent + x}.join("\n")
end
assertions(expression, runtime_data, index) click to toggle source
# File lib/rcodetools/xmptestunitfilter.rb, line 25
def assertions(expression, runtime_data, index)
  exceptions = runtime_data.exceptions
  ret = []

  unless (vars = runtime_data.bindings[index]).empty?
    vars.each{|var| ret << equal_assertion(var, expression) }
  end
  if !(wanted = runtime_data.results[index]).empty? || !exceptions[index]
    case (wanted[0][1] rescue 1)
    when "nil"
      ret.concat nil_assertion(expression)
    else
      case wanted.size
      when 1
        ret.concat _value_assertions(wanted[0], expression)
      else
        # discard values from multiple runs
        ret.concat(["#xmpfilter: WARNING!! extra values ignored"] + 
                   _value_assertions(wanted[0], expression))
      end
    end
  else
    ret.concat raise_assertion(expression, exceptions, index)
  end

  ret
end
prepare_line(expr, idx) click to toggle source
# File lib/rcodetools/xmptestunitfilter.rb, line 20
def prepare_line(expr, idx)
  basic_eval = prepare_line_annotation(expr, idx)
  %Qbegin; #{basic_eval}; rescue Exception; $stderr.puts("#{MARKER}[#{idx}] ~> " + $!.class.to_s); end|
end
raise_assertion(expression, exceptions, index) click to toggle source
# File lib/rcodetools/xmptestunitfilter.rb, line 65
def raise_assertion(expression, exceptions, index)
  ["assert_raise(#{exceptions[index][0]}){#{expression}}"]
end