26SCENARIO(
"CarveDSPUnit: Silence in = silence out") {
27 GIVEN(
"A CarveDSPUnit and a buffer of silent samples") {
28 std::vector<double> buffer(1024);
31 WHEN(
"The silence samples are processed") {
33 std::fill(buffer.begin(), buffer.end(), 0);
39 for (
size_t iii {0}; iii < buffer.size(); iii++) {
40 buffer[iii] = mCarve.
process(buffer[iii]);
43 THEN(
"The output is silence") {
44 for (
size_t iii {0}; iii < buffer.size(); iii++) {
45 CHECK(buffer[iii] == Approx(0.0));
53 GIVEN(
"A CarveDSPUnit and a buffer of sine samples") {
54 std::vector<double> buffer(1024);
55 const std::vector<double>& expectedOutput =
61 constexpr size_t SAMPLE_RATE {44100};
62 constexpr size_t SINE_FREQ {1000};
63 constexpr double SAMPLES_PER_CYCLE {SAMPLE_RATE / SINE_FREQ};
65 WHEN(
"The silence samples are processed") {
67 std::generate(buffer.begin(),
69 [iii = 0]()
mutable {return std::sin(WECore::CoreMath::LONG_TAU * (iii++ / SAMPLES_PER_CYCLE));} );
75 for (
size_t iii {0}; iii < buffer.size(); iii++) {
76 buffer[iii] = mCarve.
process(buffer[iii]);
79 THEN(
"The expected output is produced") {
80 for (
size_t iii {0}; iii < buffer.size(); iii++) {
81 CHECK(buffer[iii] == Approx(expectedOutput[iii]).margin(0.00001));
88SCENARIO(
"CarveDSPUnit: Parabolic Soft Default") {
89 GIVEN(
"A CarveDSPUnit and a buffer of sine samples") {
90 std::vector<double> buffer(1024);
91 const std::vector<double>& expectedOutput =
97 constexpr size_t SAMPLE_RATE {44100};
98 constexpr size_t SINE_FREQ {1000};
99 constexpr double SAMPLES_PER_CYCLE {SAMPLE_RATE / SINE_FREQ};
101 WHEN(
"The silence samples are processed") {
103 std::generate(buffer.begin(),
105 [iii = 0]()
mutable {return std::sin(WECore::CoreMath::LONG_TAU * (iii++ / SAMPLES_PER_CYCLE));} );
111 for (
size_t iii {0}; iii < buffer.size(); iii++) {
112 buffer[iii] = mCarve.
process(buffer[iii]);
115 THEN(
"The expected output is produced") {
116 for (
size_t iii {0}; iii < buffer.size(); iii++) {
117 CHECK(buffer[iii] == Approx(expectedOutput[iii]).margin(0.00001));
125 GIVEN(
"A CarveDSPUnit and a buffer of sine samples") {
126 std::vector<double> buffer(1024);
127 const std::vector<double>& expectedOutput =
133 constexpr size_t SAMPLE_RATE {44100};
134 constexpr size_t SINE_FREQ {1000};
135 constexpr double SAMPLES_PER_CYCLE {SAMPLE_RATE / SINE_FREQ};
137 WHEN(
"The silence samples are processed") {
139 std::generate(buffer.begin(),
141 [iii = 0]()
mutable {return std::sin(WECore::CoreMath::LONG_TAU * (iii++ / SAMPLES_PER_CYCLE));} );
147 for (
size_t iii {0}; iii < buffer.size(); iii++) {
148 buffer[iii] = mCarve.
process(buffer[iii]);
151 THEN(
"The expected output is produced") {
152 for (
size_t iii {0}; iii < buffer.size(); iii++) {
153 CHECK(buffer[iii] == Approx(expectedOutput[iii]).margin(0.00001));
161 GIVEN(
"A CarveDSPUnit and a buffer of sine samples") {
162 std::vector<double> buffer(1024);
163 const std::vector<double>& expectedOutput =
169 constexpr size_t SAMPLE_RATE {44100};
170 constexpr size_t SINE_FREQ {1000};
171 constexpr double SAMPLES_PER_CYCLE {SAMPLE_RATE / SINE_FREQ};
173 WHEN(
"The silence samples are processed") {
175 std::generate(buffer.begin(),
177 [iii = 0]()
mutable {return std::sin(WECore::CoreMath::LONG_TAU * (iii++ / SAMPLES_PER_CYCLE));} );
183 for (
size_t iii {0}; iii < buffer.size(); iii++) {
184 buffer[iii] = mCarve.
process(buffer[iii]);
187 THEN(
"The expected output is produced") {
188 for (
size_t iii {0}; iii < buffer.size(); iii++) {
189 CHECK(buffer[iii] == Approx(expectedOutput[iii]).margin(0.00001));
197 GIVEN(
"A CarveDSPUnit and a buffer of sine samples") {
198 std::vector<double> buffer(1024);
199 const std::vector<double>& expectedOutput =
205 constexpr size_t SAMPLE_RATE {44100};
206 constexpr size_t SINE_FREQ {1000};
207 constexpr double SAMPLES_PER_CYCLE {SAMPLE_RATE / SINE_FREQ};
209 WHEN(
"The silence samples are processed") {
211 std::generate(buffer.begin(),
213 [iii = 0]()
mutable {return std::sin(WECore::CoreMath::LONG_TAU * (iii++ / SAMPLES_PER_CYCLE));} );
219 for (
size_t iii {0}; iii < buffer.size(); iii++) {
220 buffer[iii] = mCarve.
process(buffer[iii]);
223 THEN(
"The expected output is produced") {
224 for (
size_t iii {0}; iii < buffer.size(); iii++) {
225 CHECK(buffer[iii] == Approx(expectedOutput[iii]).margin(0.00001));
233 GIVEN(
"A CarveDSPUnit and a buffer of sine samples") {
234 std::vector<double> buffer(1024);
235 const std::vector<double>& expectedOutput =
241 constexpr size_t SAMPLE_RATE {44100};
242 constexpr size_t SINE_FREQ {1000};
243 constexpr double SAMPLES_PER_CYCLE {SAMPLE_RATE / SINE_FREQ};
245 WHEN(
"The silence samples are processed") {
247 std::generate(buffer.begin(),
249 [iii = 0]()
mutable {return std::sin(WECore::CoreMath::LONG_TAU * (iii++ / SAMPLES_PER_CYCLE));} );
255 for (
size_t iii {0}; iii < buffer.size(); iii++) {
256 buffer[iii] = mCarve.
process(buffer[iii]);
259 THEN(
"The expected output is produced") {
260 for (
size_t iii {0}; iii < buffer.size(); iii++) {
261 CHECK(buffer[iii] == Approx(expectedOutput[iii]).margin(0.00001));