Giter Site home page Giter Site logo

cspec's Introduction

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
[email protected]

Toshiyuki Kawanishi
[email protected]

Erkki Moorits
[email protected]

cspec's People

Contributors

asura avatar toshi-kawanishi avatar arnaudbrejeon avatar arnaud-secondlayer avatar tomleavy avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.