- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files
- Directories
- Examples

- File List
- File Members

Classes | Namespaces | Defines

# UnitTest.h File Reference

Go to the source code of this file.

## Classes
class | UnitTest
| Base class for unit test objects. More...
## Namespaces
namespace | mudbox
| Class: ConvolutionKernel.
## Defines
#define | MB_START_TEST_OBJECT(testObjName)
| These macros define a test object that contains unit tests.
#define | MB_END_TEST_OBJECT(testObjName)
#define | MB_START_DEF_TESTS
#define | MB_END_DEF_TESTS };
#define | MB_DECL_TEST(name)
#define | MB_DEF_TEST(name)
#define | MB_CHECK(condition)

## Define Documentation

#define MB_START_TEST_OBJECT | ( |  | testObjName | ) |

Search for all occurrences
Value:

    class testObjName : public UnitTest \
        {   \
            static testObjName* s_pThis; \
            DECLARE_CLASS;  \
            astring m_sCommand; \
            testObjName() : m_sCommand(this, "cmd") { \
                m_sCommand.Connect(Kernel()->NextCommand); \
                Go(true,""); \
                s_pThis = this; \
            }; \
            virtual ~testObjName() { \
                if( s_pThis == this )   \
                    s_pThis = 0; \
            }; \
            void OnNodeEvent( const Attribute &cAttribute, NodeEventType eType )  { \
                if( cAttribute == m_sCommand && eType == etValueChanged ) { \
                    QString sOp = m_sCommand.Value().section( ' ', 0, 0 ); \
                    if( sOp == "PluginTest" ) \
                        Go(false, m_sCommand.Value().section( ' ', 1, 1 )); \
                }; \
            }; \
            static void RunAll() { \
                if( s_pThis ) \
                    s_pThis->Go( false, "" ); \
            }; \
            static QString ClassName() { \
                return #testObjName; \
            };

These macros define a test object that contains unit tests.

To add unit tests to your plugin, put the following boilerplate code in a new .cpp file that gets compiled with your plugin.

#include <UnitTest.h> MB_START_TEST_OBJECT("Tester")

MB_DECL_TEST( TestName ) MB_DECL_TEST( TestName2 )

MB_START_DEF_TESTS MB_DEF_TEST( TestName ) { tests here } MB_DEF_TEST( TestName2 ) { tests here assert using MB_CHECK( some boolean expression ) to make sure your code is doing what you think its doing! } MB_END_DEF_TESTS

MB_END_TEST_OBJECT("Tester")

Definition at line 61 of file UnitTest.h.

#define MB_END_TEST_OBJECT | ( |  | testObjName | ) |

Search for all occurrences
Value:

    }; IMPLEMENT_CLASS( testObjName, UnitTest, #testObjName ); \
        testObjName* testObjName::s_pThis = 0;

Definition at line 91 of file UnitTest.h.

#define MB_START_DEF_TESTS

Search for all occurrences
Value:

    virtual void Go(bool bInit, const QString& sTest) { \
            if( bInit ) \
            {  \
                Kernel()->Interface()->AddCallbackMenuItem( NTR("UnitTest"), ClassName(), NTR("Run all tests"), RunAll ); \
            };

Definition at line 95 of file UnitTest.h.

#define MB_END_DEF_TESTS };

Search for all occurrences

Definition at line 102 of file UnitTest.h.

#define MB_DECL_TEST | ( |  | name | ) |

Search for all occurrences
Value:

    static void name() \
        {   \
            Kernel()->RecordCommand( NTRQ("PluginTest %1%2").arg(ClassName()).arg(#name) ); \
            if( s_pThis ) \
                s_pThis->Go(false, ClassName() + QString(#name));   \
            QString sMsg = NTRQ("Completed Test: %1").arg(ClassName() + QString(#name)); \
            Kernel()->Log( sMsg );  \
            Kernel()->Interface()->SetStatus( mudbox::Interface::stNormal, sMsg ); \
        };

Definition at line 107 of file UnitTest.h.

#define MB_DEF_TEST | ( |  | name | ) |

Search for all occurrences
Value:

    if( bInit ) \
                Kernel()->Interface()->AddCallbackMenuItem( NTR("UnitTest"), ClassName(), #name, name); \
            else if ( sTest == ClassName() + QString(#name) || sTest.isEmpty() ) \

Definition at line 121 of file UnitTest.h.

#define MB_CHECK | ( |  | condition | ) |

Search for all occurrences
Value:

    if( !(condition) ) {    \
            MB_ASSERT(false); \
            Kernel()->Log( NTRQ("UnitTest assert failed: %1").arg( #condition ) );  \
            MB_ERROR( NTRQ("UnitTest assert failed: %1").arg( #condition ) );   \
        };

Definition at line 126 of file UnitTest.h.