Library meant to simplify writing of tests. Very light-weight in the approach. Test syntax will be familiar to users of CUnit, however this is far more basic.

Dependents:   CircularBufferTest

Tests are expected to take the form of macro-based statements, such as:

// An empty buffer should yield getSize() of zero
TST_EQ( buffer.getSize(), 0, "Empty buffer: getSize()" );

You still have to do the hard work of coming up with the tests and writing code to implement them, but this library is intended to give you a "jump start" towards getting something with consistent output and keeping track of the number of passes/fails - just import the library, include the header and you're away.

See CircularBufferTest main.cpp for an example of how this library can be used

TestSupportLite.hpp

Committer:
johnb
Date:
2014-01-19
Revision:
0:62a10b8392a4

File content as of revision 0:62a10b8392a4:

/**
   @file
   @brief Support routines for writing very simple test harnesses

   @author John Bailey 

   @copyright Copyright 2014 John Bailey

   @section LICENSE
   
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

*/

#if !defined TESTSUPPORTLITE_HPP
#define      TESTSUPPORTLITE_HPP

#include <cstring> // for size_t

/** Boiler plate test support for the TST_EQ, TST_TRUE, etc macros 
    \param _p Indicate whether or not the test passed
    \param _t Description of the test
*/
#define TST_BOILER( _p, _t) do { TEST_OUT( _p, _t ); if( !_p ) { FAIL_OUT(); } } while ( 0 )

/** Testing macro - expects _x and _q to be equal (using the equality operator)
    \param _x Value to be compared
    \param _y Value to be compared
    \param _t Description of test
*/
#define TST_EQ( _x, _y, _t ) do { bool passed = ((_x)==(_y)); TST_BOILER( passed, _t ); } while( 0 )

/** Testing macro - expects _x to be true
    \param _x Value to be evaluated
    \param _t Description of test
*/
#define TST_TRUE( _x, _t ) do { bool passed = (_x); TST_BOILER( passed, _t ); } while( 0 )

/** Testing macro - expects _x to be false
    \param _x Value to be evaluated
    \param _t Description of test
*/
#define TST_FALSE( _x, _t ) TST_TRUE( !( _x ), _t )

/** Tasks to be carried out when the tests are over */
#define TST_DONE() do { DONE_OUT(); } while( 0 )

/** Currently a very simple class just to encapsulate a few test statistics

    Implemented as a class rather than a set of global variables to simplify
    multiple instatitation
*/
class TestResults
{
    protected:
        /** Number of tests that have passed */
        std::size_t m_passed;
        /** Total number of tests run so far */
        std::size_t m_total;
    public:
        /* Default initialiser */
        TestResults( void );
        
        /* Register that a test has been run
           \parap p_passed Whether or not the test passed successfully */
        void registerResult( const bool p_passed );
        
        /* Query the total number of tests run so far */
        std::size_t getCount( void ) const;
        
        /* Query the number of tests passed so far */
        std::size_t getPassed( void ) const;
};

#endif // !defined TESTSUPPORTLITE_HPP