Skip to content

Commit 93f9ce2

Browse files
committed
Update CommonAverageRefTests
1 parent fcf4ca1 commit 93f9ce2

2 files changed

Lines changed: 108 additions & 20 deletions

File tree

Plugins/CommonAvgRef/Tests/CommonAvgRefTests.cpp

Lines changed: 107 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -64,19 +64,15 @@ class CommonAverageRefTests : public testing::Test
6464
}
6565
}
6666

67-
/** Checks that all samples in a channel are equal (almost equal) to zero */
68-
bool checkSamplesZero (int chan)
67+
/** Checks that all samples in a channel are equal (almost equal) to a given value */
68+
bool checkSamplesEqual (int chan, float expected)
6969
{
70-
for (auto stream : processor->getDataStreams())
70+
for (int j = 0; j < signal->getNumSamples(); j++)
7171
{
72-
for (int j = 0; j < signal->getNumSamples(); j++)
73-
{
74-
float diff = fabs (signal->getSample (chan, j) - 0.0f);
75-
if (std::isgreater (diff, 1e-5))
76-
return false;
77-
}
72+
float diff = fabs (signal->getSample (chan, j) - expected);
73+
if (std::isgreater (diff, 0.01f)) // Allow a small tolerance
74+
return false;
7875
}
79-
8076
return true;
8177
}
8278

@@ -110,7 +106,7 @@ TEST_F (CommonAverageRefTests, ContructorTest)
110106
ASSERT_EQ (processor->getDisplayName(), "Common Avg Ref");
111107
}
112108

113-
TEST_F (CommonAverageRefTests, CommonAverageTest)
109+
TEST_F (CommonAverageRefTests, SineWaveTest)
114110
{
115111
const float sampleRate = 30000;
116112
const int bufferSize = 50;
@@ -127,18 +123,15 @@ TEST_F (CommonAverageRefTests, CommonAverageTest)
127123
affectedChans->currentValue = Array<var> ({ 1 });
128124
}
129125

130-
Array<float> posSine = generateSineWave (150.0, 1.0, bufferSize, sampleRate);
131-
Array<float> negSine = generateSineWave (150.0, -1.0, bufferSize, sampleRate);
126+
Array<float> sineData = generateSineWave (150.0, 1.0, bufferSize, sampleRate);
132127

133128
signal = std::make_unique<AudioBuffer<float>> (2, bufferSize);
134129

135130
for (auto stream : processor->getDataStreams())
136131
{
137-
// Add positive sine wave data to first channel in each dataStream
138-
signal->copyFrom (0, 0, posSine.data(), bufferSize, 0.0f);
139-
140-
// Add negative sine wave data to second channel in each dataStream
141-
signal->copyFrom (1, 0, negSine.data(), bufferSize, 0.0f);
132+
// Add positive sine wave data to first two channel in each dataStream
133+
signal->copyFrom (0, 0, sineData.data(), bufferSize, 1.0f);
134+
signal->copyFrom (1, 0, sineData.data(), bufferSize, 1.0f);
142135

143136
AccessClass::ExternalProcessorAccessor::injectNumSamples (processor,
144137
stream->getStreamId(),
@@ -148,5 +141,100 @@ TEST_F (CommonAverageRefTests, CommonAverageTest)
148141
processor->process (*(signal.get()));
149142

150143
// check that signal is common average referenced
151-
ASSERT_TRUE (checkSamplesZero (1));
144+
ASSERT_TRUE (checkSamplesEqual (1, 0.0f));
145+
}
146+
147+
TEST_F (CommonAverageRefTests, GainZeroLeavesAffectedUnchanged)
148+
{
149+
const int bufferSize = 8;
150+
processor->update();
151+
152+
for (auto stream : processor->getDataStreams())
153+
{
154+
auto referenceChans = (MaskChannelsParameter*) stream->getParameter ("reference");
155+
referenceChans->currentValue = Array<var> ({ 0 });
156+
auto affectedChans = (MaskChannelsParameter*) stream->getParameter ("affected");
157+
affectedChans->currentValue = Array<var> ({ 1 });
158+
auto gainParam = (FloatParameter*) stream->getParameter ("gain");
159+
gainParam->currentValue = 0.0f;
160+
}
161+
162+
signal = std::make_unique<AudioBuffer<float>> (2, bufferSize);
163+
for (int i = 0; i < bufferSize; ++i)
164+
{
165+
signal->setSample (0, i, 1.0f); // reference
166+
signal->setSample (1, i, 2.0f); // affected
167+
}
168+
169+
for (auto stream : processor->getDataStreams())
170+
{
171+
AccessClass::ExternalProcessorAccessor::injectNumSamples (processor, stream->getStreamId(), bufferSize);
172+
}
173+
174+
processor->process (*(signal.get()));
175+
ASSERT_TRUE (checkSamplesEqual (1, 2.0f));
176+
}
177+
178+
TEST_F (CommonAverageRefTests, GainHalfSubtractsHalfReference)
179+
{
180+
const int bufferSize = 8;
181+
processor->update();
182+
183+
for (auto stream : processor->getDataStreams())
184+
{
185+
auto referenceChans = (MaskChannelsParameter*) stream->getParameter ("reference");
186+
referenceChans->currentValue = Array<var> ({ 0 });
187+
auto affectedChans = (MaskChannelsParameter*) stream->getParameter ("affected");
188+
affectedChans->currentValue = Array<var> ({ 1 });
189+
auto gainParam = (FloatParameter*) stream->getParameter ("gain");
190+
gainParam->currentValue = 50.0f;
191+
}
192+
193+
signal = std::make_unique<AudioBuffer<float>> (2, bufferSize);
194+
for (int i = 0; i < bufferSize; ++i)
195+
{
196+
signal->setSample (0, i, 1.0f); // reference
197+
signal->setSample (1, i, 2.0f); // affected
198+
}
199+
200+
for (auto stream : processor->getDataStreams())
201+
{
202+
AccessClass::ExternalProcessorAccessor::injectNumSamples (processor, stream->getStreamId(), bufferSize);
203+
}
204+
205+
processor->process (*(signal.get()));
206+
// 2.0 - 0.5*1.0 = 1.5
207+
ASSERT_TRUE (checkSamplesEqual (1, 1.5f));
208+
}
209+
210+
TEST_F (CommonAverageRefTests, GainFullSubtractsFullReference)
211+
{
212+
const int bufferSize = 8;
213+
processor->update();
214+
215+
for (auto stream : processor->getDataStreams())
216+
{
217+
auto referenceChans = (MaskChannelsParameter*) stream->getParameter ("reference");
218+
referenceChans->currentValue = Array<var> ({ 0 });
219+
auto affectedChans = (MaskChannelsParameter*) stream->getParameter ("affected");
220+
affectedChans->currentValue = Array<var> ({ 1 });
221+
auto gainParam = (FloatParameter*) stream->getParameter ("gain");
222+
gainParam->currentValue = 100.0f;
223+
}
224+
225+
signal = std::make_unique<AudioBuffer<float>> (2, bufferSize);
226+
for (int i = 0; i < bufferSize; ++i)
227+
{
228+
signal->setSample (0, i, 1.0f); // reference
229+
signal->setSample (1, i, 2.0f); // affected
230+
}
231+
232+
for (auto stream : processor->getDataStreams())
233+
{
234+
AccessClass::ExternalProcessorAccessor::injectNumSamples (processor, stream->getStreamId(), bufferSize);
235+
}
236+
237+
processor->process (*(signal.get()));
238+
// 2.0 - 1.0*1.0 = 1.0
239+
ASSERT_TRUE (checkSamplesEqual (1, 1.0f));
152240
}

Tests/Processors/PluginManagerTests.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class PluginManagerTest : public testing::Test
1515
File::getCurrentWorkingDirectory().getChildFile ("../../ArduinoOutput").findChildFiles (File::findFiles, true, "ArduinoOutput.*", File::FollowSymlinks::no);
1616
#endif
1717

18-
ASSERT_EQ (files.size(), 1) << "Arduino Ouput plugin not found. Make sure to build the plugin tests before running the tests.";
18+
ASSERT_GT (files.size(), 1) << "Arduino Ouput plugin not found. Make sure to build the plugin tests before running the tests.";
1919

2020
String path = files[0].getFullPathName();
2121

0 commit comments

Comments
 (0)