class Tryouts::TestBatch

def clean

def clean
  return if empty?
  last_line = last.exps.last+1
  if last_line < lines.size
    Tryouts.eval lines[last_line..-1].join, path, last_line
  end
end

def failed?

def failed?
   !@failed.nil? && @failed > 0
end

def initialize(p,l)

def initialize(p,l)
  @path, @lines = p, l
  @container = Container.new.metaclass
  @run = false
end

def run(before_test, &after_test)

def run(before_test, &after_test)
  return if empty?
  setup
  ret = self.select { |tc|
    before_test.call(tc) unless before_test.nil?
    ret = !tc.run
    after_test.call(tc)
    ret # select failed tests
  }
  @failed = ret.size
  @run = true
  clean
  !failed?
end

def run?

def run?
  @run
end

def setup

def setup
  return if empty?
  start = first.desc.nil? ? first.test.first : first.desc.first-1
  Tryouts.eval lines[0..start-1].join, path, 0 if start > 0
end