testrunner.h

Back to Unit testing

pastel/sys/testing/

// Description: TestRunner class
// Detail: Stores test functions to be run as a batch or from a console.
// Documentation: unit_testing.txt

#ifndef PASTELSYS_TESTRUNNER_H
#define PASTELSYS_TESTRUNNER_H

#include <map>
#include <string>

namespace Pastel
{

    //! Stores test functions to be run as a batch or from a console.

    class TestRunner
    {
    public:
        typedef void (*Function)();

    private:
        using Container = std::map<std::string, Function>;
        using Iterator = Container::iterator;

    public:
        using ConstIterator = Container::const_iterator;

        // Using default copy constructor.
        // Using default assignment.
        // Using default destructor.

        TestRunner();
        explicit TestRunner(const std::string& name);

        //! Adds a function to the queue.
        void add(const std::string& key,
            Function function);

        //! Runs all function calls in the queue.
        void run() const;

        //! Runs a specified function in the queue.
        void run(const ConstIterator& iter) const;

        //! Runs one specified function in the queue.
        bool run(const std::string& key) const;

        //! Runs all functions that have 'key' as prefix.
        bool runPrefix(const std::string& key) const;

        //! Removes all functions calls from the queue.
        void clear();

        void help() const;
        void console() const;
        void printTests() const;

    private:
        Container functionSet_;
        std::string name_;
    };

}

#include "pastel/sys/testing/testrunner.hpp"

#endif