143 :
public ::testing::Test,
147 void SetUp ()
override
150 temp_dir_obj = utils::io::make_tmp_dir ();
152 utils::Utf8String::from_qstring (temp_dir_obj->path ()).to_path ();
155 audio_device_manager =
156 test_helpers::create_audio_device_manager_with_dummy_device ();
162 plugin_format_manager = std::make_shared<juce::AudioPluginFormatManager> ();
163 plugin_format_manager->addDefaultFormats ();
166 auto mock_backend = std::make_unique<test_helpers::MockSettingsBackend> ();
167 mock_backend_ptr = mock_backend.get ();
170 ON_CALL (*mock_backend_ptr, value (testing::_, testing::_))
171 .WillByDefault (testing::Return (QVariant ()));
174 std::make_unique<utils::AppSettings> (std::move (mock_backend));
177 port_registry = std::make_unique<dsp::PortRegistry> (
nullptr);
178 param_registry = std::make_unique<dsp::ProcessorParameterRegistry> (
179 *port_registry,
nullptr);
180 monitor_fader = utils::make_qobject_unique<dsp::Fader> (
182 .port_registry_ = *port_registry,
183 .param_registry_ = *param_registry,
185 dsp::PortType::Audio,
189 [] (
bool fader_solo_status) {
return false; });
192 juce::AudioSampleBuffer emphasis_sample (2, 512);
193 juce::AudioSampleBuffer normal_sample (2, 512);
194 metronome = utils::make_qobject_unique<dsp::Metronome> (
196 .port_registry_ = *port_registry,
197 .param_registry_ = *param_registry,
199 emphasis_sample, normal_sample,
true, 1.0f,
nullptr);
202 void TearDown ()
override
205 monitor_fader.reset ();
206 param_registry.reset ();
207 port_registry.reset ();
208 app_settings.reset ();
209 plugin_format_manager.reset ();
210 hw_interface.reset ();
213 std::unique_ptr<Project> create_minimal_project ()
215 structure::project::Project::ProjectDirectoryPathProvider path_provider =
216 [
this] (
bool for_backup) {
219 return project_dir /
"backups";
224 plugins::PluginHostWindowFactory window_factory =
225 [] (
plugins::Plugin &) -> std::unique_ptr<plugins::IPluginHostWindow> {
229 auto project = std::make_unique<Project> (
230 *app_settings, path_provider, *hw_interface, plugin_format_manager,
231 window_factory, *metronome, *monitor_fader);
237 static void assert_valid_uuid (
const std::string &uuid_str)
240 static const std::regex uuid_regex (
241 R
"([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})",
242 std::regex_constants::icase);
243 EXPECT_TRUE (std::regex_match (uuid_str, uuid_regex))
244 << "Invalid UUID format: " << uuid_str;
248 static void assert_valid_color (
const std::string &color_str)
250 static const std::regex color_regex (R
"(#[0-9A-Fa-f]{6})");
251 EXPECT_TRUE (std::regex_match (color_str, color_regex))
252 << "Invalid color format: " << color_str;
256 static constexpr utils::Version TEST_APP_VERSION_WITH_PATCH{ 2, 0, 1 };
258 std::unique_ptr<QTemporaryDir> temp_dir_obj;
259 fs::path project_dir;
260 std::shared_ptr<juce::AudioDeviceManager> audio_device_manager;
261 std::unique_ptr<dsp::IHardwareAudioInterface> hw_interface;
262 std::shared_ptr<juce::AudioPluginFormatManager> plugin_format_manager;
264 std::unique_ptr<utils::AppSettings> app_settings;
265 std::unique_ptr<dsp::PortRegistry> port_registry;
266 std::unique_ptr<dsp::ProcessorParameterRegistry> param_registry;