From acf42c05da233095716e613717d647fc9d3c02c8 Mon Sep 17 00:00:00 2001
From: philippegorley <gorley.philippe@gmail.com>
Date: Thu, 27 Sep 2018 11:56:37 -0400
Subject: [PATCH] test: add resampler test case

Change-Id: I0f8f9571a715fe26a7db61a43675efc50ce71564
---
 test/unitTest/media/audio/test_resampler.cpp | 35 +++++++++++++++++---
 1 file changed, 30 insertions(+), 5 deletions(-)

diff --git a/test/unitTest/media/audio/test_resampler.cpp b/test/unitTest/media/audio/test_resampler.cpp
index e5ae3adbc5..d9403e2144 100644
--- a/test/unitTest/media/audio/test_resampler.cpp
+++ b/test/unitTest/media/audio/test_resampler.cpp
@@ -23,6 +23,7 @@
 #include <cppunit/extensions/HelperMacros.h>
 
 #include "dring.h"
+#include "videomanager_interface.h"
 #include "libav_deps.h"
 #include "audio/resampler.h"
 
@@ -38,10 +39,12 @@ public:
     void tearDown();
 
 private:
-    void testResample();
+    void testAudioBuffer();
+    void testAudioFrame();
 
     CPPUNIT_TEST_SUITE(ResamplerTest);
-    CPPUNIT_TEST(testResample);
+    CPPUNIT_TEST(testAudioBuffer);
+    CPPUNIT_TEST(testAudioFrame);
     CPPUNIT_TEST_SUITE_END();
 
     std::unique_ptr<Resampler> resampler_;
@@ -53,7 +56,6 @@ void
 ResamplerTest::setUp()
 {
     DRing::init(DRing::InitFlag(DRing::DRING_FLAG_DEBUG | DRing::DRING_FLAG_CONSOLE_LOG));
-    libav_utils::ring_avcodec_init();
 }
 
 void
@@ -63,9 +65,8 @@ ResamplerTest::tearDown()
 }
 
 void
-ResamplerTest::testResample()
+ResamplerTest::testAudioBuffer()
 {
-    const constexpr AudioFormat none(0, 0);
     const constexpr AudioFormat infmt(44100, 1);
     const constexpr AudioFormat outfmt(48000, 2);
 
@@ -79,6 +80,30 @@ ResamplerTest::testResample()
     CPPUNIT_ASSERT(outbuf.getFormat().nb_channels == 2);
 }
 
+void
+ResamplerTest::testAudioFrame()
+{
+    const constexpr AudioFormat infmt(44100, 1);
+
+    resampler_.reset(new Resampler);
+
+    AudioBuffer inbuf(1024, infmt);
+    auto input = inbuf.toAVFrame();
+    CPPUNIT_ASSERT(input->data && input->data[0]);
+    CPPUNIT_ASSERT(input->data[0][0] == 0);
+
+    DRing::AudioFrame out;
+    auto output = out.pointer();
+    output->format = AV_SAMPLE_FMT_FLT;
+    output->sample_rate = 48000;
+    output->channel_layout = AV_CH_LAYOUT_STEREO;
+
+    int ret = resampler_->resample(input, output);
+    CPPUNIT_ASSERT_MESSAGE(libav_utils::getError(ret).c_str(), ret >= 0);
+    CPPUNIT_ASSERT(output->data && output->data[0]);
+    CPPUNIT_ASSERT(output->data[0][0] == 0);
+}
+
 }} // namespace ring::test
 
 RING_TEST_RUNNER(ring::test::ResamplerTest::name());
-- 
GitLab