= Ruby Q.E.D.
homepage: http://proutils.rubyforge.org/qed
mailing list: http://groups.google.com/group/tigerops-community
development: http://github.com/proutils/qed/tree/master
== Introduction
Q.E.D. stands for Quality Enhanced Demos. QED is an easy to use
quality assurance and documentation system for Ruby Developers.
QED sits between lower-level testing tools like Test Unit and
grand requirements specifications tools like Cucumber. It is
designed to address API-Driven Devleopment, which
is especailly useful when designing reusble libraries.
== Features
* Demos can be RDoc, Markdown or any other conforming text format.
* Uses excellent Assertive Expressive library for assertion system.
* Helpers are easily loaded relative to running document.
* Table macro allows large sets of data to be run by the same code.
* Documentation tool provides nice output with jQuery-based TOC.
== Synopsis
=== Assertion Syntax
QED uses AE (Assertive Expressions) libary to provide an elegant means of
express behaviors. To give a quck overview, you can use code such as:
4.assert == 5
In this example, because 4 != 5, this expression will raise an Assertion
exception. QED's Runner class is thus just a means of running and capturing
code block containing these assertions.
You can learn more about AE at http://proutils.rubyforge/ae.
=== Document Structure
QED documents are simply text files --thus a practice of literal programming.
For example:
= Example
Shows that the number 5 does not equal 4.
5.assert! == 4
But in fact equals 5.
5.assert == 5
As you can see, we used RDoc for this document. Almost any text format
can be used. The only neccesary distinction is that desciption text be
align to the left margin and all code be indented. However QED recognizes
RDoc and Markdown style headers, so any format that supports this style
(which covers many markup formats in use today) will work a bit better.
While strictly speaking QED does not need to recognize headers, it does
improve console output.
Give this design some thought. It should become clear that this approach is
especially fruitful in that it allows *documentation* and *specification*
to seemlessly merge into a unified *demonstration*.
=== Running Demonstrations
If we were to run the above document through QED in verbatim mode the output
would be identical (assuming we did not make a typo and the assertions passed).
If there were errors or failures, we would see information detaling each.
To run a document through QED, simply use the +qed+ command.
$ qed -v demo/01_example.rdoc
The -v option specifies verbatim mode, which outputs the entire
document.
Notice we placed the QED document in the demo directory, this is the
concial place that has been designated for them, though you can put them
elsewhre in your project if you prefer. Also notice the 01_ in front
of the name. While this is not necessary, it helps order the documents
properly with generating QED documentation (QEDocs).
To generate documentation from QED documents, use the +qedoc+ command.
$ qed --output doc/qedoc --title "Example" demo/*.rdoc
When documenting QED recognizes the format by the file extension and
treats it accordingly. An extension of .qed is treated the same
as .rdoc.
Use the --help options on each command to get more inforamtion on
the use of these commands.
== Requirements
QED depends on the following external libraries:
* AE - Assertions Framework
* ANSI - ANSI Color Codes
* Facets - Core Extensions
These will be automatically installed when installing QED via RubyGems,
if they are not already installed.
== Copyright and License
Q.E.D.
Copyright (c) 2007,2009 Thomas Sawyer
Unless otherwise permitted by the author, QED is distributed under the
terms of the GPL version 3 or greater. See COPYING file for details.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA