Sha256: f6e97bb46b60245ad660f37e92d1310697268b1410c8c6b23d70ebd605447e21

Contents?: true

Size: 1.39 KB

Versions: 15

Compression:

Stored size: 1.39 KB

Contents

require "singleton"
require "solid_assert/assertion_failed_error"

module SolidAssert

  # Actual assertions implementation
  class Assert
    include Singleton

    # Check if a condition is truthy and fail if it is not.
    #
    # Usage:
    #   assert expr  # raise SolidAssert::AssertionFailedError if expr is falsy
    #   assert !list.empty?, "The list should not be empty"  # optional error message
    #
    # @param condition A condition to assert
    # @param message An optional error message
    # @raise {AssertionFailedError} when the condition is not satisfied
    def assert(condition, message = nil)
      fail SolidAssert::AssertionFailedError.new(message) if !condition
    end

    # Let you {#assert} a block of code.
    #
    # It comes handy when your assertion requires more than one line of code.
    # An assertion is performed on the result of the provided block evaluation.
    #
    # Usage:
    #   invariant do
    #     some_number = 1
    #     other_number = 2
    #     some_number == other_number
    #   end
    #
    #   invariant "Both numbers should be equal" do  # optional error message
    #     ...
    #     some_number == other_number
    #   end
    #
    # @param message An optional error message
    # @raise {AssertionFailedError} when the condition is not satisfied
    # @yield A block of code
    def invariant(message = nil)
      assert yield, message
    end
  end
end

Version data entries

15 entries across 15 versions & 2 rubygems

Version Path
mux_ruby-4.0.0 vendor/bundle/ruby/3.2.0/gems/solid_assert-1.1.0/lib/solid_assert/assert.rb
mux_ruby-3.20.0 vendor/bundle/ruby/3.2.0/gems/solid_assert-1.1.0/lib/solid_assert/assert.rb
mux_ruby-3.19.0 vendor/bundle/ruby/3.2.0/gems/solid_assert-1.1.0/lib/solid_assert/assert.rb
mux_ruby-3.18.0 vendor/bundle/ruby/3.2.0/gems/solid_assert-1.1.0/lib/solid_assert/assert.rb
mux_ruby-3.17.0 vendor/bundle/ruby/3.2.0/gems/solid_assert-1.1.0/lib/solid_assert/assert.rb
mux_ruby-3.15.0 vendor/bundle/ruby/3.2.0/gems/solid_assert-1.1.0/lib/solid_assert/assert.rb
mux_ruby-3.14.0 vendor/bundle/ruby/3.2.0/gems/solid_assert-1.1.0/lib/solid_assert/assert.rb
mux_ruby-3.13.0 vendor/bundle/ruby/3.2.0/gems/solid_assert-1.1.0/lib/solid_assert/assert.rb
mux_ruby-3.12.0 vendor/bundle/ruby/3.2.0/gems/solid_assert-1.1.0/lib/solid_assert/assert.rb
mux_ruby-3.11.1 vendor/bundle/ruby/3.2.0/gems/solid_assert-1.1.0/lib/solid_assert/assert.rb
mux_ruby-3.11.0 vendor/bundle/ruby/3.2.0/gems/solid_assert-1.1.0/lib/solid_assert/assert.rb
mux_ruby-3.9.0 vendor/bundle/ruby/3.2.0/gems/solid_assert-1.1.0/lib/solid_assert/assert.rb
mux_ruby-3.8.0 vendor/bundle/ruby/3.2.0/gems/solid_assert-1.1.0/lib/solid_assert/assert.rb
solid_assert-1.1.0 lib/solid_assert/assert.rb
solid_assert-1.0.0 lib/solid_assert/assert.rb