diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/Makefile.am | 29 | ||||
| -rw-r--r-- | test/cachemanagertest.cc | 136 | ||||
| -rw-r--r-- | test/kit/ride-multi-channel.wav | bin | 0 -> 28591492 bytes | |||
| -rw-r--r-- | test/kit/ride-single-channel.wav | bin | 0 -> 694144 bytes | 
4 files changed, 152 insertions, 13 deletions
| diff --git a/test/Makefile.am b/test/Makefile.am index 3d0d405..e5760c8 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -1,13 +1,27 @@  # Rules for the test code (use `make check` to execute)  include $(top_srcdir)/src/Makefile.am.drumgizmo -TESTS = engine cache gui resampler lv2 +TESTS = engine gui resampler lv2 cachemanager  check_PROGRAMS = $(TESTS) +cachemanager_CXXFLAGS = -DOUTPUT=\"cachemanager\" $(CPPUNIT_CFLAGS) \ +	-I$(top_srcdir)/src -I$(top_srcdir)/include \ +	-I$(top_srcdir)/hugin -DDISABLE_HUGIN $(PTHREAD_CFLAGS) $(SNDFILE_CFLAGS) +cachemanager_LDFLAGS = $(PTHREAD_LIBS) $(CPPUNIT_LIBS) $(SNDFILE_LIBS) +cachemanager_SOURCES = \ +	$(top_srcdir)/src/cachemanager.cc \ +	$(top_srcdir)/src/thread.cc \ +	$(top_srcdir)/src/mutex.cc \ +	$(top_srcdir)/src/semaphore.cc \ +	$(top_srcdir)/src/configuration.cc \ +	$(top_srcdir)/src/audiofile.cc \ +	test.cc \ +	cachemanagertest.cc +  engine_CXXFLAGS = -DOUTPUT=\"engine\" $(CPPUNIT_CFLAGS) \  	-I$(top_srcdir)/src -I$(top_srcdir)/include \ -	-I$(top_srcdir)/hugin -DDISABLE_HUGIN +	-I$(top_srcdir)/hugin -DDISABLE_HUGIN $(PTHREAD_CFLAGS)  engine_CFLAGS = -DDISABLE_HUGIN  engine_LDFLAGS = $(CPPUNIT_LIBS) $(DRUMGIZMO_LIBS) $(PTHREAD_LIBS)  engine_SOURCES = \ @@ -16,17 +30,6 @@ engine_SOURCES = \  	test.cc \  	engine.cc -cache_CXXFLAGS = -DOUTPUT=\"cache\" $(CPPUNIT_CFLAGS) \ -	-I$(top_srcdir)/src -I$(top_srcdir)/include \ -	-I$(top_srcdir)/hugin -DDISABLE_HUGIN -cache_CFLAGS = -DDISABLE_HUGIN -cache_LDFLAGS = $(CPPUNIT_LIBS) $(DRUMGIZMO_LIBS) $(PTHREAD_LIBS) -cache_SOURCES = \ -	$(DRUMGIZMO_SOURCES) \ -	$(top_srcdir)/hugin/hugin.c \ -	test.cc \ -	cache.cc -  gui_CXXFLAGS = -DOUTPUT=\"gui\" $(CPPUNIT_CFLAGS)  gui_LDFLAGS = $(CPPUNIT_LIBS)  gui_SOURCES = \ diff --git a/test/cachemanagertest.cc b/test/cachemanagertest.cc new file mode 100644 index 0000000..ae346db --- /dev/null +++ b/test/cachemanagertest.cc @@ -0,0 +1,136 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/*************************************************************************** + *            cachemanagertest.cc + * + *  Sun Apr 19 10:15:59 CEST 2015 + *  Copyright 2015 Bent Bisballe Nyeng + *  deva@aasimon.org + ****************************************************************************/ + +/* + *  This file is part of DrumGizmo. + * + *  DrumGizmo 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. + * + *  DrumGizmo is distributed in the hope that it will be useful, + *  but WITHOUT ANY WARRANTY; without even the implied warranty of + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + *  GNU General Public License for more details. + * + *  You should have received a copy of the GNU General Public License + *  along with DrumGizmo; if not, write to the Free Software + *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA. + */ +#include <cppunit/extensions/HelperMacros.h> + +#include <cachemanager.h> +#include <unistd.h> + +class test_cachemanager : public CppUnit::TestFixture +{ +  CPPUNIT_TEST_SUITE(test_cachemanager); +  CPPUNIT_TEST(singlechannel_nonthreaded); +	CPPUNIT_TEST(singlechannel_threaded); +  CPPUNIT_TEST(multichannel_nonthreaded); +  CPPUNIT_TEST(multichannel_threaded); +	CPPUNIT_TEST_SUITE_END(); + +public: +	void setUp() {} +	void tearDown() {} + +  void testit(const char *filename, int channel, bool threaded) +  { + +    // Reference file: +    AudioFile afref(filename, channel); +    printf("afref.load\n"); +    afref.load(ALL_SAMPLES); + +    // Input file: +    AudioFile af(filename, channel); +    printf("af.load\n"); +    af.load(ALL_SAMPLES); +    //af.load(PRELOADSIZE); + +    CacheManager cm; +    printf("cm.init\n"); +    cm.init(100, threaded); + +    cacheid_t id; +    // TODO: test 0 ... FRAMESIZE - 1 +    size_t initial_samples_needed = (FRAMESIZE - 1) / 2; + +    printf("open\n"); +    sample_t *s = cm.open(&af, initial_samples_needed, channel, id); +    size_t size = initial_samples_needed; +    size_t offset = 0; + +    // Test pre cache: +    for(size_t i = 0; i < size; i++) { +      CPPUNIT_ASSERT_EQUAL(afref.data[offset], s[i]); +      offset++; +    } + +    // Test the rest +    while(offset < afref.size) { + +      if(threaded) { +        usleep(1000000.0 / 44100.0 * FRAMESIZE); +        //sleep(1); // sleep 1 second +      } + +      //printf("offset: %d\t", offset); +      s = cm.next(id, size); +      //printf("next -> size: %d\n", size); +      for(size_t i = 0; i < size && (offset < afref.size); i++) { +        CPPUNIT_ASSERT_EQUAL(afref.data[offset], s[i]); +        offset++; +      } +    } + +    printf("done\n"); +	} + +  void singlechannel_nonthreaded() +  { +    const char filename[] = "kit/ride-single-channel.wav"; +    int channel = 0; +    bool threaded = false; +    testit(filename, channel, threaded); +  } + +  void singlechannel_threaded() +  { +    const char filename[] = "kit/ride-single-channel.wav"; +    int channel = 0; +    bool threaded = true; +    testit(filename, channel, threaded); +  } + +  void multichannel_nonthreaded() +  { +    const char filename[] = "kit/ride-multi-channel.wav"; +    int channel = 0; +    bool threaded = false; +    testit(filename, channel, threaded); +  } + +  void multichannel_threaded() +  { +    const char filename[] = "kit/ride-multi-channel.wav"; +    int channel = 0; +    bool threaded = true; +    testit(filename, channel, threaded); +  } + +}; + +// Registers the fixture into the 'registry' +CPPUNIT_TEST_SUITE_REGISTRATION(test_cachemanager); + + + diff --git a/test/kit/ride-multi-channel.wav b/test/kit/ride-multi-channel.wavBinary files differ new file mode 100644 index 0000000..3dec8a9 --- /dev/null +++ b/test/kit/ride-multi-channel.wav diff --git a/test/kit/ride-single-channel.wav b/test/kit/ride-single-channel.wavBinary files differ new file mode 100644 index 0000000..1760697 --- /dev/null +++ b/test/kit/ride-single-channel.wav | 
