/***************************************************************************
* GTestCase.hpp - Test case class *
* ----------------------------------------------------------------------- *
* copyright (C) 2012-2013 by Jean-Baptiste Cayrou *
* ----------------------------------------------------------------------- *
* *
* 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 3 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, see . *
* *
***************************************************************************/
/**
* @file GTestCase.hpp
* @brief Test case class interface definition
* @author Jean-Baptiste Cayrou
*/
#ifndef GTESTCASE_H
#define GTESTCASE_H
/* __ Includes ___________________________________________________________ */
#include
#include "GBase.hpp"
/***********************************************************************//**
* @class GTestCase
*
* @brief Test class
*
* This class implements a single test case result. It contains information
* about the test name, an optional message that is created in case of an
* error or a failure, a type information (containing usually the name of
* the class that is failing), and some information about the test duration.
* Furthermore, the test case knows whether the test succeeded or failed,
* and whether the test was an error or a failure test.
***************************************************************************/
class GTestCase : public GBase {
public:
// Public enumerators
enum ErrorKind {
FAIL_TEST,
ERROR_TEST
};
// Constructors and destructors
GTestCase(void);
GTestCase(const ErrorKind& kind, const std::string& name = "");
GTestCase(const GTestCase& test);
virtual ~GTestCase(void);
// Operators
GTestCase& operator=(const GTestCase& test);
// Methods
void clear(void);
GTestCase* clone(void) const;
const std::string& name(void) const;
void name(const std::string& name);
const std::string& message(void) const;
void message( const std::string& message);
const std::string& type(void) const;
void type( const std::string& type);
const ErrorKind& kind(void) const;
void kind(const ErrorKind& kind);
const bool& has_passed(void) const;
void has_passed(const bool& has_passed);
const double& duration(void) const;
void duration(const double& duration);
std::string print(const GChatter& chatter = NORMAL) const;
protected:
// Protected methods
void init_members(void);
void copy_members(const GTestCase& test);
void free_members(void);
// Private members
std::string m_name; //!< Test name
std::string m_message; //!< Test message
std::string m_type; //!< Test type
bool m_has_passed; //!< Boolean to check test success
ErrorKind m_kind; //!< Kind of test case (failure or error test)
double m_duration; //!< Test duration
};
/***********************************************************************//**
* @brief Return test case name
*
* @return Test case name.
***************************************************************************/
inline
const std::string& GTestCase::name(void) const
{
return m_name;
}
/***********************************************************************//**
* @brief Set test case name
*
* @param[in] name Test case name.
***************************************************************************/
inline
void GTestCase::name(const std::string& name)
{
m_name = name;
return;
}
/***********************************************************************//**
* @brief Return test case message
*
* @return Test case message.
***************************************************************************/
inline
const std::string& GTestCase::message(void) const
{
return m_message;
}
/***********************************************************************//**
* @brief Set test case message
*
* @param[in] message Test case message.
***************************************************************************/
inline
void GTestCase::message(const std::string& message)
{
m_message = message;
return;
}
/***********************************************************************//**
* @brief Return test case type
*
* @return Type of test case.
***************************************************************************/
inline
const std::string& GTestCase::type(void) const
{
return m_type;
}
/***********************************************************************//**
* @brief Set type of test case
*
* @param[in] type Type of test case.
***************************************************************************/
inline
void GTestCase::type(const std::string& type)
{
m_type = type;
return;
}
/***********************************************************************//**
* @brief Return kind of test case
*
* @return Test case kind (FAIL_TEST or ERROR_TEST).
*
* Returns whether this test case is for failure testing (FAIL_TEST) or
* error testing (ERROR_TEST).
***************************************************************************/
inline
const GTestCase::ErrorKind& GTestCase::kind(void) const
{
return m_kind;
}
/***********************************************************************//**
* @brief Set kind of test case
*
* @param[in] kind Kind of test case (FAIL_TEST or ERROR_TEST)
*
* Specifies whether this test case is for failure testing (FAIL_TEST) or
* error testing (ERROR_TEST).
***************************************************************************/
inline
void GTestCase::kind(const ErrorKind& kind)
{
m_kind = kind;
return;
}
/***********************************************************************//**
* @brief Return whether the test passed
*
* @return True if test has passed, false otherwise.
*
* This method returns true if the test has passed, false otherwise.
***************************************************************************/
inline
const bool& GTestCase::has_passed(void) const
{
return m_has_passed;
}
/***********************************************************************//**
* @brief Set if test passed
*
* @param[in] has_passed Test passed (true or false)
***************************************************************************/
inline
void GTestCase::has_passed(const bool& has_passed)
{
m_has_passed = has_passed;
return;
}
/***********************************************************************//**
* @brief Return test case duration
*
* @return Duration of test case.
***************************************************************************/
inline
const double& GTestCase::duration(void) const
{
return m_duration;
}
/***********************************************************************//**
* @brief Set test duration
*
* @param[in] duration Test duration.
***************************************************************************/
inline
void GTestCase::duration(const double& duration)
{
m_duration = duration;
return;
}
#endif /* GTESTCASE_H */