Jamoma API  0.6.0.a19
TTCubicEaseInFunction.test.cpp
Go to the documentation of this file.
1 /** @file
2  *
3  * @ingroup dspFunctionLib
4  *
5  * @brief Unit tests for the Jamoma DSP #TTCubicEaseInFunction of the #TTFunctionLib
6  *
7  * @details Derived from Sam Hocevar's public domain C/C++ implementation of Robert Penner easing functions
8  *
9  * @authors Trond Lossius
10  *
11  * @copyright Copyright © 2014 by Trond Lossius @n
12  * This code is licensed under the terms of the "New BSD License" @n
13  * http://creativecommons.org/licenses/BSD/
14  */
15 
16 
17 #include "TTFunction.h"
18 #include "TTCubicEaseInFunction.h"
19 
20 
21 /*
22  * coefficients calculated in Octave using:
23 
24  x = linspace(0,1,128);
25  y = x .* x .* x;
26  printf("%.16e,\n", y)
27  plot (x, y)
28 
29  */
30 
32 {
33  int errorCount = 0;
34  int testAssertionCount = 0;
35  int badSampleCount = 0;
36  TTAudioSignalPtr input = NULL;
37  TTAudioSignalPtr output = NULL;
38  int N = 128;
39  TTValue v;
40 
41 
42  TTFloat64 inputSignal1[128] = {
43  0.0000000000000000e+00,
44  7.8740157480314960e-03,
45  1.5748031496062992e-02,
46  2.3622047244094488e-02,
47  3.1496062992125984e-02,
48  3.9370078740157480e-02,
49  4.7244094488188976e-02,
50  5.5118110236220472e-02,
51  6.2992125984251968e-02,
52  7.0866141732283464e-02,
53  7.8740157480314960e-02,
54  8.6614173228346455e-02,
55  9.4488188976377951e-02,
56  1.0236220472440945e-01,
57  1.1023622047244094e-01,
58  1.1811023622047244e-01,
59  1.2598425196850394e-01,
60  1.3385826771653542e-01,
61  1.4173228346456693e-01,
62  1.4960629921259844e-01,
63  1.5748031496062992e-01,
64  1.6535433070866140e-01,
65  1.7322834645669291e-01,
66  1.8110236220472442e-01,
67  1.8897637795275590e-01,
68  1.9685039370078738e-01,
69  2.0472440944881889e-01,
70  2.1259842519685040e-01,
71  2.2047244094488189e-01,
72  2.2834645669291337e-01,
73  2.3622047244094488e-01,
74  2.4409448818897639e-01,
75  2.5196850393700787e-01,
76  2.5984251968503935e-01,
77  2.6771653543307083e-01,
78  2.7559055118110237e-01,
79  2.8346456692913385e-01,
80  2.9133858267716534e-01,
81  2.9921259842519687e-01,
82  3.0708661417322836e-01,
83  3.1496062992125984e-01,
84  3.2283464566929132e-01,
85  3.3070866141732280e-01,
86  3.3858267716535434e-01,
87  3.4645669291338582e-01,
88  3.5433070866141730e-01,
89  3.6220472440944884e-01,
90  3.7007874015748032e-01,
91  3.7795275590551181e-01,
92  3.8582677165354329e-01,
93  3.9370078740157477e-01,
94  4.0157480314960631e-01,
95  4.0944881889763779e-01,
96  4.1732283464566927e-01,
97  4.2519685039370081e-01,
98  4.3307086614173229e-01,
99  4.4094488188976377e-01,
100  4.4881889763779526e-01,
101  4.5669291338582674e-01,
102  4.6456692913385828e-01,
103  4.7244094488188976e-01,
104  4.8031496062992124e-01,
105  4.8818897637795278e-01,
106  4.9606299212598426e-01,
107  5.0393700787401574e-01,
108  5.1181102362204722e-01,
109  5.1968503937007871e-01,
110  5.2755905511811019e-01,
111  5.3543307086614167e-01,
112  5.4330708661417326e-01,
113  5.5118110236220474e-01,
114  5.5905511811023623e-01,
115  5.6692913385826771e-01,
116  5.7480314960629919e-01,
117  5.8267716535433067e-01,
118  5.9055118110236215e-01,
119  5.9842519685039375e-01,
120  6.0629921259842523e-01,
121  6.1417322834645671e-01,
122  6.2204724409448819e-01,
123  6.2992125984251968e-01,
124  6.3779527559055116e-01,
125  6.4566929133858264e-01,
126  6.5354330708661412e-01,
127  6.6141732283464560e-01,
128  6.6929133858267720e-01,
129  6.7716535433070868e-01,
130  6.8503937007874016e-01,
131  6.9291338582677164e-01,
132  7.0078740157480313e-01,
133  7.0866141732283461e-01,
134  7.1653543307086609e-01,
135  7.2440944881889768e-01,
136  7.3228346456692917e-01,
137  7.4015748031496065e-01,
138  7.4803149606299213e-01,
139  7.5590551181102361e-01,
140  7.6377952755905509e-01,
141  7.7165354330708658e-01,
142  7.7952755905511806e-01,
143  7.8740157480314954e-01,
144  7.9527559055118113e-01,
145  8.0314960629921262e-01,
146  8.1102362204724410e-01,
147  8.1889763779527558e-01,
148  8.2677165354330706e-01,
149  8.3464566929133854e-01,
150  8.4251968503937003e-01,
151  8.5039370078740162e-01,
152  8.5826771653543310e-01,
153  8.6614173228346458e-01,
154  8.7401574803149606e-01,
155  8.8188976377952755e-01,
156  8.8976377952755903e-01,
157  8.9763779527559051e-01,
158  9.0551181102362199e-01,
159  9.1338582677165348e-01,
160  9.2125984251968507e-01,
161  9.2913385826771655e-01,
162  9.3700787401574803e-01,
163  9.4488188976377951e-01,
164  9.5275590551181100e-01,
165  9.6062992125984248e-01,
166  9.6850393700787396e-01,
167  9.7637795275590555e-01,
168  9.8425196850393704e-01,
169  9.9212598425196852e-01,
170  1.0000000000000000e+00
171  };
172 
173 
174  TTFloat64 expectedSignal1[128] = {
175  0.0000000000000000e+00,
176  4.8818995275785818e-07,
177  3.9055196220628655e-06,
178  1.3181128724462172e-05,
179  3.1244156976502924e-05,
180  6.1023744094732284e-05,
181  1.0544902979569738e-04,
182  1.6744915379594540e-04,
183  2.4995325581202339e-04,
184  3.5589047556047867e-04,
185  4.8818995275785827e-04,
186  6.4978082712070936e-04,
187  8.4359223836557901e-04,
188  1.0725533262090146e-03,
189  1.3395932303675632e-03,
190  1.6476410905577716e-03,
191  1.9996260464961871e-03,
192  2.3984772378993569e-03,
193  2.8471238044838294e-03,
194  3.3484948859661507e-03,
195  3.9055196220628662e-03,
196  4.5211271524905243e-03,
197  5.1982466169656748e-03,
198  5.9398071552048621e-03,
199  6.7487379069246321e-03,
200  7.6279680118415336e-03,
201  8.5804266096721170e-03,
202  9.6090428401329267e-03,
203  1.0716745842940505e-02,
204  1.1906464757811402e-02,
205  1.3181128724462173e-02,
206  1.4543666882609357e-02,
207  1.5997008371969497e-02,
208  1.7544082332259150e-02,
209  1.9187817903194855e-02,
210  2.0931144224493176e-02,
211  2.2776990435870635e-02,
212  2.4728285677043792e-02,
213  2.6787959087729206e-02,
214  2.8958939807643396e-02,
215  3.1244156976502929e-02,
216  3.3646539734024344e-02,
217  3.6169017219924195e-02,
218  3.8814518573919043e-02,
219  4.1585972935725399e-02,
220  4.4486309445059831e-02,
221  4.7518457241638896e-02,
222  5.0685345465179117e-02,
223  5.3989903255397056e-02,
224  5.7435059752009264e-02,
225  6.1023744094732268e-02,
226  6.4758885423282661e-02,
227  6.8643412877376936e-02,
228  7.2680255596731649e-02,
229  7.6872342721063414e-02,
230  8.1222603390088674e-02,
231  8.5733966743524043e-02,
232  9.0409361921086034e-02,
233  9.5251718062491220e-02,
234  1.0026396430745617e-01,
235  1.0544902979569738e-01,
236  1.1080984366693142e-01,
237  1.1634933506087486e-01,
238  1.2207043311724419e-01,
239  1.2797606697575598e-01,
240  1.3406916577612682e-01,
241  1.4035265865807320e-01,
242  1.4682947476131170e-01,
243  1.5350254322555884e-01,
244  1.6037479319053127e-01,
245  1.6744915379594541e-01,
246  1.7472855418151781e-01,
247  1.8221592348696508e-01,
248  1.8991419085200373e-01,
249  1.9782628541635033e-01,
250  2.0595513631972140e-01,
251  2.1430367270183365e-01,
252  2.2287482370240336e-01,
253  2.3167151846114717e-01,
254  2.4069668611778169e-01,
255  2.4995325581202343e-01,
256  2.5944415668358894e-01,
257  2.6917231787219476e-01,
258  2.7914066851755742e-01,
259  2.8935213775939356e-01,
260  2.9980965473741972e-01,
261  3.1051614859135235e-01,
262  3.2147454846090795e-01,
263  3.3268778348580319e-01,
264  3.4415878280575457e-01,
265  3.5589047556047865e-01,
266  3.6788579088969192e-01,
267  3.8014765793311117e-01,
268  3.9267900583045262e-01,
269  4.0548276372143294e-01,
270  4.1856186074576873e-01,
271  4.3191922604317645e-01,
272  4.4555778875337276e-01,
273  4.5948047801607411e-01,
274  4.7369022297099700e-01,
275  4.8818995275785815e-01,
276  5.0298259651637423e-01,
277  5.1807108338626129e-01,
278  5.3345834250723623e-01,
279  5.4914730301901549e-01,
280  5.6514089406131562e-01,
281  5.8144204477385319e-01,
282  5.9805368429634487e-01,
283  6.1497874176850731e-01,
284  6.3222014633005652e-01,
285  6.4978082712070939e-01,
286  6.6766371328018248e-01,
287  6.8587173394819234e-01,
288  7.0440781826445531e-01,
289  7.2327489536868828e-01,
290  7.4247589440060757e-01,
291  7.6201374449992976e-01,
292  7.8189137480637172e-01,
293  8.0211171445964935e-01,
294  8.2267769259947976e-01,
295  8.4359223836557906e-01,
296  8.6485828089766414e-01,
297  8.8647874933545134e-01,
298  9.0845657281865733e-01,
299  9.3079468048699887e-01,
300  9.5349600148019209e-01,
301  9.7656346493795354e-01,
302  1.0000000000000000e+00
303  };
304 
305  // setup Function
306  this->setAttributeValue(TT("function"), TT("easeInCubic"));
307 
308 
309  // create 1 channel audio signal objects
310  TTObjectBaseInstantiate(kTTSym_audiosignal, &input, 1);
311  TTObjectBaseInstantiate(kTTSym_audiosignal, &output, 1);
312  input->allocWithVectorSize(N);
313  output->allocWithVectorSize(N);
314 
315  // create a signal to be transformed and then process it)
316  input->clear();
317  for (int i=0; i<N; i++)
318  input->mSampleVectors[0][i] = inputSignal1[i];
319 
320  this->process(input, output);
321 
322  // now test the output
323  for (int n=0; n<N; n++)
324  {
325  TTBoolean result = !TTTestFloatEquivalence(output->mSampleVectors[0][n], expectedSignal1[n]);
326  badSampleCount += result;
327  if (result)
328  TTTestLog("BAD SAMPLE @ n=%i ( value=%.10f expected=%.10f )", n, output->mSampleVectors[0][n], expectedSignal1[n]);
329  }
330 
331  TTTestAssertion("Produces correct function values",
332  badSampleCount == 0,
333  testAssertionCount,
334  errorCount);
335  if (badSampleCount)
336  TTTestLog("badSampleCount is %i", badSampleCount);
337 
338 
339  TTObjectBaseRelease(&input);
340  TTObjectBaseRelease(&output);
341 
342  // wrap up test results and pass back to whoever called test
343  return TTTestFinish(testAssertionCount, errorCount, returnedTestInfo);
344 
345 }
bool TTBoolean
Boolean flag, same as Boolean on the Mac.
Definition: TTBase.h:167
TTErr TTObjectBaseRelease(TTObjectBasePtr *anObject)
DEPRECATED.
TTCubicEaseInFunction Unit for Jamoms DSP
TTErr setAttributeValue(const TTSymbol name, TTValue &value)
Set an attribute value for an object.
double TTFloat64
64 bit floating point number
Definition: TTBase.h:188
#define TT
This macro is defined as a shortcut for doing a lookup in the symbol table.
Definition: TTSymbol.h:155
TTErr clear()
Zero out all of the sample values in the audio signal.
TTErr TTObjectBaseInstantiate(const TTSymbol className, TTObjectBasePtr *returnedObjectPtr, const TTValue arguments)
DEPRECATED.
The TTAudioSignal class represents N vectors of audio samples for M channels.
Definition: TTAudioSignal.h:57
TTSampleValue ** mSampleVectors
An array of pointers to the first sample in each vector. Declared Public for fast access...
Definition: TTAudioSignal.h:74
TTErr
Jamoma Error Codes Enumeration of error codes that might be returned by any of the TTBlue functions a...
Definition: TTBase.h:342
TTFunction is a generalized function wrapper for Jamoma DSP
TTErr allocWithVectorSize(const TTUInt16 newVectorSize)
Allocate memory for all channels at the specified vectorsize, if the vectorsize is different from the...
[doxygenAppendixC_copyExample]
Definition: TTValue.h:34
virtual TTErr test(TTValue &returnedTestInfo)
Unit Tests.