comparison test/vamp-client/tst_PluginStub.cpp @ 191:79c64ff2610b

Test setup for testing PluginCache caches framing sizes across init calls.
author Lucas Thompson <dev@lucas.im>
date Tue, 07 Feb 2017 16:35:16 +0000
parents 70b0f1f9e039
children 4848852c4fbd
comparison
equal deleted inserted replaced
190:70b0f1f9e039 191:79c64ff2610b
1 #include "catch/catch.hpp" 1 #include "catch/catch.hpp"
2 #include "vamp-client/Loader.h"
3 #include "vamp-client/PluginClient.h"
4 #include "vamp-client/PluginStub.h"
5 #include "vamp-support/RequestResponse.h"
6 #include <vector>
2 7
3 TEST_CASE("Configure plugin with parameter dependent preferred framing sizes") { 8 using namespace piper_vamp;
9 using namespace piper_vamp::client;
10 using AudioBuffer = std::vector<std::vector<float>>;
4 11
12 // This stub mimicks the interaction with a Piper server
13 // Here we only need to implement the configure method
14 // due to testing only the initialise implemention of PluginStub
15 class StubClient : public PluginClient
16 {
17 public:
18 StubClient(PluginStaticData staticData) : m_staticData(staticData) {}
19
20 ConfigurationResponse
21 configure(PluginStub* plugin,
22 PluginConfiguration config) override
23 {
24 const float scale = plugin->getParameter("framing-scale");
25 ConfigurationResponse cr;
26 cr.plugin = plugin;
27
28 // we want to return different framing sizes
29 // than config provides
30 // there isn't really any need to be doing this with a plugin param
31 cr.framing.blockSize = config.framing.stepSize * scale;
32 cr.framing.stepSize = config.framing.blockSize * scale;
33
34
35 // just return some outputs anyway
36 // to avoid a failure case we are not testing here.
37 Vamp::Plugin::OutputDescriptor output;
38 const auto basic = m_staticData.basicOutputInfo[0];
39 output.identifier = basic.identifier;
40 output.name = basic.name;
41 output.description = basic.description;
42 cr.outputs = {output};
43 return cr;
44 }
45
46 Vamp::Plugin::FeatureSet
47 process(PluginStub* /*plugin*/,
48 AudioBuffer /*channels*/,
49 Vamp::RealTime /*timestamp*/) override
50 {
51 return {};
52 }
53
54 Vamp::Plugin::FeatureSet
55 finish(PluginStub* /*plugin*/) override
56 {
57 return {};
58 }
59
60 void
61 reset(PluginStub* /*plugin*/, PluginConfiguration /*config*/) override
62 {}
63 private:
64 PluginStaticData m_staticData;
65 };
66
67
68 TEST_CASE("Init plugin with parameter dependent preferred framing sizes") {
69
70 PluginConfiguration defaultConfig;
71 defaultConfig.channelCount = 1;
72 defaultConfig.parameterValues = {};
73 defaultConfig.framing.blockSize = 1024;
74 defaultConfig.framing.stepSize = 512;
75 defaultConfig.parameterValues = {{"framing-scale", 1.0}};
76
77 Vamp::PluginBase::ParameterDescriptor stubParam;
78 stubParam.identifier = "framing-scale";
79 stubParam.name = "Framing Scale Factor";
80 stubParam.description = "Scales the preferred framing sizes";
81 stubParam.maxValue = 2.0;
82
83 PluginStaticData staticData;
84 staticData.pluginKey = "stub";
85 staticData.basic = {"stub:param-init", "Stub", "Testing init"};
86 staticData.maker = "Lucas Thompson";
87 staticData.copyright = "GPL";
88 staticData.pluginVersion = 1;
89 staticData.category = {"Test"};
90 staticData.minChannelCount = 1;
91 staticData.maxChannelCount = 1;
92 staticData.parameters = {stubParam};
93 staticData.inputDomain = Vamp::Plugin::InputDomain::TimeDomain;
94 staticData.basicOutputInfo = {{"output", "NA", "Not real"}};
95
96 StubClient stub {staticData};
97
98 PluginStub vampPiperAdapter {
99 &stub,
100 "stub", // plugin key
101 44100.0, // sample rate
102 0, // adapter flags, don't care here
103 staticData,
104 defaultConfig
105 };
106
107 vampPiperAdapter.setParameter("framing-scale", 2.0);
108 // setup
109 REQUIRE(
110 vampPiperAdapter.initialise(
111 1,
112 vampPiperAdapter.getPreferredStepSize(),
113 vampPiperAdapter.getPreferredBlockSize()
114 ) == false
115 );
116 REQUIRE(
117 vampPiperAdapter.initialise(
118 1,
119 vampPiperAdapter.getPreferredStepSize(),
120 vampPiperAdapter.getPreferredBlockSize()
121 )
122 );
5 } 123 }