Skip to content

arnaudbrejeon/cspec

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CSpec:  Behaviour-driven development in C
=========================================

Overview
--------

CSpec is a Behaviour-driven Development (http://behaviour-driven.org/) framework for C.
It provides a spec framework for describing the behavior of the functions of your system.
The syntax is inspired from RSpec (http://rspec.info/) to be as legible as possible.
The source code is as portable and as light as possible to make it easy to run the library 
on embedded devices.


Documentation
-------------

CSpec is mostly based on the macros defined in cspec.h . The macros can be differentiated in two 
groups: structural macros that define the structure of the specification and expectation macros 
that describe the tests to be evaluated.

Writing the spec of a function is quite straightforward:
    - Enclose your spec in between the macros DESCRIBE and END_DESCRIBE with function name and caption
    - Enclose each part of the spec between the macros IT and END_IT with the caption
    - For each part of the specification, the tests should be evaluated with one of the expectation macros
  
That's it. Your specification is ready to be run.

Running a spec is done by calling CSpec_Run with the spec name (using macro DESCRIPTION) and selecting
an output type.

There are currently 4 basic outputs provided in CSpec:
    - OutputVerbose	: provides much information as possible: captions, evaluated tests and results
    - OutputUnit    	: provides less information, concentrated more one the number of failed tests
								(similar to unit tests)
    - OutputHeader  	: provides information that does not depend on the tests result and can be used 
								as function header
    - OutputXML 		: provides verbose information in XML format
  
It is easy to define other outputs depending on your needs and platform constraints.
TODO: explain how to make new output.


Spec framework sample
---------------------

There are 2 samples provided with the library. They are located in directories sample and sample_skip.
sample contains the specifications of 2 functions from the C library and is the place to check first because
of its simplicity.
sample_skip specifies a skip list library and therefore is a small proof of concept for CSpec.

Future & ideas
--------------

- Put in place a story framework
- Check how to mock
- Automake autoconf


Compile and link
----------------

- Windows       : directory VC contains VC++ 6.0 dsw and dsp files to compile and link the library and 
                    the sample
- OS X /Linux   : run autogen.sh

Links
-----

http://behaviour-driven.org/
http://en.wikipedia.org/wiki/Behavior_Driven_Development
http://dannorth.net/introducing-bdd
http://dannorth.net/whats-in-a-story
http://www.ibm.com/developerworks/java/library/j-cq09187/index.html


Arnaud Brejeon
arnaud.brejeon@laposte.net

Toshiyuki Kawanishi
toshi.kawanishi@gmail.com

Erkki Moorits
erkki.moorits@mail.ee

About

Behavior driven development in C

Resources

License

Unknown, LGPL-3.0 licenses found

Licenses found

Unknown
COPYING
LGPL-3.0
COPYING.LESSER

Stars

Watchers

Forks

Packages

No packages published