Assertive Expressive

DESCRIPTION

Assertive Expressive (AE) is an assertions framework intended for reuse by any TDD, BDD or similar system.

FEATURES/ISSUES

  • Clear, simple and concise syntax.

  • Uses higher-order functions and fluid notation.

  • Reusable core extensions ease assertion construction.

  • Core extensions are standardized around Ruby Facets.

  • But Facets is not a dependency; the extensions are built-in.

  • Easily extensible allowing for alternate notations.

  • Eats it’s own dog food.

RELEASE NOTES

Please see HISTORY file.

SYNOPSIS

AE defines the method assert. It’s is compatible with the method as defined by Test::Unit and minitest, which verifies truth of a single argument (and can accept an optional failure message).

assert(true)

In addition AE’s assert method has been extended to accept a block, the result of which is likewise verified.

assert{true}

But the real power the AE’s assert method lies in it’s use without argument or block. In that case it returns an instance of Assertor. An Assertor is an Assertions Functor, or Higher-Order Function. It is a function that operates on another function. With it, we can make assertions like so:

x.assert == y

a.assert.include? e

StandardError.assert.raised? do
  ...
end

And so forth. Any method can be used in conjunction with assert to make an assertion. Eg.

class String
  def daffy?
    /daffy/i =~ self
  end
end

"Daffy Duck".assert.daffy?

Please have a look at the QEDocs and RDocs to learn more.

HOW TO INSTALL

Gem Installs

AE releases it’s gems via Gemcutter. If you don’t have Gemcutter installed do:

$ gem install gemcutter
$ gem tumble

Then you can install AE with:

$ gem install ae

Site Installs

Local installation requires Setup.rb.

$ gem install setup

Then download the tarball package from GitHub (under pack/ directory) and do:

$ tar -xvzf ae-1.0.0.tgz
$ cd ae-1.0.0.tgz
$ sudo setup.rb all

Windows users use ‘ruby setup.rb all’.

COPYRIGHTS & LICENSE

Copyright © 2008,2010 Thomas Sawyer

Unless otherwise provided for by the originating author, this program is distributed under the terms of the Apache 2 license.

See LICENSE file for details.