From 65c6eb78e3eb5706e883c097ca7f250e5125f288 Mon Sep 17 00:00:00 2001 From: Squareys Date: Wed, 2 Sep 2015 19:25:26 +0200 Subject: [PATCH] Audio: Expand RendererTest Signed-off-by: Squareys --- src/Magnum/Audio/CMakeLists.txt | 2 +- src/Magnum/Audio/Renderer.h | 4 ++ src/Magnum/Audio/Test/RendererTest.cpp | 79 +++++++++++++++++++++++++- 3 files changed, 83 insertions(+), 2 deletions(-) diff --git a/src/Magnum/Audio/CMakeLists.txt b/src/Magnum/Audio/CMakeLists.txt index 68f69f923..da1aec30f 100644 --- a/src/Magnum/Audio/CMakeLists.txt +++ b/src/Magnum/Audio/CMakeLists.txt @@ -54,7 +54,7 @@ if(BUILD_STATIC_PIC) set_target_properties(MagnumAudio PROPERTIES POSITION_INDEPENDENT_CODE ON) endif() -target_link_libraries(MagnumAudio ${CORRADE_PLUGINMANAGER_LIBRARIES} ${OPENAL_LIBRARY}) +target_link_libraries(MagnumAudio Magnum ${CORRADE_PLUGINMANAGER_LIBRARIES} ${OPENAL_LIBRARY}) install(TARGETS MagnumAudio RUNTIME DESTINATION ${MAGNUM_BINARY_INSTALL_DIR} diff --git a/src/Magnum/Audio/Renderer.h b/src/Magnum/Audio/Renderer.h index 027c1a73f..523338762 100644 --- a/src/Magnum/Audio/Renderer.h +++ b/src/Magnum/Audio/Renderer.h @@ -29,6 +29,8 @@ * @brief Class @ref Magnum::Audio::Renderer */ +#include + #include #include "Magnum/Magnum.h" @@ -90,6 +92,8 @@ class Renderer { /** * @brief Listener orientation + * + * The returned array consists of forward (index 0) and up (index 1) vectors. * @see @ref setListenerOrientation(), @fn_al{GetListenerfv} with @def_al{ORIENTATION} */ static std::array listenerOrientation() { diff --git a/src/Magnum/Audio/Test/RendererTest.cpp b/src/Magnum/Audio/Test/RendererTest.cpp index 5d3ae3829..ff3b23ae6 100644 --- a/src/Magnum/Audio/Test/RendererTest.cpp +++ b/src/Magnum/Audio/Test/RendererTest.cpp @@ -26,6 +26,8 @@ #include #include +#include "Magnum/Magnum.h" +#include "Magnum/Audio/Context.h" #include "Magnum/Audio/Renderer.h" namespace Magnum { namespace Audio { namespace Test { @@ -34,10 +36,28 @@ struct RendererTest: TestSuite::Tester { explicit RendererTest(); void debugError(); + void debugDistanceModel(); + void listenerOrientation(); + void listenerPosition(); + void listenerVelocity(); + void listenerGain(); + void speedOfSound(); + void dopplerFactor(); + void distanceModel(); + + Context _context; }; RendererTest::RendererTest() { - addTests({&RendererTest::debugError}); + addTests({&RendererTest::debugError, + &RendererTest::debugDistanceModel, + &RendererTest::listenerOrientation, + &RendererTest::listenerPosition, + &RendererTest::listenerVelocity, + &RendererTest::listenerGain, + &RendererTest::speedOfSound, + &RendererTest::dopplerFactor, + &RendererTest::distanceModel}); } void RendererTest::debugError() { @@ -46,6 +66,63 @@ void RendererTest::debugError() { CORRADE_COMPARE(out.str(), "Audio::Renderer::Error::InvalidOperation\n"); } +void RendererTest::debugDistanceModel() { + std::ostringstream out; + Debug(&out) << Renderer::DistanceModel::Inverse; + CORRADE_COMPARE(out.str(), "Audio::Renderer::DistanceModel::Inverse\n"); +} + +void RendererTest::listenerOrientation() { + constexpr Vector3 up{1.0f, 2.0f, 3.0f}, fwd{3.0f, 2.0f, 1.0f}; + Renderer::setListenerOrientation(fwd, up); + std::array orientation = Renderer::listenerOrientation(); + + CORRADE_COMPARE(orientation[0], fwd); + CORRADE_COMPARE(orientation[1], up); +} + +void RendererTest::listenerPosition() { + constexpr Vector3 pos{1.0f, 3.0f, 2.0f}; + Renderer::setListenerPosition(pos); + + CORRADE_COMPARE(Renderer::listenerPosition(), pos); +} + +void RendererTest::listenerVelocity() { + constexpr Vector3 vel{1.0f, 3.0f, 2.0f}; + Renderer::setListenerVelocity(vel); + + CORRADE_COMPARE(Renderer::listenerVelocity(), vel); +} + +void RendererTest::listenerGain() { + constexpr Float gain = 0.512f; + Renderer::setListenerGain(gain); + + CORRADE_COMPARE(Renderer::listenerGain(), gain); +} + +void RendererTest::speedOfSound() { + constexpr Float speed = 1.25f; + Renderer::setSpeedOfSound(speed); + + CORRADE_COMPARE(Renderer::speedOfSound(), speed); +} + +void RendererTest::dopplerFactor() { + constexpr Float factor = 0.3335f; + Renderer::setDopplerFactor(factor); + + CORRADE_COMPARE(Renderer::dopplerFactor(), factor); +} + +void RendererTest::distanceModel() { + constexpr Renderer::DistanceModel model = Renderer::DistanceModel::InverseClamped; + Renderer::setDistanceModel(model); + + CORRADE_COMPARE(Renderer::distanceModel(), model); +} + }}} CORRADE_TEST_MAIN(Magnum::Audio::Test::RendererTest)