/* * @file Decoders_tests.cpp * @author Mateusz Piesta (mateusz.piesta@mudita.com) * @date 24.07.19 * @brief * @copyright Copyright (C) 2019 mudita.com * @details */ #include #include #include #include #include "catch.hpp" #include "Audio/decoder/decoder.hpp" using namespace audio; TEST_CASE( "Decoder tests" ) { auto cwd = vfs.getcurrdir(); cwd = cwd.substr(0,cwd.find_last_of("/\\")); cwd = cwd.append("/module-audio/tests/samples"); SECTION("Sample1.wav 16bit 44100Hz stereo") { auto dec = decoder::decoder::Create((cwd + "/sample1.wav").c_str()); REQUIRE(dec != nullptr); auto tag = dec->fetchTags(); SECTION( "Init values:" ) { REQUIRE( tag->total_duration_s == 5 ); REQUIRE( tag->artist == "" ); REQUIRE( tag->album == "" ); REQUIRE( tag->title == "sample1.wav" ); REQUIRE( tag->sample_rate == 44100 ); REQUIRE( tag->num_channel == 2 ); } /* SECTION( "Set positions:" ) { dec->setPosition(0.5); REQUIRE( dec->getCurrentPosition() == 336/2 ); dec->setPosition(0); REQUIRE( dec->getCurrentPosition() == 0 ); dec->setPosition(1); REQUIRE( dec->getCurrentPosition() == 336 ); dec->setPosition(0.25); REQUIRE( dec->getCurrentPosition() == 336/4 ); }*/ } SECTION("Sample1.mp3-> CBR 320Kb stereo") { auto dec = decoder::decoder::Create((cwd + "/sample1.mp3").c_str()); REQUIRE(dec != nullptr); auto tag = dec->fetchTags(); SECTION( "Init values:" ) { REQUIRE( tag->total_duration_s == 5 ); REQUIRE( tag->artist == "" ); REQUIRE( tag->album == "" ); REQUIRE( tag->title == "sample1.mp3" ); REQUIRE( tag->sample_rate == 44100 ); REQUIRE( tag->num_channel == 2 ); } /* SECTION( "Set positions:" ) { dec->setPosition(0.5); REQUIRE( dec->getCurrentPosition() == 336/2 ); dec->setPosition(0); REQUIRE( dec->getCurrentPosition() == 0 ); dec->setPosition(1); REQUIRE( dec->getCurrentPosition() == 336 ); dec->setPosition(0.25); REQUIRE( dec->getCurrentPosition() == 336/4 ); }*/ } SECTION("Sample1.flac-> stereo") { auto dec = decoder::decoder::Create((cwd + "/sample1.flac").c_str()); REQUIRE(dec != nullptr); auto tag = dec->fetchTags(); SECTION( "Init values:" ) { REQUIRE( tag->total_duration_s == 5 ); REQUIRE( tag->artist == "" ); REQUIRE( tag->album == "" ); REQUIRE( tag->title == "sample1.flac" ); REQUIRE( tag->sample_rate == 44100 ); REQUIRE( tag->num_channel == 2 ); } /* SECTION( "Set positions:" ) { dec->setPosition(0.5); REQUIRE( dec->getCurrentPosition() == 336/2 ); dec->setPosition(0); REQUIRE( dec->getCurrentPosition() == 0 ); dec->setPosition(1); REQUIRE( dec->getCurrentPosition() == 336 ); dec->setPosition(0.25); REQUIRE( dec->getCurrentPosition() == 336/4 ); }*/ } SECTION("Sample2.flac-> with tags") { auto dec = decoder::decoder::Create((cwd + "/sample2.flac").c_str()); REQUIRE(dec != nullptr); auto tag = dec->fetchTags(); SECTION( "Init values:" ) { REQUIRE( tag->total_duration_s == 5 ); REQUIRE( tag->artist == "sample1_artist" ); REQUIRE( tag->album == "sample1_album" ); REQUIRE( tag->title == "sample1_title" ); REQUIRE( tag->genre == "Easy Listening" ); REQUIRE( tag->year == "1999" ); REQUIRE( tag->sample_rate == 44100 ); REQUIRE( tag->num_channel == 2 ); } /* SECTION( "Set positions:" ) { dec->setPosition(0.5); REQUIRE( dec->getCurrentPosition() == 336/2 ); dec->setPosition(0); REQUIRE( dec->getCurrentPosition() == 0 ); dec->setPosition(1); REQUIRE( dec->getCurrentPosition() == 336 ); dec->setPosition(0.25); REQUIRE( dec->getCurrentPosition() == 336/4 ); }*/ } SECTION("Sample2.mp3-> with tags") { auto dec = decoder::decoder::Create((cwd + "/sample2.mp3").c_str()); REQUIRE(dec != nullptr); auto tag = dec->fetchTags(); SECTION( "Init values:" ) { REQUIRE( tag->total_duration_s == 5 ); REQUIRE( tag->artist == "sample1_artist" ); REQUIRE( tag->album == "sample1_album" ); REQUIRE( tag->title == "sample1_title" ); REQUIRE( tag->genre == "" ); // idtag lib has problems with some tags, skip it REQUIRE( tag->year == "1999" ); REQUIRE( tag->sample_rate == 44100 ); REQUIRE( tag->num_channel == 2 ); } /* SECTION( "Set positions:" ) { dec->setPosition(0.5); REQUIRE( dec->getCurrentPosition() == 336/2 ); dec->setPosition(0); REQUIRE( dec->getCurrentPosition() == 0 ); dec->setPosition(1); REQUIRE( dec->getCurrentPosition() == 336 ); dec->setPosition(0.25); REQUIRE( dec->getCurrentPosition() == 336/4 ); }*/ } SECTION("Sample3.wav-> mono no tags") { auto dec = decoder::decoder::Create((cwd + "/sample3.wav").c_str()); REQUIRE(dec != nullptr); auto tag = dec->fetchTags(); SECTION( "Init values:" ) { REQUIRE( tag->total_duration_s == 5 ); REQUIRE( tag->artist == "" ); REQUIRE( tag->album == "" ); REQUIRE( tag->title == "sample3.wav" ); REQUIRE( tag->sample_rate == 44100 ); REQUIRE( tag->num_channel == 1 ); } /* SECTION( "Set positions:" ) { dec->setPosition(0.5); REQUIRE( dec->getCurrentPosition() == 336/2 ); dec->setPosition(0); REQUIRE( dec->getCurrentPosition() == 0 ); dec->setPosition(1); REQUIRE( dec->getCurrentPosition() == 336 ); dec->setPosition(0.25); REQUIRE( dec->getCurrentPosition() == 336/4 ); }*/ } }