class Tokyo::Unit

Public Class Methods

context(label, &block) click to toggle source

define a context inside current spec/context.

@param label @param &block

# File lib/tokyo/unit.rb, line 75
def context label, &block
  return unless block
  Tokyo.define_and_register_a_context(label, block, self)
end
hooks() click to toggle source
# File lib/tokyo/unit.rb, line 162
def hooks
  @__tokyo_hooks__ ||= {}
end
inherited(base) click to toggle source
# File lib/tokyo/unit.rb, line 62
def inherited base
  base.instance_variable_set(:@__tokyo_hooks__, Marshal.load(Marshal.dump(hooks)))
end
it(label, &block)
Alias for: test
run(test) click to toggle source
# File lib/tokyo/unit.rb, line 179
def run test
  tests[test] || raise(StandardError, 'Undefined test %s at "%s"' % [test.inspect, __identity__])
  catch :__tokyo_status__ do
    allocate.__run__(tests[test], hooks[:before], hooks[:around], hooks[:after])
  end
end
should(label, &block)
Alias for: test
skip(reason = nil) click to toggle source

skipping a whole spec/context

@example

spec Array do
  skip

  # code here wont be executed
end
# File lib/tokyo/unit.rb, line 175
def skip reason = nil
  throw(:__tokyo_skip__, Tokyo::Skip.new(reason, caller[0]))
end
spec() click to toggle source
# File lib/tokyo/unit.rb, line 66
def spec
  raise(NotImplementedError, 'Nested specs not supported. Please use a context instead')
end
test(label, &block) click to toggle source

define a test

@param label @param &block

# File lib/tokyo/unit.rb, line 85
def test label, &block
  return unless block
  tests[label] = Tokyo.identity_string(:test, label, block)
  define_method(tests[label], &block)
end
Also aliased as: it, should
tests() click to toggle source
# File lib/tokyo/unit.rb, line 93
def tests
  @__tokyo_tests__ ||= {}
end

Public Instance Methods

__run__(test, before, around, after) click to toggle source
# File lib/tokyo/unit.rb, line 35
def __run__ test, before, around, after
  __send__(before) if before
  if around
    __send__(around, proc {__send__(test)})
  else
    __send__(test)
  end
  __send__(after) if after
  __assertions__.each(&:__validate_expectations__)
  __objects__.each_key {|o| Tokyo::Expectation.restore_object_status(o[:returned])}
  :__tokyo_passed__
rescue Exception => e
  throw(:__tokyo_status__, e)
end
skip(reason = nil) click to toggle source

stop executing current test and mark it as skipped

@example

test :something do
  skip "recheck this after fixing X"
  assert(x) == y # this wont run
end
# File lib/tokyo/unit.rb, line 31
def skip reason = nil
  throw(:__tokyo_status__, Tokyo::Skip.new(reason, caller[0]))
end

Private Instance Methods

__assertions__() click to toggle source
# File lib/tokyo/unit.rb, line 55
def __assertions__
  @__assertions__ ||= []
end
__objects__() click to toggle source
# File lib/tokyo/unit.rb, line 51
def __objects__
  @__objects__ ||= {}
end