added cppunit unit testing framework, using cmake, stripped out the original build systems.
added starting point for Bullet unit tests, with one example unit test Enable the option BUILD_UNIT_TESTS in cmake to build the test. Note that the test doesn't automatically run.
This commit is contained in:
23
UnitTests/cppunit/include/cppunit/tools/Algorithm.h
Normal file
23
UnitTests/cppunit/include/cppunit/tools/Algorithm.h
Normal file
@@ -0,0 +1,23 @@
|
||||
#ifndef CPPUNIT_TOOLS_ALGORITHM_H_INCLUDED
|
||||
#define CPPUNIT_TOOLS_ALGORITHM_H_INCLUDED
|
||||
|
||||
#include <cppunit/Portability.h>
|
||||
|
||||
CPPUNIT_NS_BEGIN
|
||||
|
||||
template<class SequenceType, class ValueType>
|
||||
void
|
||||
removeFromSequence( SequenceType &sequence,
|
||||
const ValueType &valueToRemove )
|
||||
{
|
||||
for ( unsigned int index =0; index < sequence.size(); ++index )
|
||||
{
|
||||
if ( sequence[ index ] == valueToRemove )
|
||||
sequence.erase( sequence.begin() + index );
|
||||
}
|
||||
}
|
||||
|
||||
CPPUNIT_NS_END
|
||||
|
||||
|
||||
#endif // CPPUNIT_TOOLS_ALGORITHM_H_INCLUDED
|
||||
34
UnitTests/cppunit/include/cppunit/tools/StringTools.h
Normal file
34
UnitTests/cppunit/include/cppunit/tools/StringTools.h
Normal file
@@ -0,0 +1,34 @@
|
||||
#ifndef CPPUNIT_TOOLS_STRINGTOOLS_H
|
||||
#define CPPUNIT_TOOLS_STRINGTOOLS_H
|
||||
|
||||
#include <cppunit/Portability.h>
|
||||
#include <string>
|
||||
#include <cppunit/portability/CppUnitVector.h>
|
||||
|
||||
|
||||
CPPUNIT_NS_BEGIN
|
||||
|
||||
|
||||
/*! \brief Tool functions to manipulate string.
|
||||
*/
|
||||
struct StringTools
|
||||
{
|
||||
|
||||
typedef CppUnitVector<std::string> Strings;
|
||||
|
||||
static std::string CPPUNIT_API toString( int value );
|
||||
|
||||
static std::string CPPUNIT_API toString( double value );
|
||||
|
||||
static Strings CPPUNIT_API split( const std::string &text,
|
||||
char separator );
|
||||
|
||||
static std::string CPPUNIT_API wrap( const std::string &text,
|
||||
int wrapColumn = CPPUNIT_WRAP_COLUMN );
|
||||
|
||||
};
|
||||
|
||||
|
||||
CPPUNIT_NS_END
|
||||
|
||||
#endif // CPPUNIT_TOOLS_STRINGTOOLS_H
|
||||
86
UnitTests/cppunit/include/cppunit/tools/XmlDocument.h
Normal file
86
UnitTests/cppunit/include/cppunit/tools/XmlDocument.h
Normal file
@@ -0,0 +1,86 @@
|
||||
#ifndef CPPUNIT_TOOLS_XMLDOCUMENT_H
|
||||
#define CPPUNIT_TOOLS_XMLDOCUMENT_H
|
||||
|
||||
#include <cppunit/Portability.h>
|
||||
|
||||
#if CPPUNIT_NEED_DLL_DECL
|
||||
#pragma warning( push )
|
||||
#pragma warning( disable: 4251 ) // X needs to have dll-interface to be used by clients of class Z
|
||||
#endif
|
||||
|
||||
#include <string>
|
||||
|
||||
|
||||
CPPUNIT_NS_BEGIN
|
||||
|
||||
|
||||
class XmlElement;
|
||||
|
||||
|
||||
/*! \brief A XML Document.
|
||||
*
|
||||
* A XmlDocument represents a XML file. It holds a pointer on the root XmlElement
|
||||
* of the document. It also holds the encoding and style sheet used.
|
||||
*
|
||||
* By default, the XML document is stand-alone and tagged with enconding "ISO-8859-1".
|
||||
*/
|
||||
class CPPUNIT_API XmlDocument
|
||||
{
|
||||
public:
|
||||
/*! \brief Constructs a XmlDocument object.
|
||||
* \param encoding Encoding used in the XML file (default is Latin-1, ISO-8859-1 ).
|
||||
* \param styleSheet Name of the XSL style sheet file used. If empty then no
|
||||
* style sheet will be specified in the output.
|
||||
*/
|
||||
XmlDocument( const std::string &encoding = "",
|
||||
const std::string &styleSheet = "" );
|
||||
|
||||
/// Destructor.
|
||||
virtual ~XmlDocument();
|
||||
|
||||
std::string encoding() const;
|
||||
void setEncoding( const std::string &encoding = "" );
|
||||
|
||||
std::string styleSheet() const;
|
||||
void setStyleSheet( const std::string &styleSheet = "" );
|
||||
|
||||
bool standalone() const;
|
||||
|
||||
/*! \brief set the output document as standalone or not.
|
||||
*
|
||||
* For the output document, specify wether it's a standalone XML
|
||||
* document, or not.
|
||||
*
|
||||
* \param standalone if true, the output will be specified as standalone.
|
||||
* if false, it will be not.
|
||||
*/
|
||||
void setStandalone( bool standalone );
|
||||
|
||||
void setRootElement( XmlElement *rootElement );
|
||||
XmlElement &rootElement() const;
|
||||
|
||||
std::string toString() const;
|
||||
|
||||
private:
|
||||
/// Prevents the use of the copy constructor.
|
||||
XmlDocument( const XmlDocument © );
|
||||
|
||||
/// Prevents the use of the copy operator.
|
||||
void operator =( const XmlDocument © );
|
||||
|
||||
protected:
|
||||
std::string m_encoding;
|
||||
std::string m_styleSheet;
|
||||
XmlElement *m_rootElement;
|
||||
bool m_standalone;
|
||||
};
|
||||
|
||||
|
||||
#if CPPUNIT_NEED_DLL_DECL
|
||||
#pragma warning( pop )
|
||||
#endif
|
||||
|
||||
|
||||
CPPUNIT_NS_END
|
||||
|
||||
#endif // CPPUNIT_TOOLS_XMLDOCUMENT_H
|
||||
149
UnitTests/cppunit/include/cppunit/tools/XmlElement.h
Normal file
149
UnitTests/cppunit/include/cppunit/tools/XmlElement.h
Normal file
@@ -0,0 +1,149 @@
|
||||
#ifndef CPPUNIT_TOOLS_XMLELEMENT_H
|
||||
#define CPPUNIT_TOOLS_XMLELEMENT_H
|
||||
|
||||
#include <cppunit/Portability.h>
|
||||
|
||||
#if CPPUNIT_NEED_DLL_DECL
|
||||
#pragma warning( push )
|
||||
#pragma warning( disable: 4251 ) // X needs to have dll-interface to be used by clients of class Z
|
||||
#endif
|
||||
|
||||
#include <cppunit/portability/CppUnitDeque.h>
|
||||
#include <string>
|
||||
|
||||
|
||||
CPPUNIT_NS_BEGIN
|
||||
|
||||
|
||||
class XmlElement;
|
||||
|
||||
#if CPPUNIT_NEED_DLL_DECL
|
||||
// template class CPPUNIT_API std::deque<XmlElement *>;
|
||||
#endif
|
||||
|
||||
|
||||
/*! \brief A XML Element.
|
||||
*
|
||||
* A XML element has:
|
||||
* - a name, specified on construction,
|
||||
* - a content, specified on construction (may be empty),
|
||||
* - zero or more attributes, added with addAttribute(),
|
||||
* - zero or more child elements, added with addElement().
|
||||
*/
|
||||
class CPPUNIT_API XmlElement
|
||||
{
|
||||
public:
|
||||
/*! \brief Constructs an element with the specified name and string content.
|
||||
* \param elementName Name of the element. Must not be empty.
|
||||
* \param content Content of the element.
|
||||
*/
|
||||
XmlElement( std::string elementName,
|
||||
std::string content ="" );
|
||||
|
||||
/*! \brief Constructs an element with the specified name and numeric content.
|
||||
* \param elementName Name of the element. Must not be empty.
|
||||
* \param numericContent Content of the element.
|
||||
*/
|
||||
XmlElement( std::string elementName,
|
||||
int numericContent );
|
||||
|
||||
/*! \brief Destructs the element and its child elements.
|
||||
*/
|
||||
virtual ~XmlElement();
|
||||
|
||||
/*! \brief Returns the name of the element.
|
||||
* \return Name of the element.
|
||||
*/
|
||||
std::string name() const;
|
||||
|
||||
/*! \brief Returns the content of the element.
|
||||
* \return Content of the element.
|
||||
*/
|
||||
std::string content() const;
|
||||
|
||||
/*! \brief Sets the name of the element.
|
||||
* \param name New name for the element.
|
||||
*/
|
||||
void setName( const std::string &name );
|
||||
|
||||
/*! \brief Sets the content of the element.
|
||||
* \param content New content for the element.
|
||||
*/
|
||||
void setContent( const std::string &content );
|
||||
|
||||
/*! \overload void setContent( const std::string &content )
|
||||
*/
|
||||
void setContent( int numericContent );
|
||||
|
||||
/*! \brief Adds an attribute with the specified string value.
|
||||
* \param attributeName Name of the attribute. Must not be an empty.
|
||||
* \param value Value of the attribute.
|
||||
*/
|
||||
void addAttribute( std::string attributeName,
|
||||
std::string value );
|
||||
|
||||
/*! \brief Adds an attribute with the specified numeric value.
|
||||
* \param attributeName Name of the attribute. Must not be empty.
|
||||
* \param numericValue Numeric value of the attribute.
|
||||
*/
|
||||
void addAttribute( std::string attributeName,
|
||||
int numericValue );
|
||||
|
||||
/*! \brief Adds a child element to the element.
|
||||
* \param element Child element to add. Must not be \c NULL.
|
||||
*/
|
||||
void addElement( XmlElement *element );
|
||||
|
||||
/*! \brief Returns the number of child elements.
|
||||
* \return Number of child elements (element added with addElement()).
|
||||
*/
|
||||
int elementCount() const;
|
||||
|
||||
/*! \brief Returns the child element at the specified index.
|
||||
* \param index Zero based index of the element to return.
|
||||
* \returns Element at the specified index. Never \c NULL.
|
||||
* \exception std::invalid_argument if \a index < 0 or index >= elementCount().
|
||||
*/
|
||||
XmlElement *elementAt( int index ) const;
|
||||
|
||||
/*! \brief Returns the first child element with the specified name.
|
||||
* \param name Name of the child element to return.
|
||||
* \return First child element found which is named \a name.
|
||||
* \exception std::invalid_argument if there is no child element with the specified
|
||||
* name.
|
||||
*/
|
||||
XmlElement *elementFor( const std::string &name ) const;
|
||||
|
||||
/*! \brief Returns a XML string that represents the element.
|
||||
* \param indent String of spaces representing the amount of 'indent'.
|
||||
* \return XML string that represents the element, its attributes and its
|
||||
* child elements.
|
||||
*/
|
||||
std::string toString( const std::string &indent = "" ) const;
|
||||
|
||||
private:
|
||||
typedef std::pair<std::string,std::string> Attribute;
|
||||
|
||||
std::string attributesAsString() const;
|
||||
std::string escape( std::string value ) const;
|
||||
|
||||
private:
|
||||
std::string m_name;
|
||||
std::string m_content;
|
||||
|
||||
typedef CppUnitDeque<Attribute> Attributes;
|
||||
Attributes m_attributes;
|
||||
|
||||
typedef CppUnitDeque<XmlElement *> Elements;
|
||||
Elements m_elements;
|
||||
};
|
||||
|
||||
|
||||
CPPUNIT_NS_END
|
||||
|
||||
#if CPPUNIT_NEED_DLL_DECL
|
||||
#pragma warning( pop )
|
||||
#endif
|
||||
|
||||
|
||||
#endif // CPPUNIT_TOOLS_XMLELEMENT_H
|
||||
Reference in New Issue
Block a user