Sha256: ba5714918376584b4feb43a65060f8b28bfc371dc8ee11cf48127f8b077e77ff

Contents?: true

Size: 1.86 KB

Versions: 1

Compression:

Stored size: 1.86 KB

Contents

require 'assert/macro'
require 'assert/suite'
require 'assert/test'

module Assert; end
class Assert::Context

  module TestDSL

    def test(desc_or_macro, called_from = nil, first_caller = nil, &block)
      if desc_or_macro.kind_of?(Assert::Macro)
        instance_eval(&desc_or_macro)
      elsif block_given?
        # create a test from the given code block
        self.suite.tests << Assert::Test.for_block(
          desc_or_macro.kind_of?(Assert::Macro) ? desc_or_macro.name : desc_or_macro,
          Assert::Suite::ContextInfo.new(self, called_from, first_caller || caller.first),
          self.suite.config,
          &block
        )
      else
        test_eventually(desc_or_macro, called_from, first_caller || caller.first, &block)
      end
    end

    def test_eventually(desc_or_macro, called_from = nil, first_caller = nil, &block)
      # create a test from a proc that just skips
      ci = Assert::Suite::ContextInfo.new(self, called_from, first_caller || caller.first)
      self.suite.tests << Assert::Test.for_block(
        desc_or_macro.kind_of?(Assert::Macro) ? desc_or_macro.name : desc_or_macro,
        ci,
        self.suite.config,
        &proc { skip('TODO', ci.called_from) }
      )
    end
    alias_method :test_skip, :test_eventually

    def should(desc_or_macro, called_from = nil, first_caller = nil, &block)
      if !desc_or_macro.kind_of?(Assert::Macro)
        desc_or_macro = "should #{desc_or_macro}"
      end
      test(desc_or_macro, called_from, first_caller || caller.first, &block)
    end

    def should_eventually(desc_or_macro, called_from = nil, first_caller = nil, &block)
      if !desc_or_macro.kind_of?(Assert::Macro)
        desc_or_macro = "should #{desc_or_macro}"
      end
      test_eventually(desc_or_macro, called_from, first_caller || caller.first, &block)
    end
    alias_method :should_skip, :should_eventually

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
assert-2.15.0 lib/assert/context/test_dsl.rb