Zrythm v2.0.0-alpha.1
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
mock_track.h
1// SPDX-FileCopyrightText: © 2025 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#pragma once
5
6#include "structure/tracks/track.h"
7#include "utils/object_registry.h"
8
9#include "unit/dsp/graph_helpers.h"
10#include <gmock/gmock.h>
11#include <gtest/gtest.h>
12
13namespace zrythm::structure::tracks
14{
15class MockTrack : public Track
16{
17public:
18 using TrackFeatures = Track::TrackFeatures;
19
20 MockTrack (
21 Type type,
22 PortType in_signal_type,
23 PortType out_signal_type,
24 TrackFeatures features,
25 BaseTrackDependencies dependencies)
26 : Track (type, in_signal_type, out_signal_type, features, std::move (dependencies))
27 {
28 processor_ = make_track_processor (std::nullopt, std::nullopt, std::nullopt);
29 }
30
31 MOCK_METHOD (
32 void,
34 (std::vector<ArrangerObjectPtrVariant> & objects),
35 (const, override));
36};
37
38class MockTrackFactory
39{
40public:
41 MockTrackFactory ()
42 {
43 registry_ = std::make_unique<utils::ObjectRegistry> ();
44 tempo_map_ = std::make_unique<dsp::TempoMap> (sample_rate_);
45 tempo_map_wrapper_ = std::make_unique<dsp::TempoMapWrapper> (*tempo_map_);
46 transport_ = std::make_unique<dsp::graph_test::MockTransport> ();
47
48 base_dependencies_ = std::make_unique<BaseTrackDependencies> (
49 *tempo_map_wrapper_, *registry_, *transport_, [] { return false; },
50 TrackRecordingCallback{});
51 }
52
53 std::unique_ptr<MockTrack> createMockTrack (
54 Track::Type type,
55 dsp::PortType in_type = dsp::PortType::Audio,
56 dsp::PortType out_type = dsp::PortType::Audio,
57 MockTrack::TrackFeatures features =
58 MockTrack::TrackFeatures::Automation | MockTrack::TrackFeatures::Lanes
59 | MockTrack::TrackFeatures::Modulators
60 | MockTrack::TrackFeatures::Recording)
61 {
62 return std::make_unique<MockTrack> (
63 type, in_type, out_type, features, *base_dependencies_);
64 }
65
66 std::unique_ptr<utils::ObjectRegistry> registry_;
67 std::unique_ptr<dsp::TempoMap> tempo_map_;
68 std::unique_ptr<dsp::TempoMapWrapper> tempo_map_wrapper_;
69 std::unique_ptr<dsp::graph_test::MockTransport> transport_;
70 std::unique_ptr<BaseTrackDependencies> base_dependencies_;
71
72 units::sample_rate_t sample_rate_{ units::sample_rate (48000) };
73};
74
75}
Track(Type type, std::optional< PortType > in_signal_type, std::optional< PortType > out_signal_type, TrackFeatures enabled_features, BaseTrackDependencies dependencies)
Constructor to be used by subclasses.
utils::QObjectUniquePtr< TrackProcessor > processor_
The TrackProcessor, used for processing.
Definition track.h:706
utils::QObjectUniquePtr< TrackProcessor > make_track_processor(std::optional< TrackProcessor::FillEventsCallback > fill_events_cb=std::nullopt, std::optional< TrackProcessor::TransformMidiInputsFunc > transform_midi_inputs_func=std::nullopt, std::optional< TrackProcessor::AppendMidiInputsToOutputsFunc > append_midi_inputs_to_outputs_func=std::nullopt)
Implementations with a processor must call this in their constructor.
virtual void collect_additional_timeline_objects(std::vector< ArrangerObjectPtrVariant > &objects) const
Called by collect_timeline_objects to collect any additional objects not handled by this class (such ...
Definition track.h:586