Sha256: fe6ff43d7d1eef2291093a9d5a41baa4fa9cff740cddc659d53ab77d729438f9

Contents?: true

Size: 1.49 KB

Versions: 5

Compression:

Stored size: 1.49 KB

Contents

= Iba

by Matijs van Zuijlen

== Description

Introspective Block Assertions

== Features/Problems

* Write assertions as a (one-expression) block
* Assertion message deconstructs the block's expression.
* Not done yet.

== Synopsis

  # In your test helper:
  require 'iba'
  class Test::Unit::TestCase
    include Iba::BlockAssertion
  end

  # In your test:
  foo = 24
  assert { foo == 23 } # => "(foo == 23) is false
                       #     foo is 24."

== Details

Iba provides an assert method that takes a block. If the block returns
false, it will try to construct an insightful error message based on the
contents of the block.

Iba's functionality is inspired by Wrong[1], but doesn't use an external
Ruby parser. This means it will work in contexts where Wrong does not
(generated code, on the command line). It also means there are more limits
to the contents of the block.

Current limits:

* Only single-expression blocks are supported.
* The expression must start with a method-like identifier or an instance
  variable (like 'foo'  or '@foo', but not 'Foo' or '23'). In practice,
  this produces quite natural results.
* Local and instance variables whose names start with an underscore should
  not be used inside the block.

Iba's implementation is inspired by Arlo[2], a generic combinator library
for Python.

== Install

  gem install iba

== Links

[1] https://github.com/sconover/wrong
[2] http://withoutane.com/rants/2008/12/arlo-generic-combinators-for-python

== Licence

See the LICENSE file.

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
iba-0.0.6 README.rdoc
iba-0.0.5 README.rdoc
iba-0.0.4 README.rdoc
iba-0.0.3 README.rdoc
iba-0.0.2 README.rdoc