///-------------------------------------------------------------------------------------------------
/// 
/// \file ovtTestFixtureCommon.h
/// \copyright Copyright (C) 2022 Inria
///
/// This program is free software: you can redistribute it and/or modify
/// it under the terms of the GNU Affero General Public License as published
/// by the Free Software Foundation, either version 3 of the License, or
/// (at your option) 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 Affero General Public License for more details.
///
/// You should have received a copy of the GNU Affero General Public License
/// along with this program.  If not, see <https://www.gnu.org/licenses/>.
/// 
///-------------------------------------------------------------------------------------------------

#pragma once

#include <string>

#include <openvibe/ov_all.h>

#include "ovtTestFixture.h"

// \note: This file contains fixture implementation shared by many unit tests
namespace OpenViBE {
namespace Test {
struct SKernelFixture final : TestFixture
{
	SKernelFixture() = default;
	explicit SKernelFixture(const std::string& configFile) : m_configFile(configFile) { }

	void setConfigFile(const std::string& configFile) { m_configFile = configFile; }

	void setUp() override;
	void tearDown() override;

	Kernel::IKernelContext* context{ nullptr };

private:
	std::string m_configFile;
	CKernelLoader m_kernelLoader;
};
}  // namespace Test
}  // namespace OpenViBE
