|
- /*
- * Carla Tests
- * Copyright (C) 2013-2014 Filipe Coelho <falktx@falktx.com>
- *
- * 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 2 of
- * the License, or 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.
- *
- * For a full copy of the GNU General Public License see the doc/GPL.txt file.
- */
-
- #include "../backend/engine/CarlaEngineInternal.hpp"
-
- #include "CarlaPlugin.hpp"
-
- #include "CarlaHost.h"
- #include "CarlaUtils.hpp"
-
- // -----------------------------------------------------------------------
-
- CARLA_BACKEND_START_NAMESPACE
-
- class CarlaEngineDummy : public CarlaEngine
- {
- public:
- CarlaEngineDummy()
- : CarlaEngine(),
- fIsRunning(false)
- {
- }
-
- bool init(const char* const clientName) override
- {
- fIsRunning = true;
- pData->bufferSize = 512;
- pData->sampleRate = 44100.0;
- return CarlaEngine::init(clientName);
- }
-
- bool close() override
- {
- fIsRunning = false;
- return CarlaEngine::close();
- }
-
- bool isRunning() const noexcept override
- {
- return fIsRunning;
- }
-
- bool isOffline() const noexcept override
- {
- return false;
- }
-
- EngineType getType() const noexcept override
- {
- return kEngineTypePlugin;
- }
-
- const char* getCurrentDriverName() const noexcept override
- {
- return "Dummy";
- }
-
- private:
- bool fIsRunning;
- };
-
- CARLA_BACKEND_END_NAMESPACE
-
- // -----------------------------------------------------------------------
-
- CARLA_BACKEND_USE_NAMESPACE
-
- #define TEST_NAME "TestName"
-
- void testEngine(CarlaEngine* const eng)
- {
- assert(eng->getMaxClientNameSize() != 0);
- assert(eng->getMaxPortNameSize() != 0);
- assert(eng->getCurrentPluginCount() == 0);
- assert(eng->getMaxPluginNumber() == 0);
- assert(! eng->isRunning());
- assert(eng->getPlugin(0) == nullptr);
-
- const char* name1 = eng->getUniquePluginName(TEST_NAME);
- const char* name2 = eng->getUniquePluginName(TEST_NAME);
- const char* name3 = eng->getUniquePluginName(TEST_NAME);
-
- assert(name1 != nullptr);
- assert(name2 != nullptr);
- assert(name3 != nullptr);
- assert(std::strcmp(name1, TEST_NAME) == 0);
- assert(std::strcmp(name2, TEST_NAME) == 0);
- assert(std::strcmp(name3, TEST_NAME) == 0);
- delete[] name1;
- delete[] name2;
- delete[] name3;
-
- eng->init("test");
-
- assert(eng->getCurrentPluginCount() == 0);
- assert(eng->getMaxPluginNumber() != 0);
- assert(eng->isRunning());
- assert(eng->getPlugin(0) == nullptr);
-
- name1 = eng->getUniquePluginName(TEST_NAME);
- name2 = eng->getUniquePluginName(TEST_NAME);
- name3 = eng->getUniquePluginName(TEST_NAME);
-
- assert(name1 != nullptr);
- assert(name2 != nullptr);
- assert(name3 != nullptr);
- assert(std::strcmp(name1, TEST_NAME) == 0);
- assert(std::strcmp(name2, TEST_NAME) == 0);
- assert(std::strcmp(name3, TEST_NAME) == 0);
- delete[] name1;
- delete[] name2;
- delete[] name3;
-
- eng->close();
-
- // test quick init & close 3 times
- eng->init("test1");
- eng->close();
- eng->init("test2");
- eng->close();
- eng->init("test3");
- eng->close();
-
- // leave it open
- eng->init("test");
-
- // add as much plugins as possible
- for (;;)
- {
- if (! eng->addPlugin(PLUGIN_INTERNAL, nullptr, TEST_NAME, "bypass"))
- break;
- }
- assert(eng->getCurrentPluginCount() != 0);
- assert(eng->getCurrentPluginCount() == eng->getMaxPluginNumber());
- assert(eng->getCurrentPluginCount() == MAX_DEFAULT_PLUGINS);
-
- eng->close();
- }
-
- int main()
- {
- assert(CarlaEngine::getDriverCount() != 0);
-
- #if 0
- for (uint i=0, count=CarlaEngine::getDriverCount(); i < count && i < 4; ++i)
- {
- if (i == 1 || i == 2) continue;
- carla_stdout("driver %i/%i: %s", i+1, count, CarlaEngine::getDriverName(i));
-
- if (const char* const* const devNames = CarlaEngine::getDriverDeviceNames(i))
- {
- for (uint j=0; devNames[j] != nullptr; ++j)
- {
- CarlaEngine::getDriverDeviceInfo(i, devNames[j]);
- }
- }
- }
- #endif
-
- assert(CarlaPlugin::getNativePluginCount() != 0);
-
- for (size_t i=0, count=CarlaPlugin::getNativePluginCount(); i < count; ++i)
- {
- assert(CarlaPlugin::getNativePluginDescriptor(i) != nullptr);
- }
-
- CarlaEngineDummy e;
- testEngine(&e);
-
- // if (CarlaEngine* const eng = CarlaEngine::newDriverByName("PulseAudio"))
- // {
- // testEngine(eng);
- // delete eng;
- // }
-
- return 0;
- }
|