151 lines
5.7 KiB
C++
151 lines
5.7 KiB
C++
//-----------------------------------------------------------------------------
|
|
// Project : SDK Core
|
|
// Version : 1.0
|
|
//
|
|
// Category : SDK Core Interfaces
|
|
// Filename : pluginterfaces/test/itest.h
|
|
// Created by : Steinberg, 01/2005
|
|
// Description : Test Interface - Availability Depends on HOST
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
// This file is part of a Steinberg SDK. It is subject to the license terms
|
|
// in the LICENSE file found in the top-level directory of this distribution
|
|
// and at www.steinberg.net/sdklicenses.
|
|
// No part of the SDK, including this file, may be copied, modified, propagated,
|
|
// or distributed except according to the terms contained in the LICENSE file.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
#pragma once
|
|
|
|
#include "pluginterfaces/base/funknown.h"
|
|
|
|
#ifndef kTestClass
|
|
#define kTestClass "Test Class" ///< A class for automated tests
|
|
#endif
|
|
|
|
namespace Steinberg {
|
|
|
|
class ITestResult;
|
|
|
|
//------------------------------------------------------------------------
|
|
// ITest interface declaration
|
|
//------------------------------------------------------------------------
|
|
class ITest : public FUnknown
|
|
{
|
|
public:
|
|
//--- ---------------------------------------------------------------------
|
|
/** called immediately before the test is actually run.
|
|
Usually this will be used to setup the test environment.
|
|
\return true upon success */
|
|
virtual bool PLUGIN_API setup () = 0;
|
|
|
|
/** execute the test.
|
|
\param testResult : points to a test result where the test can
|
|
(optionally) add an error message.
|
|
\return true upon success
|
|
\sa ITestResult */
|
|
virtual bool PLUGIN_API run (ITestResult* testResult) = 0;
|
|
|
|
/** called after the test has run. This method shall be used to
|
|
deconstruct a test environment that has been setup with ITest::setup ().
|
|
\return true upon success */
|
|
virtual bool PLUGIN_API teardown () = 0;
|
|
|
|
/** This function is used to provide information about the performed
|
|
testcase. What is done, what is validated and what has to be prepared
|
|
before executing the test (in case of half-automated tests).
|
|
\return null terminated string upon success, zero otherwise */
|
|
virtual const tchar* PLUGIN_API getDescription () {return 0;}
|
|
//--- ---------------------------------------------------------------------
|
|
static const FUID iid;
|
|
};
|
|
|
|
#ifdef UNICODE
|
|
DECLARE_CLASS_IID (ITest, 0xFE64FC19, 0x95684F53, 0xAAA78DC8, 0x7228338E)
|
|
#else
|
|
DECLARE_CLASS_IID (ITest, 0x9E2E608B, 0x64C64CF8, 0x839059BD, 0xA194032D)
|
|
#endif
|
|
|
|
//------------------------------------------------------------------------
|
|
// ITestResult interface declaration
|
|
//------------------------------------------------------------------------
|
|
/** Test Result message logger
|
|
[host imp]
|
|
when a test is called, a pointer to an ITestResult is passed in, so the
|
|
test class can output error messages
|
|
*/
|
|
//------------------------------------------------------------------------
|
|
class ITestResult : public FUnknown
|
|
{
|
|
public:
|
|
//--- ---------------------------------------------------------------------
|
|
/** add an error message */
|
|
virtual void PLUGIN_API addErrorMessage (const tchar* msg) = 0;
|
|
virtual void PLUGIN_API addMessage (const tchar* msg) = 0;
|
|
//--- ---------------------------------------------------------------------
|
|
static const FUID iid;
|
|
};
|
|
|
|
#ifdef UNICODE
|
|
DECLARE_CLASS_IID (ITestResult, 0x69796279, 0xF651418B, 0xB24D79B7, 0xD7C527F4)
|
|
#else
|
|
DECLARE_CLASS_IID (ITestResult, 0xCE13B461, 0x5334451D, 0xB3943E99, 0x7446885B)
|
|
#endif
|
|
|
|
//------------------------------------------------------------------------
|
|
// ITestSuite interface declaration
|
|
//------------------------------------------------------------------------
|
|
/** A collection of tests supporting a hierarchical ordering
|
|
[host imp]
|
|
[create via hostclasses]*/
|
|
//------------------------------------------------------------------------
|
|
class ITestSuite : public FUnknown
|
|
{
|
|
public:
|
|
//--- ---------------------------------------------------------------------
|
|
/** append a new test */
|
|
virtual tresult PLUGIN_API addTest (FIDString name, ITest* test) = 0;
|
|
|
|
/** append an entire test suite as a child suite */
|
|
virtual tresult PLUGIN_API addTestSuite (FIDString name, ITestSuite* testSuite) = 0;
|
|
|
|
virtual tresult PLUGIN_API setEnvironment (ITest* environment) = 0;
|
|
|
|
//--- ---------------------------------------------------------------------
|
|
static const FUID iid;
|
|
};
|
|
|
|
#ifdef UNICODE
|
|
DECLARE_CLASS_IID (ITestSuite, 0x5CA7106F, 0x98784AA5, 0xB4D30D71, 0x2F5F1498)
|
|
#else
|
|
DECLARE_CLASS_IID (ITestSuite, 0x81724C94, 0xE9F64F65, 0xACB104E9, 0xCC702253)
|
|
#endif
|
|
|
|
//------------------------------------------------------------------------
|
|
// ITestFactory interface declaration
|
|
//------------------------------------------------------------------------
|
|
/** Class factory that any testable module defines for creating tests
|
|
that will be executed from the host
|
|
[plug imp] \n
|
|
*/
|
|
//------------------------------------------------------------------------
|
|
class ITestFactory : public FUnknown
|
|
{
|
|
public:
|
|
//--- ---------------------------------------------------------------------
|
|
/** create the tests that this module provides.
|
|
\param parentSuite : the test suite that the newly created tests
|
|
shall register with. */
|
|
virtual tresult PLUGIN_API createTests (FUnknown* context, ITestSuite* parentSuite) = 0;
|
|
//--- ---------------------------------------------------------------------
|
|
static const FUID iid;
|
|
};
|
|
|
|
#ifdef UNICODE
|
|
DECLARE_CLASS_IID (ITestFactory, 0xAB483D3A, 0x15264650, 0xBF86EEF6, 0x9A327A93)
|
|
#else
|
|
DECLARE_CLASS_IID (ITestFactory, 0xE77EA913, 0x58AA4838, 0x986A4620, 0x53579080)
|
|
#endif
|
|
|
|
//------------------------------------------------------------------------
|
|
} // namespace Steinberg
|