Sine_UnitTest.cc File Reference

#include <Nsound/Buffer.h>
#include <Nsound/Plotter.h>
#include <Nsound/Sine.h>
#include <Nsound/Wavefile.h>
#include "UnitTest.h"
#include <cmath>
#include <stdlib.h>
#include <iostream>
Include dependency graph for Sine_UnitTest.cc:

Go to the source code of this file.

Functions

void Sine_UnitTest ()

Variables

static const char * THIS_FILE = "Sine_UnitTest.cc"
static const float64 GAMMA = 1.5e-14

Function Documentation

void Sine_UnitTest (  ) 

Definition at line 51 of file Sine_UnitTest.cc.

References Nsound::Buffer::abs(), Nsound::Generator::drawLine(), GAMMA, Nsound::Generator::generate(), Nsound::Generator::generate2(), Nsound::Buffer::getMax(), Nsound::Buffer::plot(), Nsound::Generator::setChorus(), Nsound::Generator::setSeed(), SUCCESS, TEST_ERROR_HEADER, TEST_HEADER, and THIS_FILE.

Referenced by main().

00052 {
00053     cout << endl << THIS_FILE;
00054 
00055     Wavefile::setDefaultSampleSize(64);
00056     Wavefile::setIEEEFloat(true);
00057 
00058     Sine sine(600);
00059 
00060     Buffer freqs;
00061     Buffer phase;
00062 
00063     freqs << sine.drawLine(1.0, 0.0, 10.0);
00064     phase << sine.drawLine(1.0, 0.0, 1.0);
00065 
00067     cout << TEST_HEADER << "Testing Sine::generate(1.0, 3.0) ...";
00068 
00069     Buffer data = sine.generate(1.0, 3.0);
00070 
00071     // Create the gold file
00072 //~    data >> "gold/Sine_1.wav";
00073 
00074     Buffer gold;
00075 
00076     gold << "gold/Sine_1.wav";
00077 
00078     Buffer diff = data - gold;
00079 
00080     Buffer abs_diff(diff);
00081     abs_diff.abs();
00082 
00083     if(abs_diff.getMax() > GAMMA)
00084     {
00085         cerr << TEST_ERROR_HEADER
00086              << "Output did not match gold file!"
00087              << endl;
00088 
00089         diff.plot("data - gold");
00090         data.plot("data");
00091         gold.plot("gold");
00092 
00093         Plotter::show();
00094 
00095         exit(1);
00096     }
00097 
00098     cout << SUCCESS;
00099 
00101     // Test 3.5 Hz wave
00102     cout << TEST_HEADER << "Testing Sine::generate(1.0, freqs) ...";
00103 
00104     data = sine.generate(1.0, freqs);
00105 
00106     // Create the gold file
00107 //~    data >> "gold/Sine_2.wav";
00108 
00109     gold = Buffer();
00110 
00111     gold << "gold/Sine_2.wav";
00112 
00113     diff = data - gold;
00114 
00115     abs_diff = diff;
00116     abs_diff.abs();
00117 
00118     if(abs_diff.getMax() > GAMMA)
00119     {
00120         cerr << TEST_ERROR_HEADER
00121              << "Output did not match gold file!"
00122              << endl;
00123 
00124         diff.plot("data - gold");
00125         data.plot("data");
00126         gold.plot("gold");
00127 
00128         Plotter::show();
00129 
00130         exit(1);
00131     }
00132 
00133     cout << SUCCESS;
00134 
00136     // Test dynamic
00137     cout << TEST_HEADER << "Testing Sine::generate2(1.0, 3.0, 0.5) ...";
00138 
00139     data = sine.generate2(1.0, 3.0, 0.5);
00140 
00141     // Create the gold file
00142 //~    data >> "gold/Sine_3.wav";
00143 
00144     gold = Buffer();
00145 
00146     gold << "gold/Sine_3.wav";
00147 
00148     diff = data - gold;
00149 
00150     abs_diff = diff;
00151     abs_diff.abs();
00152 
00153     if(abs_diff.getMax() > GAMMA)
00154     {
00155         cerr << TEST_ERROR_HEADER
00156              << "Output did not match gold file!"
00157              << endl;
00158 
00159         diff.plot("data - gold");
00160         data.plot("data");
00161         gold.plot("gold");
00162 
00163         Plotter::show();
00164 
00165         exit(1);
00166     }
00167 
00168     cout << SUCCESS;
00169 
00171     // Test dynamic
00172     cout << TEST_HEADER << "Testing Sine::generate2(1.0, 3.0, phase) ...";
00173 
00174     data = sine.generate2(1.0, 3.0, phase);
00175 
00176     // Create the gold file
00177 //~    data >> "gold/Sine_4.wav";
00178 
00179     gold = Buffer();
00180 
00181     gold << "gold/Sine_4.wav";
00182 
00183     diff = data - gold;
00184 
00185     abs_diff = diff;
00186     abs_diff.abs();
00187 
00188     if(abs_diff.getMax() > GAMMA)
00189     {
00190         cerr << TEST_ERROR_HEADER
00191              << "Output did not match gold file!"
00192              << endl;
00193 
00194         diff.plot("data - gold");
00195         data.plot("data");
00196         gold.plot("gold");
00197 
00198         Plotter::show();
00199 
00200         exit(1);
00201     }
00202 
00203     cout << SUCCESS;
00204 
00206     // Test dynamic
00207     cout << TEST_HEADER << "Testing Sine::generate2(1.0, freqs, 0.5) ...";
00208 
00209     data = sine.generate2(1.0, freqs, 0.5);
00210 
00211     // Create the gold file
00212 //~    data >> "gold/Sine_5.wav";
00213 
00214     gold = Buffer();
00215 
00216     gold << "gold/Sine_5.wav";
00217 
00218     diff = data - gold;
00219 
00220     abs_diff = diff;
00221     abs_diff.abs();
00222 
00223     if(abs_diff.getMax() > GAMMA)
00224     {
00225         cerr << TEST_ERROR_HEADER
00226              << "Output did not match gold file!"
00227              << endl;
00228 
00229         diff.plot("data - gold");
00230         data.plot("data");
00231         gold.plot("gold");
00232 
00233         Plotter::show();
00234 
00235         exit(1);
00236     }
00237 
00238     cout << SUCCESS;
00239 
00241     // Test dynamic
00242     cout << TEST_HEADER << "Testing Sine::generate2(1.0, freqs, phase) ...";
00243 
00244     data = sine.generate2(1.0, freqs, phase);
00245 
00246     // Create the gold file
00247 //~    data >> "gold/Sine_6.wav";
00248 
00249     gold = Buffer();
00250 
00251     gold << "gold/Sine_6.wav";
00252 
00253     diff = data - gold;
00254 
00255     abs_diff = diff;
00256     abs_diff.abs();
00257 
00258     if(abs_diff.getMax() > GAMMA)
00259     {
00260         cerr << TEST_ERROR_HEADER
00261              << "Output did not match gold file!"
00262              << endl;
00263 
00264         diff.plot("data - gold");
00265         data.plot("data");
00266         gold.plot("gold");
00267 
00268         Plotter::show();
00269 
00270         exit(1);
00271     }
00272 
00273     cout << SUCCESS;
00274 
00276     // Test dynamic
00277     cout << TEST_HEADER << "Testing Sine::setChorus(5,0.10) ...";
00278 
00279     sine.setSeed(6846513); // Some random seed I typed in.
00280 
00281     sine.setChorus(5, 0.10);
00282 
00283     data = sine.generate2(1.0, 2*freqs, phase);
00284 
00285     // Create the gold file
00286 //~    data >> "gold/Sine_7.wav";
00287 
00288     gold = Buffer();
00289 
00290     gold << "gold/Sine_7.wav";
00291 
00292     diff = data - gold;
00293 
00294     abs_diff = diff;
00295     abs_diff.abs();
00296 
00297     if(abs_diff.getMax() > GAMMA)
00298     {
00299         cerr << TEST_ERROR_HEADER
00300              << "Output did not match gold file!"
00301              << endl;
00302 
00303         diff.plot("data - gold");
00304         data.plot("data");
00305         gold.plot("gold");
00306 
00307         Plotter::show();
00308 
00309         exit(1);
00310     }
00311 
00312     cout << SUCCESS << endl;
00313 }


Variable Documentation

const char* THIS_FILE = "Sine_UnitTest.cc" [static]

Definition at line 47 of file Sine_UnitTest.cc.

const float64 GAMMA = 1.5e-14 [static]

Definition at line 49 of file Sine_UnitTest.cc.

Generated on Sun Apr 15 20:10:34 2012 for nsound by  doxygen 1.6.3