From 9652f81eb9b03f744f4cbfeead696613ae973ead Mon Sep 17 00:00:00 2001
From: Gregory Maxwell <greg@xiph.org>
Date: Wed, 26 Oct 2011 23:55:33 -0400
Subject: [PATCH] Test cleanups and renaming.

Build tests in the tests/ directory instead of top, cleanup, rename,
and eliminate recursive make for the celt/ unit tests.
---
 Makefile.am                                   |  42 ++++-
 celt/tests/Makefile.am                        |  15 --
 celt/tests/real-fft-test.c                    | 171 ------------------
 .../{cwrs32-test.c => test_unit_cwrs32.c}     |  14 +-
 celt/tests/{dft-test.c => test_unit_dft.c}    |   8 +-
 celt/tests/{ectest.c => test_unit_entropy.c}  |   6 +-
 .../{laplace-test.c => test_unit_laplace.c}   |  10 +-
 .../{mathops-test.c => test_unit_mathops.c}   |   0
 celt/tests/{mdct-test.c => test_unit_mdct.c}  |  10 +-
 .../{rotation-test.c => test_unit_rotation.c} |   0
 celt/tests/{type-test.c => test_unit_types.c} |   0
 configure.ac                                  |   3 +-
 12 files changed, 58 insertions(+), 221 deletions(-)
 delete mode 100644 celt/tests/Makefile.am
 delete mode 100644 celt/tests/real-fft-test.c
 rename celt/tests/{cwrs32-test.c => test_unit_cwrs32.c} (96%)
 rename celt/tests/{dft-test.c => test_unit_dft.c} (95%)
 rename celt/tests/{ectest.c => test_unit_entropy.c} (99%)
 rename celt/tests/{laplace-test.c => test_unit_laplace.c} (89%)
 rename celt/tests/{mathops-test.c => test_unit_mathops.c} (100%)
 rename celt/tests/{mdct-test.c => test_unit_mdct.c} (96%)
 rename celt/tests/{rotation-test.c => test_unit_rotation.c} (100%)
 rename celt/tests/{type-test.c => test_unit_types.c} (100%)

diff --git a/Makefile.am b/Makefile.am
index 056d44777..6e9f3d5bf 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -2,7 +2,7 @@ AUTOMAKE_OPTIONS = subdir-objects
 
 lib_LTLIBRARIES = libopus.la
 
-SUBDIRS = . celt/tests doc
+SUBDIRS = . doc
 
 INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/celt -I$(top_srcdir)/silk -I$(top_srcdir)/silk/float -I$(top_srcdir)/silk/fixed
 
@@ -26,9 +26,9 @@ pkginclude_HEADERS = include/opus.h include/opus_multistream.h include/opus_type
 
 noinst_HEADERS = $(OPUS_HEAD) $(SILK_HEAD) $(CELT_HEAD)
 
-noinst_PROGRAMS = opus_demo repacketizer_demo opus_compare test_opus_api test_opus_encode test_opus_decode
+noinst_PROGRAMS = opus_demo repacketizer_demo opus_compare tests/test_opus_api tests/test_opus_encode tests/test_opus_decode celt/tests/test_unit_cwrs32 celt/tests/test_unit_dft celt/tests/test_unit_entropy celt/tests/test_unit_laplace celt/tests/test_unit_mathops celt/tests/test_unit_mdct celt/tests/test_unit_rotation celt/tests/test_unit_types
 
-TESTS = test_opus_api test_opus_decode test_opus_encode
+TESTS = celt/tests/test_unit_types celt/tests/test_unit_mathops celt/tests/test_unit_entropy celt/tests/test_unit_laplace celt/tests/test_unit_dft celt/tests/test_unit_mdct celt/tests/test_unit_rotation celt/tests/test_unit_cwrs32 tests/test_opus_api tests/test_opus_decode tests/test_opus_encode
 
 opus_demo_SOURCES = src/opus_demo.c
 
@@ -41,14 +41,38 @@ repacketizer_demo_LDADD = libopus.la -lm
 opus_compare_SOURCES = src/opus_compare.c
 opus_compare_LDADD = -lm
 
-test_opus_api_SOURCES = tests/test_opus_api.c tests/test_opus_common.h
-test_opus_api_LDADD = libopus.la -lm
+tests_test_opus_api_SOURCES = tests/test_opus_api.c tests/test_opus_common.h
+tests_test_opus_api_LDADD = libopus.la -lm
 
-test_opus_encode_SOURCES = tests/test_opus_encode.c tests/test_opus_common.h
-test_opus_encode_LDADD = libopus.la -lm
+tests_test_opus_encode_SOURCES = tests/test_opus_encode.c tests/test_opus_common.h
+tests_test_opus_encode_LDADD = libopus.la -lm
 
-test_opus_decode_SOURCES = tests/test_opus_decode.c tests/test_opus_common.h
-test_opus_decode_LDADD = libopus.la -lm
+tests_test_opus_decode_SOURCES = tests/test_opus_decode.c tests/test_opus_common.h
+tests_test_opus_decode_LDADD = libopus.la -lm
+
+celt_tests_test_unit_cwrs32_SOURCES = celt/tests/test_unit_cwrs32.c
+celt_tests_test_unit_cwrs32_LDADD = -lm
+
+celt_tests_test_unit_dft_SOURCES = celt/tests/test_unit_dft.c
+celt_tests_test_unit_dft_LDADD = -lm
+
+celt_tests_test_unit_entropy_SOURCES = celt/tests/test_unit_entropy.c
+celt_tests_test_unit_entropy_LDADD = -lm
+
+celt_tests_test_unit_laplace_SOURCES = celt/tests/test_unit_laplace.c
+celt_tests_test_unit_laplace_LDADD = -lm
+
+celt_tests_test_unit_mathops_SOURCES = celt/tests/test_unit_mathops.c
+celt_tests_test_unit_mathops_LDADD = -lm
+
+celt_tests_test_unit_mdct_SOURCES = celt/tests/test_unit_mdct.c
+celt_tests_test_unit_mdct_LDADD = -lm
+
+celt_tests_test_unit_rotation_SOURCES = celt/tests/test_unit_rotation.c
+celt_tests_test_unit_rotation_LDADD = -lm
+
+celt_tests_test_unit_types_SOURCES = celt/tests/test_unit_types.c
+celt_tests_test_unit_types_LDADD = -lm
 
 if CUSTOM_MODES
 pkginclude_HEADERS += include/opus_custom.h
diff --git a/celt/tests/Makefile.am b/celt/tests/Makefile.am
deleted file mode 100644
index 0dfdfd9fb..000000000
--- a/celt/tests/Makefile.am
+++ /dev/null
@@ -1,15 +0,0 @@
-INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/celt
-METASOURCES = AUTO
-
-TESTS = type-test ectest cwrs32-test dft-test laplace-test mdct-test mathops-test rotation-test
-
-noinst_PROGRAMS = type-test ectest cwrs32-test dft-test laplace-test mdct-test mathops-test rotation-test
-
-type_test_SOURCES = type-test.c
-ectest_SOURCES = ectest.c
-cwrs32_test_SOURCES = cwrs32-test.c
-dft_test_SOURCES = dft-test.c
-laplace_test_SOURCES = laplace-test.c
-mdct_test_SOURCES = mdct-test.c
-mathops_test_SOURCES = mathops-test.c
-rotation_test_SOURCES = rotation-test.c
diff --git a/celt/tests/real-fft-test.c b/celt/tests/real-fft-test.c
deleted file mode 100644
index 3f3f7b233..000000000
--- a/celt/tests/real-fft-test.c
+++ /dev/null
@@ -1,171 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "kiss_fftr.h"
-#include "_kiss_fft_guts.h"
-#include <stdio.h>
-#include <string.h>
-
-#define CELT_C
-#include "../celt/stack_alloc.h"
-#include "../celt/kiss_fft.c"
-#include "../celt/kiss_fftr.c"
-
-#ifdef FIXED_DEBUG
-long long celt_mips=0;
-#endif
-int ret=0;
-
-static
-kiss_fft_scalar rand_scalar(void)
-{
-    return (rand()%32767)-16384;
-}
-
-static
-double snr_compare( kiss_fft_cpx * vec1,kiss_fft_scalar * vec2, int n)
-{
-    int k;
-    double sigpow=1e-10, noisepow=1e-10, err,snr;
-
-    vec1[0].i = vec1[n].r;
-    for (k=0;k<n;++k) {
-        sigpow += (double)vec1[k].r * (double)vec1[k].r +
-                  (double)vec1[k].i * (double)vec1[k].i;
-        err = (double)vec1[k].r - (double)vec2[2*k];
-        /*printf ("%f %f\n", (double)vec1[k].r, (double)vec2[2*k]);*/
-        noisepow += err * err;
-        err = (double)vec1[k].i - (double)vec2[2*k+1];
-        /*printf ("%f %f\n", (double)vec1[k].i, (double)vec2[2*k+1]);*/
-        noisepow += err * err;
-
-    }
-    snr = 10*log10( sigpow / noisepow );
-    if (snr<60) {
-        printf( "** poor snr: %f **\n", snr);
-        ret = 1;
-    }
-    return snr;
-}
-
-static
-double snr_compare_scal( kiss_fft_scalar * vec1,kiss_fft_scalar * vec2, int n)
-{
-    int k;
-    double sigpow=1e-10, noisepow=1e-10, err,snr;
-
-    for (k=0;k<n;++k) {
-        sigpow += (double)vec1[k] * (double)vec1[k];
-        err = (double)vec1[k] - (double)vec2[k];
-        noisepow += err * err;
-    }
-    snr = 10*log10( sigpow / noisepow );
-    if (snr<60) {
-        printf( "\npoor snr: %f\n", snr);
-        ret = 1;
-    }
-    return snr;
-}
-#ifdef RADIX_TWO_ONLY
-#define NFFT 1024
-#else
-#define NFFT 8*3*5
-#endif
-
-#ifndef NUMFFTS
-#define NUMFFTS 10000
-#endif
-
-
-int main(void)
-{
-    int i;
-    kiss_fft_cpx cin[NFFT];
-    kiss_fft_cpx cout[NFFT];
-    kiss_fft_scalar fin[NFFT];
-    kiss_fft_scalar sout[NFFT];
-    kiss_fft_cfg  kiss_fft_state;
-    kiss_fftr_cfg  kiss_fftr_state;
-
-    kiss_fft_scalar rin[NFFT+2];
-    kiss_fft_scalar rout[NFFT+2];
-    kiss_fft_scalar zero;
-    ALLOC_STACK;
-    memset(&zero,0,sizeof(zero) ); // ugly way of setting short,int,float,double, or __m128 to zero
-
-    for (i=0;i<NFFT;++i) {
-        rin[i] = rand_scalar();
-#if defined(FIXED_POINT) && defined(DOUBLE_PRECISION)
-        rin[i] *= 32768;
-#endif
-        cin[i].r = rin[i];
-        cin[i].i = zero;
-    }
-
-    kiss_fft_state = opus_fft_alloc(NFFT,0,0);
-    kiss_fftr_state = kiss_fftr_alloc(NFFT,0,0);
-    opus_fft(kiss_fft_state,cin,cout);
-    kiss_fftr(kiss_fftr_state,rin,sout);
-
-    printf( "nfft=%d, inverse=%d, snr=%g\n",
-            NFFT,0, snr_compare(cout,sout,(NFFT/2)) );
-
-    memset(cin,0,sizeof(cin));
-    cin[0].r = rand_scalar();
-    cin[NFFT/2].r = rand_scalar();
-    for (i=1;i< NFFT/2;++i) {
-        //cin[i].r = (kiss_fft_scalar)(rand()-RAND_MAX/2);
-        cin[i].r = rand_scalar();
-        cin[i].i = rand_scalar();
-    }
-
-    // conjugate symmetry of real signal
-    for (i=1;i< NFFT/2;++i) {
-        cin[NFFT-i].r = cin[i].r;
-        cin[NFFT-i].i = - cin[i].i;
-    }
-
-
-#ifdef FIXED_POINT
-#ifdef DOUBLE_PRECISION
-    for (i=0;i< NFFT;++i) {
-       cin[i].r *= 32768;
-       cin[i].i *= 32768;
-    }
-#endif
-    for (i=0;i< NFFT;++i) {
-       cin[i].r /= NFFT;
-       cin[i].i /= NFFT;
-    }
-#endif
-
-    fin[0] = cin[0].r;
-    fin[1] = cin[NFFT/2].r;
-    for (i=1;i< NFFT/2;++i)
-    {
-       fin[2*i] = cin[i].r;
-       fin[2*i+1] = cin[i].i;
-    }
-
-    opus_ifft(kiss_fft_state,cin,cout);
-    kiss_fftri(kiss_fftr_state,fin,rout);
-    /*
-    printf(" results from inverse opus_fft : (%f,%f), (%f,%f), (%f,%f), (%f,%f), (%f,%f) ...\n "
-            , (float)cout[0].r , (float)cout[0].i , (float)cout[1].r , (float)cout[1].i , (float)cout[2].r , (float)cout[2].i , (float)cout[3].r , (float)cout[3].i , (float)cout[4].r , (float)cout[4].i
-            );
-
-    printf(" results from inverse kiss_fftr: %f,%f,%f,%f,%f ... \n"
-            ,(float)rout[0] ,(float)rout[1] ,(float)rout[2] ,(float)rout[3] ,(float)rout[4]);
-*/
-    for (i=0;i<NFFT;++i) {
-        sout[i] = cout[i].r;
-    }
-
-    printf( "nfft=%d, inverse=%d, snr=%g\n",
-            NFFT,1, snr_compare_scal(rout,sout,NFFT) );
-    free(kiss_fft_state);
-    free(kiss_fftr_state);
-
-    return ret;
-}
diff --git a/celt/tests/cwrs32-test.c b/celt/tests/test_unit_cwrs32.c
similarity index 96%
rename from celt/tests/cwrs32-test.c
rename to celt/tests/test_unit_cwrs32.c
index ba19e4b1b..905714e00 100644
--- a/celt/tests/cwrs32-test.c
+++ b/celt/tests/test_unit_cwrs32.c
@@ -12,13 +12,13 @@
 #endif
 
 #define CELT_C
-#include "../celt/stack_alloc.h"
-#include "../celt/entenc.c"
-#include "../celt/entdec.c"
-#include "../celt/entcode.c"
-#include "../celt/cwrs.c"
-#include "../celt/mathops.c"
-#include "../celt/rate.h"
+#include "stack_alloc.h"
+#include "entenc.c"
+#include "entdec.c"
+#include "entcode.c"
+#include "cwrs.c"
+#include "mathops.c"
+#include "rate.h"
 
 #define NMAX (240)
 #define KMAX (128)
diff --git a/celt/tests/dft-test.c b/celt/tests/test_unit_dft.c
similarity index 95%
rename from celt/tests/dft-test.c
rename to celt/tests/test_unit_dft.c
index 1bf4e74ca..324244f34 100644
--- a/celt/tests/dft-test.c
+++ b/celt/tests/test_unit_dft.c
@@ -12,10 +12,10 @@
 #include "kiss_fft.h"
 
 #define CELT_C
-#include "../celt/stack_alloc.h"
-#include "../celt/kiss_fft.c"
-#include "../celt/mathops.c"
-#include "../celt/entcode.c"
+#include "stack_alloc.h"
+#include "kiss_fft.c"
+#include "mathops.c"
+#include "entcode.c"
 
 
 #ifndef M_PI
diff --git a/celt/tests/ectest.c b/celt/tests/test_unit_entropy.c
similarity index 99%
rename from celt/tests/ectest.c
rename to celt/tests/test_unit_entropy.c
index 29a82fcf7..f151accbb 100644
--- a/celt/tests/ectest.c
+++ b/celt/tests/test_unit_entropy.c
@@ -11,9 +11,9 @@
 #include "entdec.h"
 #include <string.h>
 
-#include "../celt/entenc.c"
-#include "../celt/entdec.c"
-#include "../celt/entcode.c"
+#include "entenc.c"
+#include "entdec.c"
+#include "entcode.c"
 
 #ifndef M_LOG2E
 # define M_LOG2E    1.4426950408889634074
diff --git a/celt/tests/laplace-test.c b/celt/tests/test_unit_laplace.c
similarity index 89%
rename from celt/tests/laplace-test.c
rename to celt/tests/test_unit_laplace.c
index 3c4cbd72d..5c80c1901 100644
--- a/celt/tests/laplace-test.c
+++ b/celt/tests/test_unit_laplace.c
@@ -6,12 +6,12 @@
 #include <stdlib.h>
 #include "laplace.h"
 #define CELT_C
-#include "../celt/stack_alloc.h"
+#include "stack_alloc.h"
 
-#include "../celt/entenc.c"
-#include "../celt/entdec.c"
-#include "../celt/entcode.c"
-#include "../celt/laplace.c"
+#include "entenc.c"
+#include "entdec.c"
+#include "entcode.c"
+#include "laplace.c"
 
 #define DATA_SIZE 40000
 
diff --git a/celt/tests/mathops-test.c b/celt/tests/test_unit_mathops.c
similarity index 100%
rename from celt/tests/mathops-test.c
rename to celt/tests/test_unit_mathops.c
diff --git a/celt/tests/mdct-test.c b/celt/tests/test_unit_mdct.c
similarity index 96%
rename from celt/tests/mdct-test.c
rename to celt/tests/test_unit_mdct.c
index 67da13ad9..07ac0ffd1 100644
--- a/celt/tests/mdct-test.c
+++ b/celt/tests/test_unit_mdct.c
@@ -11,12 +11,12 @@
 #include <stdio.h>
 #include "mdct.h"
 #define CELT_C
-#include "../celt/stack_alloc.h"
+#include "stack_alloc.h"
 
-#include "../celt/kiss_fft.c"
-#include "../celt/mdct.c"
-#include "../celt/mathops.c"
-#include "../celt/entcode.c"
+#include "kiss_fft.c"
+#include "mdct.c"
+#include "mathops.c"
+#include "entcode.c"
 
 #ifndef M_PI
 #define M_PI 3.141592653
diff --git a/celt/tests/rotation-test.c b/celt/tests/test_unit_rotation.c
similarity index 100%
rename from celt/tests/rotation-test.c
rename to celt/tests/test_unit_rotation.c
diff --git a/celt/tests/type-test.c b/celt/tests/test_unit_types.c
similarity index 100%
rename from celt/tests/type-test.c
rename to celt/tests/test_unit_types.c
diff --git a/configure.ac b/configure.ac
index 207e9720a..656ee3716 100644
--- a/configure.ac
+++ b/configure.ac
@@ -227,8 +227,7 @@ fi
 AM_CONDITIONAL([FIXED_POINT], [test x$ac_enable_fixed = xyes])
 AM_CONDITIONAL([CUSTOM_MODES], [test x$ac_enable_custom_modes = xyes])
 
-AC_OUTPUT([Makefile celt/tests/Makefile
-           opus.pc opus-uninstalled.pc
+AC_OUTPUT([Makefile opus.pc opus-uninstalled.pc
            doc/Makefile doc/Doxyfile])
 
 AC_MSG_RESULT([
-- 
GitLab