WE Core
Loading...
Searching...
No Matches
RichterLFOPairTests.cpp
Go to the documentation of this file.
1/*
2 * File: RichterLFOPairTests.cpp
3 *
4 * Created: 26/12/2016
5 *
6 * This file is part of WECore.
7 *
8 * WECore is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation, either version 3 of the License, or
11 * (at your option) any later version.
12 *
13 * WECore is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with WECore. If not, see <http://www.gnu.org/licenses/>.
20 */
21
22#include "catch.hpp"
24
25SCENARIO("RichterLFOPair: Parameters can be set and retrieved correctly") {
26 GIVEN("A new RichterLFOPair object") {
28
29 WHEN("Nothing is changed") {
30 THEN("Parameters have their default values") {
31 CHECK(mLFOPair.LFO.getBypassSwitch() == false);
32 CHECK(mLFOPair.LFO.getPhaseSyncSwitch() == true);
33 CHECK(mLFOPair.LFO.getTempoSyncSwitch() == false);
34 CHECK(mLFOPair.LFO.getInvertSwitch() == false);
35 CHECK(mLFOPair.LFO.getWave() == 1);
36 CHECK(mLFOPair.LFO.getOutputMode() == 2);
37 CHECK(mLFOPair.LFO.getDepth() == Approx(0.5));
38 CHECK(mLFOPair.LFO.getFreq() == Approx(2.0));
39 CHECK(mLFOPair.LFO.getManualPhase() == Approx(0.0));
40 CHECK(mLFOPair.LFO.getTempoNumer() == Approx(1.0));
41 CHECK(mLFOPair.LFO.getTempoDenom() == Approx(1.0));
42
43 CHECK(mLFOPair.MOD->getBypassSwitch() == false);
44 CHECK(mLFOPair.MOD->getPhaseSyncSwitch() == true);
45 CHECK(mLFOPair.MOD->getTempoSyncSwitch() == false);
46 CHECK(mLFOPair.MOD->getInvertSwitch() == false);
47 CHECK(mLFOPair.MOD->getWave() == 1);
48 CHECK(mLFOPair.MOD->getOutputMode() == 2);
49 CHECK(mLFOPair.MOD->getDepth() == Approx(0.5));
50 CHECK(mLFOPair.MOD->getFreq() == Approx(2.0));
51 CHECK(mLFOPair.MOD->getManualPhase() == Approx(0.0));
52 CHECK(mLFOPair.MOD->getTempoNumer() == Approx(1.0));
53 CHECK(mLFOPair.MOD->getTempoDenom() == Approx(1.0));
54 }
55 }
56
57 WHEN("All parameters are changed to unique values") {
58 mLFOPair.LFO.setBypassSwitch(true);
59 mLFOPair.LFO.setPhaseSyncSwitch(false);
60 mLFOPair.LFO.setTempoSyncSwitch(true);
61 mLFOPair.LFO.setInvertSwitch(true);
62 mLFOPair.LFO.setWave(2);
63 mLFOPair.LFO.setOutputMode(1);
64 mLFOPair.LFO.setDepth(0.1);
65 mLFOPair.LFO.setFreq(3);
66 mLFOPair.LFO.setManualPhase(0.5);
67 mLFOPair.LFO.setTempoNumer(2);
68 mLFOPair.LFO.setTempoDenom(3);
69
70 mLFOPair.MOD->setBypassSwitch(true);
71 mLFOPair.MOD->setPhaseSyncSwitch(true);
72 mLFOPair.MOD->setTempoSyncSwitch(true);
73 mLFOPair.MOD->setInvertSwitch(true);
74 mLFOPair.MOD->setWave(3);
75 mLFOPair.MOD->setOutputMode(1);
76 mLFOPair.MOD->setDepth(0.5);
77 mLFOPair.MOD->setFreq(6);
78 mLFOPair.MOD->setManualPhase(0.7);
79 mLFOPair.MOD->setTempoNumer(3);
80 mLFOPair.MOD->setTempoDenom(4);
81
82 THEN("They all get their correct unique values") {
83 CHECK(mLFOPair.LFO.getBypassSwitch() == true);
84 CHECK(mLFOPair.LFO.getPhaseSyncSwitch() == false);
85 CHECK(mLFOPair.LFO.getTempoSyncSwitch() == true);
86 CHECK(mLFOPair.LFO.getInvertSwitch() == true);
87 CHECK(mLFOPair.LFO.getWave() == 2);
88 CHECK(mLFOPair.LFO.getOutputMode() == 1);
89 CHECK(mLFOPair.LFO.getDepth() == Approx(0.1));
90 CHECK(mLFOPair.LFO.getFreq() == Approx(3.0));
91 CHECK(mLFOPair.LFO.getManualPhase() == Approx(0.5));
92 CHECK(mLFOPair.LFO.getTempoNumer() == Approx(2.0));
93 CHECK(mLFOPair.LFO.getTempoDenom() == Approx(3.0));
94
95 CHECK(mLFOPair.MOD->getBypassSwitch() == true);
96 CHECK(mLFOPair.MOD->getPhaseSyncSwitch() == true);
97 CHECK(mLFOPair.MOD->getTempoSyncSwitch() == true);
98 CHECK(mLFOPair.MOD->getInvertSwitch() == true);
99 CHECK(mLFOPair.MOD->getWave() == 3);
100 CHECK(mLFOPair.MOD->getOutputMode() == 1);
101 CHECK(mLFOPair.MOD->getDepth() == Approx(0.5));
102 CHECK(mLFOPair.MOD->getFreq() == Approx(6.0));
103 CHECK(mLFOPair.MOD->getManualPhase() == Approx(0.7));
104 CHECK(mLFOPair.MOD->getTempoNumer() == Approx(3.0));
105 CHECK(mLFOPair.MOD->getTempoDenom() == Approx(4.0));
106 }
107 }
108 }
109}
110
111SCENARIO("RichterLFOPair: Parameters enforce their bounds correctly") {
112 GIVEN("A new RichterLFOPair object") {
114
115 WHEN("All parameter values are too low") {
116 mLFOPair.LFO.setWave(-5);
117 mLFOPair.LFO.setOutputMode(-5);
118 mLFOPair.LFO.setDepth(-5);
119 mLFOPair.LFO.setFreq(-5);
120 mLFOPair.LFO.setManualPhase(-5);
121 mLFOPair.LFO.setTempoNumer(-5);
122 mLFOPair.LFO.setTempoDenom(-5);
123
124 mLFOPair.MOD->setWave(-5);
125 mLFOPair.MOD->setOutputMode(-5);
126 mLFOPair.MOD->setDepth(-5);
127 mLFOPair.MOD->setFreq(-5);
128 mLFOPair.MOD->setManualPhase(-5);
129 mLFOPair.MOD->setTempoNumer(-5);
130 mLFOPair.MOD->setTempoDenom(-5);
131
132 THEN("Parameters enforce their lower bounds") {
133 CHECK(mLFOPair.LFO.getWave() == 1);
134 CHECK(mLFOPair.LFO.getOutputMode() == 1);
135 CHECK(mLFOPair.LFO.getDepth() == Approx(0.0));
136 CHECK(mLFOPair.LFO.getFreq() == Approx(0.0));
137 CHECK(mLFOPair.LFO.getManualPhase() == Approx(0.0));
138 CHECK(mLFOPair.LFO.getTempoNumer() == Approx(1.0));
139 CHECK(mLFOPair.LFO.getTempoDenom() == Approx(1.0));
140
141 CHECK(mLFOPair.MOD->getWave() == 1);
142 CHECK(mLFOPair.MOD->getOutputMode() == 1);
143 CHECK(mLFOPair.MOD->getDepth() == Approx(0.0));
144 CHECK(mLFOPair.MOD->getFreq() == Approx(0.0));
145 CHECK(mLFOPair.MOD->getManualPhase() == Approx(0.0));
146 CHECK(mLFOPair.MOD->getTempoNumer() == Approx(1.0));
147 CHECK(mLFOPair.MOD->getTempoDenom() == Approx(1.0));
148 }
149 }
150
151 WHEN("All parameter values are too high") {
152 mLFOPair.LFO.setWave(100);
153 mLFOPair.LFO.setOutputMode(100);
154 mLFOPair.LFO.setDepth(100);
155 mLFOPair.LFO.setFreq(100);
156 mLFOPair.LFO.setManualPhase(10000);
157 mLFOPair.LFO.setTempoNumer(100);
158 mLFOPair.LFO.setTempoDenom(100);
159
160 mLFOPair.MOD->setWave(100);
161 mLFOPair.MOD->setOutputMode(100);
162 mLFOPair.MOD->setDepth(100);
163 mLFOPair.MOD->setFreq(100);
164 mLFOPair.MOD->setManualPhase(10000);
165 mLFOPair.MOD->setTempoNumer(100);
166 mLFOPair.MOD->setTempoDenom(100);
167
168 THEN("Parameters enforce their upper bounds") {
169 CHECK(mLFOPair.LFO.getWave() == 4);
170 CHECK(mLFOPair.LFO.getOutputMode() == 2);
171 CHECK(mLFOPair.LFO.getDepth() == Approx(1.0));
172 CHECK(mLFOPair.LFO.getFreq() == Approx(20.0));
173 CHECK(mLFOPair.LFO.getManualPhase() == Approx(360.0));
174 CHECK(mLFOPair.LFO.getTempoNumer() == Approx(32.0));
175 CHECK(mLFOPair.LFO.getTempoDenom() == Approx(32.0));
176
177 CHECK(mLFOPair.MOD->getWave() == 4);
178 CHECK(mLFOPair.MOD->getOutputMode() == 2);
179 CHECK(mLFOPair.MOD->getDepth() == Approx(1.0));
180 CHECK(mLFOPair.MOD->getFreq() == Approx(20.0));
181 CHECK(mLFOPair.MOD->getManualPhase() == Approx(360.0));
182 CHECK(mLFOPair.MOD->getTempoNumer() == Approx(32.0));
183 CHECK(mLFOPair.MOD->getTempoDenom() == Approx(32.0));
184 }
185 }
186 }
187}
SCENARIO("CarveNoiseFilter: Silence in = silence out")
bool getTempoSyncSwitch() const
Definition RichterLFO.h:64
void setTempoSyncSwitch(bool val)
Definition RichterLFO.h:82
void setTempoDenom(int val)
Definition RichterLFO.h:87
bool getPhaseSyncSwitch() const
Definition RichterLFO.h:63
void setOutputMode(int val)
Definition RichterLFO.h:85
void setInvertSwitch(bool val)
Definition RichterLFO.h:83
void setManualPhase(double val)
Definition RichterLFO.h:90
double getTempoNumer() const
Definition RichterLFO.h:68
void setTempoNumer(int val)
Definition RichterLFO.h:86
double getManualPhase() const
Definition RichterLFO.h:74
void setPhaseSyncSwitch(bool val)
Definition RichterLFO.h:81
double getTempoDenom() const
Definition RichterLFO.h:69
void setDepth(double val)
Definition RichterLFO.h:89
void setBypassSwitch(bool val)
Definition RichterLFO.h:80
void setFreq(double val)
Definition RichterLFO.h:88
std::shared_ptr< RichterLFO > MOD