diff --git a/daemon/test/resamplertest.cpp b/daemon/test/resamplertest.cpp
index 35238b0ec164fb4d2c4aa6aa3f77dc2176480917..23d91e7bf99b8245c751de926c6744ac1f7c61bd 100644
--- a/daemon/test/resamplertest.cpp
+++ b/daemon/test/resamplertest.cpp
@@ -46,133 +46,154 @@ void ResamplerTest::tearDown()
 
 void ResamplerTest::testUpsamplingRamp()
 {
-    std::tr1::array<SFLDataFormat, 160> tmpInputBuffer;
-    std::tr1::array<SFLDataFormat, 320> tmpOutputBuffer;
-
     // generate input samples and store them in inputBuffer
     generateRamp();
 
     std::cout << "Test Upsampling Ramp" << std::endl;
-    converter = new SamplerateConverter(44100);
+    SamplerateConverter converter(44100);
 
-    CPPUNIT_ASSERT(converter != NULL);
+    performUpsampling(converter);
 
-    std::copy(inputBuffer.begin(), inputBuffer.begin() + 160, tmpInputBuffer.begin());
-    converter->resample(tmpInputBuffer.data(), tmpOutputBuffer.data(), tmpOutputBuffer.size(), 8000, 16000, tmpInputBuffer.size());
-
-    std::cout << "Output Buffer" << std::endl;
-    for(int i = 0; i < tmpOutputBuffer.size(); i++)
-        std::cout << tmpOutputBuffer[i] << ", ";
-    std::cout << std::endl;
+    LowSmplrBuffer tmpInputBuffer;
+    HighSmplrBuffer tmpOutputBuffer;
 
+    std::copy(inputBuffer.begin(), inputBuffer.begin() + tmpInputBuffer.size(), tmpInputBuffer.begin());
     std::cout << "Input Buffer" << std::endl;
     for(int i = 0; i < tmpInputBuffer.size(); i++)
         std::cout << tmpInputBuffer[i] << ", ";
     std::cout << std::endl;
 
-    delete converter;
+    std::copy(outputBuffer.begin(), outputBuffer.begin() + tmpOutputBuffer.size(), tmpOutputBuffer.begin());
+    std::cout << "Output Buffer" << std::endl;
+    for(int i = 0; i < tmpOutputBuffer.size(); i++)
+        std::cout << tmpOutputBuffer[i] << ", ";
+    std::cout << std::endl;
 }
 
 void ResamplerTest::testDownsamplingRamp()
 {
-    std::tr1::array<SFLDataFormat, 320> tmpInputBuffer;
-    std::tr1::array<SFLDataFormat, 160> tmpOutputBuffer;
-
     generateRamp();
 
     std::cout << "Test Downsampling Ramp" << std::endl;
-    converter = new SamplerateConverter(44100);
+    SamplerateConverter converter(44100);
 
-    CPPUNIT_ASSERT(converter != NULL);
+    performDownsampling(converter);
 
-    std::copy(inputBuffer.begin(), inputBuffer.begin() + 320, tmpInputBuffer.begin());
-    converter->resample(tmpInputBuffer.data(), tmpOutputBuffer.data(), tmpOutputBuffer.size(), 16000, 8000, tmpInputBuffer.size());
-
-    std::cout << "Output Buffer" << std::endl;
-    for(int i = 0; i < tmpOutputBuffer.size(); i++)
-        std::cout << tmpOutputBuffer[i] << ", ";
-    std::cout << std::endl;
+    HighSmplrBuffer tmpInputBuffer;
+    LowSmplrBuffer tmpOutputBuffer;
 
+    std::copy(inputBuffer.begin(), inputBuffer.begin() + tmpInputBuffer.size(), tmpInputBuffer.begin());
     std::cout << "Input Buffer" << std::endl;
     for(int i = 0; i < tmpInputBuffer.size(); i++)
         std::cout << tmpInputBuffer[i] << ", ";
     std::cout << std::endl;
 
-    delete converter;
+    std::copy(outputBuffer.begin(), outputBuffer.begin() + tmpOutputBuffer.size(), tmpOutputBuffer.begin());
+    std::cout << "Output Buffer" << std::endl;
+    for(int i = 0; i < tmpOutputBuffer.size(); i++)
+        std::cout << tmpOutputBuffer[i] << ", ";
+    std::cout << std::endl;
 }
 
 void ResamplerTest::testUpsamplingTriangle()
 {
-    std::tr1::array<SFLDataFormat, 160> tmpInputBuffer;
-    std::tr1::array<SFLDataFormat, 320> tmpOutputBuffer;
-
     generateTriangularSignal();
 
     std::cout << "Test Upsampling Triangle" << std::endl;
-    converter = new SamplerateConverter(44100);
+    SamplerateConverter converter(44100);
 
-    CPPUNIT_ASSERT(converter != NULL);
+    performUpsampling(converter);
 
-    std::copy(inputBuffer.begin(), inputBuffer.begin() + 160, tmpInputBuffer.begin());
-    converter->resample(tmpInputBuffer.data(), tmpOutputBuffer.data(), tmpOutputBuffer.size(), 8000, 16000, tmpInputBuffer.size());
+    LowSmplrBuffer tmpInputBuffer;
+    HighSmplrBuffer tmpOutputBuffer;
 
-    delete converter;
+    std::copy(inputBuffer.begin(), inputBuffer.begin() + tmpInputBuffer.size(), tmpInputBuffer.begin());
+    std::cout << "Input Buffer" << std::endl;
+    for(int i = 0; i < tmpInputBuffer.size(); i++)
+        std::cout << tmpInputBuffer[i] << ", ";
+    std::cout << std::endl;
+
+    std::copy(outputBuffer.begin(), outputBuffer.begin() + tmpOutputBuffer.size(), tmpOutputBuffer.begin());
+    std::cout << "Output Buffer" << std::endl;
+    for(int i = 0; i < tmpOutputBuffer.size(); i++)
+        std::cout << tmpOutputBuffer[i] << ", ";
+    std::cout << std::endl;
 }
 
 void ResamplerTest::testDownsamplingTriangle()
 {
-    std::tr1::array<SFLDataFormat, 320> tmpInputBuffer;
-    std::tr1::array<SFLDataFormat, 160> tmpOutputBuffer;
-
     generateTriangularSignal();
 
     std::cout << "Test Downsampling Triangle" << std::endl;
-    converter = new SamplerateConverter(44100);
+    SamplerateConverter converter(44100);
 
-    CPPUNIT_ASSERT(converter != NULL);
+    performDownsampling(converter);
 
-    std::copy(inputBuffer.begin(), inputBuffer.end() + 320, tmpInputBuffer.begin());
-    converter->resample(tmpInputBuffer.data(), tmpOutputBuffer.data(), tmpOutputBuffer.size(), 16000, 8000, tmpInputBuffer.size());
+    HighSmplrBuffer tmpInputBuffer;
+    LowSmplrBuffer tmpOutputBuffer;
 
-    delete converter;
-}
+    std::copy(inputBuffer.begin(), inputBuffer.begin() + tmpInputBuffer.size(), tmpInputBuffer.begin());
+    std::cout << "Input Buffer" << std::endl;
+    for(int i = 0; i < tmpInputBuffer.size(); i++)
+        std::cout << tmpInputBuffer[i] << ", ";
+    std::cout << std::endl;
 
+    std::copy(outputBuffer.begin(), outputBuffer.begin() + tmpOutputBuffer.size(), tmpOutputBuffer.begin());
+    std::cout << "Output Buffer" << std::endl;
+    for(int i = 0; i < tmpOutputBuffer.size(); i++)
+        std::cout << tmpOutputBuffer[i] << ", ";
+    std::cout << std::endl;
+}
 void ResamplerTest::testUpsamplingSine()
 {
-    std::tr1::array<SFLDataFormat, 160> tmpInputBuffer;
-    std::tr1::array<SFLDataFormat, 320> tmpOutputBuffer;
-
     // generate input samples and store them in inputBuffer
     generateSineSignal();
 
     std::cout << "Test Upsampling Sine" << std::endl;
-    converter = new SamplerateConverter(44100);
+    SamplerateConverter converter(44100);
 
-    CPPUNIT_ASSERT(converter != NULL);
+    performUpsampling(converter);
 
-    std::copy(inputBuffer.begin(), inputBuffer.begin() + 160, tmpInputBuffer.begin());
-    converter->resample(tmpInputBuffer.data(), tmpOutputBuffer.data(), tmpOutputBuffer.size(), 8000, 16000, tmpInputBuffer.size());
+    LowSmplrBuffer tmpInputBuffer;
+    HighSmplrBuffer tmpOutputBuffer;
 
-    delete converter;
+    std::copy(inputBuffer.begin(), inputBuffer.begin() + tmpInputBuffer.size(), tmpInputBuffer.begin());
+    std::cout << "Input Buffer" << std::endl;
+    for(int i = 0; i < tmpInputBuffer.size(); i++)
+        std::cout << tmpInputBuffer[i] << ", ";
+    std::cout << std::endl;
+
+    std::copy(outputBuffer.begin(), outputBuffer.begin() + tmpOutputBuffer.size(), tmpOutputBuffer.begin());
+    std::cout << "Output Buffer" << std::endl;
+    for(int i = 0; i < tmpOutputBuffer.size(); i++)
+        std::cout << tmpOutputBuffer[i] << ", ";
+    std::cout << std::endl;
 }
 
 void ResamplerTest::testDownsamplingSine()
 {
-    std::tr1::array<SFLDataFormat, 320> tmpInputBuffer;
-    std::tr1::array<SFLDataFormat, 160> tmpOutputBuffer;
-
     // generate input samples and store them in inputBuffer
     generateSineSignal();
 
     std::cout << "Test Downsampling Sine" << std::endl;
-    converter = new SamplerateConverter(44100);
+    SamplerateConverter converter(44100);
 
-    CPPUNIT_ASSERT(converter != NULL);
+    performDownsampling(converter);
 
-    std::copy(inputBuffer.begin(), inputBuffer.begin() + 320, tmpInputBuffer.begin());
-    converter->resample(tmpInputBuffer.data(), tmpOutputBuffer.data(), tmpOutputBuffer.size(), 8000, 16000, tmpInputBuffer.size());
+    HighSmplrBuffer tmpInputBuffer;
+    LowSmplrBuffer tmpOutputBuffer;
 
-    delete converter;
+    std::copy(inputBuffer.begin(), inputBuffer.begin() + tmpInputBuffer.size(), tmpInputBuffer.begin());
+    std::cout << "Input Buffer" << std::endl;
+    for(int i = 0; i < tmpInputBuffer.size(); i++)
+        std::cout << tmpInputBuffer[i] << ", ";
+    std::cout << std::endl;
+
+    std::copy(outputBuffer.begin(), outputBuffer.begin() + tmpOutputBuffer.size(), tmpOutputBuffer.begin());
+    std::cout << "Output Buffer" << std::endl;
+    for(int i = 0; i < tmpOutputBuffer.size(); i++)
+        std::cout << tmpOutputBuffer[i] << ", ";
+    std::cout << std::endl;
 }
 
 void ResamplerTest::generateRamp()
@@ -192,6 +213,32 @@ void ResamplerTest::generateTriangularSignal()
 void ResamplerTest::generateSineSignal()
 {
     for(int i = 0; i < inputBuffer.size(); i++) {
-        //inputBuffer[i] = (SFLDataFormat)(
+        inputBuffer[i] = (SFLDataFormat)(1000.0 * sin((double)i));
+    }
+}
+
+void ResamplerTest::performUpsampling(SamplerateConverter &converter)
+{
+    LowSmplrBuffer tmpInputBuffer;
+    HighSmplrBuffer tmpOutputBuffer;
+
+    int i, j;
+    for(i = 0, j = 0; i < (inputBuffer.size() / 2); i += tmpInputBuffer.size(), j += tmpOutputBuffer.size()) {
+        std::copy(inputBuffer.begin() + i, inputBuffer.begin() + tmpInputBuffer.size() + i, tmpInputBuffer.begin());
+        converter.resample(tmpInputBuffer.data(), tmpOutputBuffer.data(), tmpOutputBuffer.size(), 8000, 16000, tmpInputBuffer.size());
+        std::copy(tmpOutputBuffer.begin(), tmpOutputBuffer.end(), outputBuffer.begin() + j);
+    }
+}
+
+void ResamplerTest::performDownsampling(SamplerateConverter &converter)
+{
+    HighSmplrBuffer tmpInputBuffer;
+    LowSmplrBuffer tmpOutputBuffer;
+
+    int i, j;
+    for(i = 0, j = 0; i < inputBuffer.size(); i += tmpInputBuffer.size(), j += tmpOutputBuffer.size()) {
+        std::copy(inputBuffer.begin() + i, inputBuffer.begin() + tmpInputBuffer.size() + i, tmpInputBuffer.begin());
+        converter.resample(tmpInputBuffer.data(), tmpOutputBuffer.data(), tmpOutputBuffer.size(), 16000, 8000, tmpInputBuffer.size());
+        std::copy(tmpOutputBuffer.begin(), tmpOutputBuffer.end(), outputBuffer.begin() + j);
     }
 }
diff --git a/daemon/test/resamplertest.h b/daemon/test/resamplertest.h
index bfd7169ef48f6a141234e23229ce2901e73917f8..f84355a0a9b50673092bfd62d6947e942e5002f8 100644
--- a/daemon/test/resamplertest.h
+++ b/daemon/test/resamplertest.h
@@ -41,6 +41,11 @@
 #include "audio/samplerateconverter.h"
 
 #define MAX_BUFFER_LENGTH 40000
+#define TMP_LOWSMPLR_BUFFER_LENGTH 160
+#define TMP_HIGHSMPLR_BUFFER_LENGTH 320
+
+typedef std::tr1::array<SFLDataFormat, TMP_LOWSMPLR_BUFFER_LENGTH> LowSmplrBuffer;
+typedef std::tr1::array<SFLDataFormat, TMP_HIGHSMPLR_BUFFER_LENGTH> HighSmplrBuffer;
 
 class ResamplerTest : public CppUnit::TestCase {
 
@@ -51,7 +56,7 @@ class ResamplerTest : public CppUnit::TestCase {
     CPPUNIT_TEST(testUpsamplingRamp);
     CPPUNIT_TEST(testDownsamplingRamp);
     CPPUNIT_TEST(testUpsamplingTriangle);
-    // CPPUNIT_TEST(testDownsamplingTriangle);
+    CPPUNIT_TEST(testDownsamplingTriangle);
     CPPUNIT_TEST(testUpsamplingSine);
     CPPUNIT_TEST(testDownsamplingSine);
     CPPUNIT_TEST_SUITE_END();
@@ -118,6 +123,16 @@ private:
      */
     void generateSineSignal();
 
+    /*
+     * Perform upsampling on the whole input buffer
+     */
+    void performUpsampling(SamplerateConverter &converter);
+
+    /*
+     * Perform downsampling on the whold input buffer
+     */
+    void performDownsampling(SamplerateConverter &converter);
+
     /**
      * Used to store input samples
      */