diff data/model/test/TestFFTModel.h @ 1086:9f4505ac9072

Tidy dense time-value model API a bit; add first simple unit test for FFT model
author Chris Cannam
date Wed, 10 Jun 2015 17:06:02 +0100
parents
children 5fab8e4f5f19
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/data/model/test/TestFFTModel.h	Wed Jun 10 17:06:02 2015 +0100
@@ -0,0 +1,60 @@
+/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */
+
+/*
+    Sonic Visualiser
+    An audio file viewer and annotation editor.
+    Centre for Digital Music, Queen Mary, University of London.
+    
+    This program is free software; you can redistribute it and/or
+    modify it under the terms of the GNU General Public License as
+    published by the Free Software Foundation; either version 2 of the
+    License, or (at your option) any later version.  See the file
+    COPYING included with this distribution for more information.
+*/
+
+#ifndef TEST_FFT_MODEL_H
+#define TEST_FFT_MODEL_H
+
+#include "../FFTModel.h"
+
+#include "MockWaveModel.h"
+
+#include "Compares.h"
+
+#include <QObject>
+#include <QtTest>
+#include <QDir>
+
+#include <iostream>
+
+using namespace std;
+
+class TestFFTModel : public QObject
+{
+    Q_OBJECT
+
+private slots:
+
+    void example() {
+	MockWaveModel mwm({ DC }, 16);
+	FFTModel fftm(&mwm, 0, RectangularWindow, 8, 8, 8, false);
+	float reals[6], imags[6];
+	reals[5] = 999.f; // overrun guards
+	imags[5] = 999.f;
+	fftm.getValuesAt(0, reals, imags);
+	cerr << "reals: " << reals[0] << "," << reals[1] << "," << reals[2] << "," << reals[3] << "," << reals[4] <<  endl;
+	cerr << "imags: " << imags[0] << "," << imags[1] << "," << imags[2] << "," << imags[3] << "," << imags[4] <<  endl;
+	QCOMPARE(reals[0], 4.f); // rectangular window scales by 0.5
+	QCOMPARE(reals[1], 0.f);
+	QCOMPARE(reals[2], 0.f);
+	QCOMPARE(reals[3], 0.f);
+	QCOMPARE(reals[4], 0.f);
+	QCOMPARE(reals[5], 999.f);
+	QCOMPARE(imags[5], 999.f);
+	imags[5] = 0.f;
+	COMPARE_ALL_TO_F(imags, 0.f);
+    }
+    
+};
+
+#endif