Sha256: 9564a4f9c79c7a4ebd3f879b379a1b53ec34fed5321adaf336108482f0454451

Contents?: true

Size: 921 Bytes

Versions: 1

Compression:

Stored size: 921 Bytes

Contents

module Riot

  class Assertion
    attr_reader :raised, :to_s, :description
    def initialize(description, situation, &block)
      @description = @to_s = description
      actualize(situation, &block)
    end

    def actual
      @default_failure = @failure = nil if @default_failure
      @actual
    end

    def fail(message)
      @failure = Failure.new(message, self) unless errored?
    end

    def failed?; !@failure.nil?; end
    def errored?; !@raised.nil?; end
    def passed?; !(failed? || errored?); end
    def result; @failure || error; end
  private
    def actualize(situation, &block)
      @actual = situation.instance_eval(&block)
      @default_failure = fail("expected true, not #{@actual.inspect}") unless @actual == true
    rescue Exception => e
      @raised = e
    end

    def error
      Error.new("errored with #{@raised}", self, @raised) if errored?
    end
  end # Assertion
end # Riot

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
riot-0.9.1 lib/riot/assertion.rb