Sha256: 2d5001fe8239d45424d1617b107acf50095a631e43f7f088ad9d9847e388edc3

Contents?: true

Size: 892 Bytes

Versions: 4

Compression:

Stored size: 892 Bytes

Contents

module UV
  module Assertions
    def assert_block(proc, msg = "no block given")
      raise ArgumentError, msg, caller if proc.nil?
    end

    def assert_arity(expected, proc, msg = nil)
      actual = proc.arity
      if expected != actual
        arg  = expected == 1 ? "argument" : "arguments"
        msg  ||= "block must accept #{expected} #{arg}, but accepts #{actual}"
        raise ArgumentError, msg, caller
      end
    end

    def assert_type(type, actual, msg = nil)
      if not actual.kind_of?(type)
        msg ||= "value #{actual.inspect} is not a valid #{type}"
        raise ArgumentError, msg, caller
      end
    end

    def assert_boolean(actual, msg = nil)
      if not (actual.kind_of?(TrueClass) || actual.kind_of?(FalseClass))
        msg ||= "value #{actual.inspect} is not a valid Boolean"
        raise ArgumentError, msg, caller
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
uvrb-0.1.4 lib/uv/assertions.rb
uvrb-0.1.3 lib/uv/assertions.rb
uvrb-0.1.2 lib/uv/assertions.rb
uvrb-0.1.1 lib/uv/assertions.rb