Initial release
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Flags : clang-format SMTGSequencer
|
||||
// Project : VST SDK
|
||||
//
|
||||
// Category : Validator
|
||||
// Filename : public.sdk/source/vst/testsuite/bus/busactivation.cpp
|
||||
// Created by : Steinberg, 04/2005
|
||||
// Description : VST Test Suite
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
// 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.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#include "public.sdk/source/vst/testsuite/bus/busactivation.h"
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
namespace Steinberg {
|
||||
namespace Vst {
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// BusActivationTest
|
||||
//------------------------------------------------------------------------
|
||||
BusActivationTest::BusActivationTest (ITestPlugProvider* plugProvider) : TestBase (plugProvider)
|
||||
{
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
bool PLUGIN_API BusActivationTest::run (ITestResult* testResult)
|
||||
{
|
||||
if (!testResult || !vstPlug)
|
||||
return false;
|
||||
|
||||
printTestHeader (testResult);
|
||||
|
||||
int32 numTotalBusses = 0;
|
||||
int32 numFailedActivations = 0;
|
||||
|
||||
for (MediaType type = kAudio; type < kNumMediaTypes; type++)
|
||||
{
|
||||
int32 numInputs = vstPlug->getBusCount (type, kInput);
|
||||
int32 numOutputs = vstPlug->getBusCount (type, kOutput);
|
||||
|
||||
numTotalBusses += (numInputs + numOutputs);
|
||||
|
||||
for (int32 i = 0; i < numInputs + numOutputs; ++i)
|
||||
{
|
||||
BusDirection busDirection = i < numInputs ? kInput : kOutput;
|
||||
int32 busIndex = busDirection == kInput ? i : i - numInputs;
|
||||
|
||||
BusInfo busInfo = {};
|
||||
if (vstPlug->getBusInfo (type, busDirection, busIndex, busInfo) != kResultTrue)
|
||||
{
|
||||
addErrorMessage (testResult, STR ("IComponent::getBusInfo (..) failed."));
|
||||
return false;
|
||||
}
|
||||
|
||||
addMessage (testResult, printf (" Bus Activation: %s %s Bus (%d) (%s)",
|
||||
busDirection == kInput ? "Input" : "Output",
|
||||
type == kAudio ? "Audio" : "Event", busIndex,
|
||||
busInfo.busType == kMain ? "kMain" : "kAux"));
|
||||
|
||||
if ((busInfo.flags & BusInfo::kDefaultActive) == false)
|
||||
{
|
||||
if (vstPlug->activateBus (type, busDirection, busIndex, true) != kResultOk)
|
||||
numFailedActivations++;
|
||||
if (vstPlug->activateBus (type, busDirection, busIndex, false) != kResultOk)
|
||||
numFailedActivations++;
|
||||
}
|
||||
else if ((busInfo.flags & BusInfo::kDefaultActive) == true)
|
||||
{
|
||||
if (vstPlug->activateBus (type, busDirection, busIndex, false) != kResultOk)
|
||||
numFailedActivations++;
|
||||
if (vstPlug->activateBus (type, busDirection, busIndex, true) != kResultOk)
|
||||
numFailedActivations++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (numFailedActivations > 0)
|
||||
addErrorMessage (testResult, STR ("Bus activation failed."));
|
||||
|
||||
return (numFailedActivations == 0);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
} // Vst
|
||||
} // Steinberg
|
||||
@@ -0,0 +1,42 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Flags : clang-format SMTGSequencer
|
||||
// Project : VST SDK
|
||||
//
|
||||
// Category : Validator
|
||||
// Filename : public.sdk/source/vst/testsuite/bus/busactivation.h
|
||||
// Created by : Steinberg, 04/2005
|
||||
// Description : VST Test Suite
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
// 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 "public.sdk/source/vst/testsuite/testbase.h"
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
namespace Steinberg {
|
||||
namespace Vst {
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
/** Test Bus Activation.
|
||||
* \ingroup TestClass
|
||||
*/
|
||||
class BusActivationTest : public TestBase
|
||||
{
|
||||
public:
|
||||
BusActivationTest (ITestPlugProvider* plugProvider);
|
||||
|
||||
bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE;
|
||||
|
||||
DECLARE_VSTTEST ("Bus Activation")
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
} // Vst
|
||||
} // Steinberg
|
||||
+100
@@ -0,0 +1,100 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Flags : clang-format SMTGSequencer
|
||||
// Project : VST SDK
|
||||
//
|
||||
// Category : Validator
|
||||
// Filename : public.sdk/source/vst/testsuite/bus/busconsistency.cpp
|
||||
// Created by : Steinberg, 04/2005
|
||||
// Description : VST Test Suite
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
// 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.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#include "public.sdk/source/vst/testsuite/bus/busconsistency.h"
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
namespace Steinberg {
|
||||
namespace Vst {
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// BusConsistencyTest
|
||||
//------------------------------------------------------------------------
|
||||
BusConsistencyTest::BusConsistencyTest (ITestPlugProvider* plugProvider) : TestBase (plugProvider)
|
||||
{
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
bool PLUGIN_API BusConsistencyTest::run (ITestResult* testResult)
|
||||
{
|
||||
if (!testResult || !vstPlug)
|
||||
return false;
|
||||
|
||||
printTestHeader (testResult);
|
||||
|
||||
bool failed = false;
|
||||
int32 numFalseDescQueries = 0;
|
||||
|
||||
for (MediaType mediaType = kAudio; mediaType < kNumMediaTypes; mediaType++)
|
||||
{
|
||||
for (BusDirection dir = kInput; dir <= kOutput; dir++)
|
||||
{
|
||||
int32 numBusses = vstPlug->getBusCount (mediaType, dir);
|
||||
if (numBusses > 0)
|
||||
{
|
||||
auto* busArray = new BusInfo[numBusses];
|
||||
if (busArray)
|
||||
{
|
||||
// get all bus descriptions and save them in an array
|
||||
int32 busIndex;
|
||||
for (busIndex = 0; busIndex < numBusses; busIndex++)
|
||||
{
|
||||
memset (&busArray[busIndex], 0, sizeof (BusInfo));
|
||||
vstPlug->getBusInfo (mediaType, dir, busIndex, busArray[busIndex]);
|
||||
}
|
||||
|
||||
// test by getting descriptions randomly and comparing with saved ones
|
||||
int32 randIndex = 0;
|
||||
BusInfo info = {};
|
||||
|
||||
for (busIndex = 0;
|
||||
busIndex <= numBusses * TestDefaults::instance ().numIterations;
|
||||
busIndex++)
|
||||
{
|
||||
randIndex = rand () % (numBusses);
|
||||
|
||||
memset (&info, 0, sizeof (BusInfo));
|
||||
|
||||
/*tresult result =*/vstPlug->getBusInfo (mediaType, dir, randIndex, info);
|
||||
if (memcmp ((void*)&busArray[randIndex], (void*)&info, sizeof (BusInfo)) !=
|
||||
TestDefaults::instance ().buffersAreEqual)
|
||||
{
|
||||
failed |= true;
|
||||
numFalseDescQueries++;
|
||||
}
|
||||
}
|
||||
delete[] busArray;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (numFalseDescQueries > 0)
|
||||
{
|
||||
addErrorMessage (
|
||||
testResult,
|
||||
printf (
|
||||
"The component returned %i inconsistent buses! (getBusInfo () returns sometime different info for the same bus!",
|
||||
numFalseDescQueries));
|
||||
}
|
||||
|
||||
return failed == false;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
} // Vst
|
||||
} // Steinberg
|
||||
@@ -0,0 +1,42 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Flags : clang-format SMTGSequencer
|
||||
// Project : VST SDK
|
||||
//
|
||||
// Category : Validator
|
||||
// Filename : public.sdk/source/vst/testsuite/bus/busconsistency.h
|
||||
// Created by : Steinberg, 04/2005
|
||||
// Description : VST Test Suite
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
// 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 "public.sdk/source/vst/testsuite/testbase.h"
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
namespace Steinberg {
|
||||
namespace Vst {
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
/** Test Bus Consistency.
|
||||
* \ingroup TestClass
|
||||
*/
|
||||
class BusConsistencyTest : public TestBase
|
||||
{
|
||||
public:
|
||||
BusConsistencyTest (ITestPlugProvider* plugProvider);
|
||||
|
||||
bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE;
|
||||
|
||||
DECLARE_VSTTEST ("Bus Consistency")
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
} // Vst
|
||||
} // Steinberg
|
||||
+83
@@ -0,0 +1,83 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Flags : clang-format SMTGSequencer
|
||||
// Project : VST SDK
|
||||
//
|
||||
// Category : Validator
|
||||
// Filename : public.sdk/source/vst/testsuite/bus/businvalidindex.cpp
|
||||
// Created by : Steinberg, 04/2005
|
||||
// Description : VST Test Suite
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
// 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.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#include "public.sdk/source/vst/testsuite/bus/businvalidindex.h"
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
namespace Steinberg {
|
||||
namespace Vst {
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// BusInvalidIndexTest
|
||||
//------------------------------------------------------------------------
|
||||
BusInvalidIndexTest::BusInvalidIndexTest (ITestPlugProvider* plugProvider) : TestBase (plugProvider)
|
||||
{
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
bool PLUGIN_API BusInvalidIndexTest::run (ITestResult* testResult)
|
||||
{
|
||||
if (!testResult || !vstPlug)
|
||||
return false;
|
||||
|
||||
printTestHeader (testResult);
|
||||
|
||||
bool failed = false;
|
||||
int32 numInvalidDesc = 0;
|
||||
|
||||
for (MediaType mediaType = kAudio; mediaType < kNumMediaTypes; mediaType++)
|
||||
{
|
||||
int32 numBusses =
|
||||
vstPlug->getBusCount (mediaType, kInput) + vstPlug->getBusCount (mediaType, kOutput);
|
||||
for (BusDirection dir = kInput; dir <= kOutput; dir++)
|
||||
{
|
||||
BusInfo descBefore = {};
|
||||
BusInfo descAfter = {};
|
||||
|
||||
int32 randIndex = 0;
|
||||
|
||||
// todo: rand with negative numbers
|
||||
for (int32 i = 0; i <= numBusses * TestDefaults::instance ().numIterations; ++i)
|
||||
{
|
||||
randIndex = rand ();
|
||||
if (0 > randIndex || randIndex > numBusses)
|
||||
{
|
||||
/*tresult result =*/vstPlug->getBusInfo (mediaType, dir, randIndex, descAfter);
|
||||
|
||||
if (memcmp ((void*)&descBefore, (void*)&descAfter, sizeof (BusInfo)) != 0)
|
||||
{
|
||||
failed |= true;
|
||||
numInvalidDesc++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (numInvalidDesc > 0)
|
||||
{
|
||||
addErrorMessage (testResult,
|
||||
printf ("The component returned %i buses queried with an invalid index!",
|
||||
numInvalidDesc));
|
||||
}
|
||||
|
||||
return failed == false;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
} // Vst
|
||||
} // Steinberg
|
||||
@@ -0,0 +1,42 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Flags : clang-format SMTGSequencer
|
||||
// Project : VST SDK
|
||||
//
|
||||
// Category : Validator
|
||||
// Filename : public.sdk/source/vst/testsuite/bus/businvalidindex.h
|
||||
// Created by : Steinberg, 04/2005
|
||||
// Description : VST Test Suite
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
// 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 "public.sdk/source/vst/testsuite/testbase.h"
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
namespace Steinberg {
|
||||
namespace Vst {
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
/** Test Bus Invalid Index.
|
||||
* \ingroup TestClass
|
||||
*/
|
||||
class BusInvalidIndexTest : public TestBase
|
||||
{
|
||||
public:
|
||||
BusInvalidIndexTest (ITestPlugProvider* plugProvider);
|
||||
|
||||
bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE;
|
||||
|
||||
DECLARE_VSTTEST ("Bus Invalid Index")
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
} // Vst
|
||||
} // Steinberg
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Flags : clang-format SMTGSequencer
|
||||
// Project : VST SDK
|
||||
//
|
||||
// Category : Validator
|
||||
// Filename : public.sdk/source/vst/testsuite/bus/checkaudiobusarrangement.cpp
|
||||
// Created by : Steinberg, 04/2005
|
||||
// Description : VST Test Suite
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
// 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.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#include "public.sdk/source/vst/testsuite/bus/checkaudiobusarrangement.h"
|
||||
#include "pluginterfaces/base/funknownimpl.h"
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
namespace Steinberg {
|
||||
namespace Vst {
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// CheckAudioBusArrangementTest
|
||||
//------------------------------------------------------------------------
|
||||
CheckAudioBusArrangementTest::CheckAudioBusArrangementTest (ITestPlugProvider* plugProvider)
|
||||
: TestBase (plugProvider)
|
||||
{
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
bool CheckAudioBusArrangementTest::run (ITestResult* testResult)
|
||||
{
|
||||
if (!testResult || !vstPlug)
|
||||
return false;
|
||||
|
||||
printTestHeader (testResult);
|
||||
|
||||
int32 numInputs = vstPlug->getBusCount (kAudio, kInput);
|
||||
int32 numOutputs = vstPlug->getBusCount (kAudio, kOutput);
|
||||
int32 arrangementMismatchs = 0;
|
||||
|
||||
if (auto audioEffect = U::cast<IAudioProcessor> (vstPlug))
|
||||
{
|
||||
for (int32 i = 0; i < numInputs + numOutputs; ++i)
|
||||
{
|
||||
BusDirection dir = i < numInputs ? kInput : kOutput;
|
||||
int32 busIndex = dir == kInput ? i : i - numInputs;
|
||||
|
||||
addMessage (testResult, printf (" Check %s Audio Bus Arrangement (%d)",
|
||||
dir == kInput ? "Input" : "Output", busIndex));
|
||||
|
||||
BusInfo busInfo = {};
|
||||
if (vstPlug->getBusInfo (kAudio, dir, busIndex, busInfo) == kResultTrue)
|
||||
{
|
||||
SpeakerArrangement arrangement;
|
||||
if (audioEffect->getBusArrangement (dir, busIndex, arrangement) == kResultTrue)
|
||||
{
|
||||
if (busInfo.channelCount != SpeakerArr::getChannelCount (arrangement))
|
||||
{
|
||||
arrangementMismatchs++;
|
||||
addErrorMessage (testResult, STR ("channelCount is inconsistent!"));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
addErrorMessage (testResult,
|
||||
STR ("IAudioProcessor::getBusArrangement (..) failed!"));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
addErrorMessage (testResult, STR ("IComponent::getBusInfo (..) failed!"));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return (arrangementMismatchs == 0);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
} // Vst
|
||||
} // Steinberg
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Flags : clang-format SMTGSequencer
|
||||
// Project : VST SDK
|
||||
//
|
||||
// Category : Validator
|
||||
// Filename : public.sdk/source/vst/testsuite/bus/checkaudiobusarrangement.h
|
||||
// Created by : Steinberg, 04/2005
|
||||
// Description : VST Test Suite
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
// 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 "public.sdk/source/vst/testsuite/testbase.h"
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
namespace Steinberg {
|
||||
namespace Vst {
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
/** Test Check Audio Bus Arrangement.
|
||||
* \ingroup TestClass
|
||||
*/
|
||||
class CheckAudioBusArrangementTest : public TestBase
|
||||
{
|
||||
public:
|
||||
CheckAudioBusArrangementTest (ITestPlugProvider* plugProvider);
|
||||
|
||||
bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE;
|
||||
|
||||
DECLARE_VSTTEST ("Check Audio Bus Arrangement")
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
} // Vst
|
||||
} // Steinberg
|
||||
@@ -0,0 +1,89 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Flags : clang-format SMTGSequencer
|
||||
// Project : VST SDK
|
||||
//
|
||||
// Category : Validator
|
||||
// Filename : public.sdk/source/vst/testsuite/bus/scanbusses.cpp
|
||||
// Created by : Steinberg, 04/2005
|
||||
// Description : VST Test Suite
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
// 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.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#include "public.sdk/source/vst/testsuite/bus/scanbusses.h"
|
||||
#include "public.sdk/source/vst/utility/stringconvert.h"
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
namespace Steinberg {
|
||||
namespace Vst {
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// ScanBussesTest
|
||||
//------------------------------------------------------------------------
|
||||
ScanBussesTest::ScanBussesTest (ITestPlugProvider* plugProvider) : TestBase (plugProvider)
|
||||
{
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
bool PLUGIN_API ScanBussesTest::run (ITestResult* testResult)
|
||||
{
|
||||
if (!testResult || !vstPlug)
|
||||
return false;
|
||||
|
||||
printTestHeader (testResult);
|
||||
|
||||
int32 numBusses = 0;
|
||||
|
||||
for (MediaType mediaType = kAudio; mediaType < kNumMediaTypes; mediaType++)
|
||||
{
|
||||
int32 numInputs = vstPlug->getBusCount (mediaType, kInput);
|
||||
int32 numOutputs = vstPlug->getBusCount (mediaType, kOutput);
|
||||
|
||||
numBusses += (numInputs + numOutputs);
|
||||
|
||||
if ((mediaType == (kNumMediaTypes - 1)) && (numBusses == 0))
|
||||
{
|
||||
addErrorMessage (testResult, STR ("This component does not export any buses!!!"));
|
||||
return false;
|
||||
}
|
||||
|
||||
addMessage (testResult,
|
||||
printf ("=> %s Buses: [%d In(s) => %d Out(s)]",
|
||||
mediaType == kAudio ? "Audio" : "Event", numInputs, numOutputs));
|
||||
|
||||
for (int32 i = 0; i < numInputs + numOutputs; ++i)
|
||||
{
|
||||
BusDirection busDirection = i < numInputs ? kInput : kOutput;
|
||||
int32 busIndex = busDirection == kInput ? i : i - numInputs;
|
||||
|
||||
BusInfo busInfo = {};
|
||||
if (vstPlug->getBusInfo (mediaType, busDirection, busIndex, busInfo) == kResultTrue)
|
||||
{
|
||||
auto busName = StringConvert::convert (busInfo.name);
|
||||
|
||||
if (busName.empty ())
|
||||
{
|
||||
addErrorMessage (testResult, printf ("Bus %d has no name!!!", busIndex));
|
||||
return false;
|
||||
}
|
||||
addMessage (
|
||||
testResult,
|
||||
printf (" %s[%d]: \"%s\" (%s-%s) ", busDirection == kInput ? "In " : "Out",
|
||||
busIndex, busName.data (), busInfo.busType == kMain ? "Main" : "Aux",
|
||||
busInfo.kDefaultActive ? "Default Active" : "Default Inactive"));
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
} // Vst
|
||||
} // Steinberg
|
||||
@@ -0,0 +1,43 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Flags : clang-format SMTGSequencer
|
||||
// Project : VST SDK
|
||||
//
|
||||
// Category : Validator
|
||||
// Filename : public.sdk/source/vst/testsuite/bus/scanbusses.h
|
||||
// Created by : Steinberg, 04/2005
|
||||
// Description : VST Test Suite
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
// 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 "public.sdk/source/vst/testsuite/testbase.h"
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
namespace Steinberg {
|
||||
namespace Vst {
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
/** Test Scan Buses.
|
||||
* \ingroup TestClass
|
||||
*/
|
||||
class ScanBussesTest : public TestBase
|
||||
{
|
||||
public:
|
||||
ScanBussesTest (ITestPlugProvider* plugProvider);
|
||||
|
||||
DECLARE_VSTTEST ("Scan Buses")
|
||||
|
||||
bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE;
|
||||
//------------------------------------------------------------------------
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
} // Vst
|
||||
} // Steinberg
|
||||
+139
@@ -0,0 +1,139 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Flags : clang-format SMTGSequencer
|
||||
// Project : VST SDK
|
||||
//
|
||||
// Category : Validator
|
||||
// Filename : public.sdk/source/vst/testsuite/bus/sidechainarrangement.cpp
|
||||
// Created by : Steinberg, 11/2019
|
||||
// Description : VST Test Suite
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
// 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.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#include "public.sdk/source/vst/testsuite/bus/sidechainarrangement.h"
|
||||
#include "pluginterfaces/base/funknownimpl.h"
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
namespace Steinberg {
|
||||
namespace Vst {
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// SideChainArrangementTest
|
||||
//------------------------------------------------------------------------
|
||||
SideChainArrangementTest::SideChainArrangementTest (ITestPlugProvider* plugProvider)
|
||||
: TestBase (plugProvider)
|
||||
{
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
bool PLUGIN_API SideChainArrangementTest::run (ITestResult* testResult)
|
||||
{
|
||||
if (!testResult || !vstPlug)
|
||||
return false;
|
||||
|
||||
printTestHeader (testResult);
|
||||
|
||||
bool failed = false;
|
||||
|
||||
auto audioEffect = U::cast<IAudioProcessor> (vstPlug);
|
||||
if (!audioEffect)
|
||||
return failed;
|
||||
// get the side chain arrangements
|
||||
// set Main/first Input and output to Mono
|
||||
// get the current arrangement and compare
|
||||
|
||||
// check if Audio sideChain is supported
|
||||
bool hasInputSideChain = false;
|
||||
int32 numInBusses = vstPlug->getBusCount (kAudio, kInput);
|
||||
if (numInBusses < 2)
|
||||
return true;
|
||||
|
||||
for (int32 busIndex = 0; busIndex < numInBusses; busIndex++)
|
||||
{
|
||||
BusInfo info;
|
||||
if (vstPlug->getBusInfo (kAudio, kInput, busIndex, info) != kResultTrue)
|
||||
{
|
||||
addErrorMessage (testResult, STR ("IComponent::getBusInfo (..) failed."));
|
||||
continue;
|
||||
}
|
||||
if (info.busType == kAux)
|
||||
hasInputSideChain = true;
|
||||
}
|
||||
if (!hasInputSideChain)
|
||||
return true;
|
||||
|
||||
auto* inputArrArray = new SpeakerArrangement[numInBusses];
|
||||
for (int32 busIndex = 0; busIndex < numInBusses; busIndex++)
|
||||
{
|
||||
if (audioEffect->getBusArrangement (kInput, busIndex, inputArrArray[busIndex]) !=
|
||||
kResultTrue)
|
||||
{
|
||||
addErrorMessage (testResult, STR ("IComponent::getBusArrangement (..) failed."));
|
||||
}
|
||||
}
|
||||
|
||||
int32 numOutBusses = vstPlug->getBusCount (kAudio, kOutput);
|
||||
SpeakerArrangement* outputArrArray = nullptr;
|
||||
if (numOutBusses > 0)
|
||||
{
|
||||
outputArrArray = new SpeakerArrangement[numOutBusses];
|
||||
for (int32 busIndex = 0; busIndex < numOutBusses; busIndex++)
|
||||
{
|
||||
if (audioEffect->getBusArrangement (kOutput, busIndex, outputArrArray[busIndex]) !=
|
||||
kResultTrue)
|
||||
{
|
||||
addErrorMessage (testResult, STR ("IComponent::getBusArrangement (..) failed."));
|
||||
}
|
||||
}
|
||||
outputArrArray[0] = kSpeakerM;
|
||||
}
|
||||
inputArrArray[0] = kSpeakerM;
|
||||
|
||||
if (audioEffect->setBusArrangements (inputArrArray, numInBusses, outputArrArray,
|
||||
numOutBusses) == kResultTrue)
|
||||
{
|
||||
for (int32 busIndex = 0; busIndex < numInBusses; busIndex++)
|
||||
{
|
||||
SpeakerArrangement tmp;
|
||||
if (audioEffect->getBusArrangement (kInput, busIndex, tmp) == kResultTrue)
|
||||
{
|
||||
if (tmp != inputArrArray[busIndex])
|
||||
{
|
||||
addErrorMessage (
|
||||
testResult,
|
||||
printf (
|
||||
"Input %d: setBusArrangements was returning kResultTrue but getBusArrangement returns different arrangement!",
|
||||
busIndex));
|
||||
failed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int32 busIndex = 0; busIndex < numOutBusses; busIndex++)
|
||||
{
|
||||
SpeakerArrangement tmp;
|
||||
if (audioEffect->getBusArrangement (kOutput, busIndex, tmp) != kResultTrue)
|
||||
{
|
||||
if (tmp != outputArrArray[busIndex])
|
||||
{
|
||||
addErrorMessage (
|
||||
testResult,
|
||||
printf (
|
||||
"Output %d: setBusArrangements was returning kResultTrue but getBusArrangement returns different arrangement!",
|
||||
busIndex));
|
||||
failed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return failed == false;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
} // Vst
|
||||
} // Steinberg
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Flags : clang-format SMTGSequencer
|
||||
// Project : VST SDK
|
||||
//
|
||||
// Category : Validator
|
||||
// Filename : public.sdk/source/vst/testsuite/bus/sidechainarrangement.h
|
||||
// Created by : Steinberg, 11/2020
|
||||
// Description : VST Test Suite
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
// 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 "public.sdk/source/vst/testsuite/testbase.h"
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
namespace Steinberg {
|
||||
namespace Vst {
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
/** Test SideChain Arrangement.
|
||||
* \ingroup TestClass
|
||||
*/
|
||||
class SideChainArrangementTest : public TestBase
|
||||
{
|
||||
public:
|
||||
SideChainArrangementTest (ITestPlugProvider* plugProvider);
|
||||
|
||||
bool PLUGIN_API run (ITestResult* testResult) SMTG_OVERRIDE;
|
||||
|
||||
DECLARE_VSTTEST ("SideChain Arrangement")
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
} // Vst
|
||||
} // Steinberg
|
||||
Reference in New Issue
Block a user