Browse Source

Audio: Expand Source test and fix bugs revealed in the process

Only minor copy past bugs introduced when implementing the getters.

Signed-off-by: Squareys <Squareys@googlemail.com>
pull/107/head
Squareys 11 years ago
parent
commit
2275544fa9
  1. 3
      src/Magnum/Audio/Source.h
  2. 123
      src/Magnum/Audio/Test/SourceTest.cpp

3
src/Magnum/Audio/Source.h

@ -5,6 +5,7 @@
Copyright © 2010, 2011, 2012, 2013, 2014, 2015
Vladimír Vondruš <mosra@centrum.cz>
Copyright © 2015 Jonathan Hale <squareys@googlemail.com>
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
@ -346,7 +347,7 @@ class MAGNUM_AUDIO_EXPORT Source {
*/
Vector3 direction() const {
Vector3 direction;
alGetSourcef(_id, AL_DIRECTION, direction.data());
alGetSourcefv(_id, AL_DIRECTION, direction.data());
return direction;
}

123
src/Magnum/Audio/Test/SourceTest.cpp

@ -26,6 +26,7 @@
#include <sstream>
#include <Corrade/TestSuite/Tester.h>
#include "Magnum/Audio/Context.h"
#include "Magnum/Audio/Source.h"
namespace Magnum { namespace Audio { namespace Test {
@ -34,10 +35,34 @@ struct SourceTest: TestSuite::Tester {
explicit SourceTest();
void debugState();
void position();
void direction();
void velocity();
void gain();
void looping();
void relative();
void maxDistance();
void maxGain();
void minGain();
void coneAnglesAndGain();
void rolloffFactor();
Context _context;
};
SourceTest::SourceTest() {
addTests({&SourceTest::debugState});
addTests({&SourceTest::debugState,
&SourceTest::position,
&SourceTest::direction,
&SourceTest::velocity,
&SourceTest::gain,
&SourceTest::looping,
&SourceTest::relative,
&SourceTest::maxDistance,
&SourceTest::maxGain,
&SourceTest::minGain,
&SourceTest::coneAnglesAndGain,
&SourceTest::rolloffFactor});
}
void SourceTest::debugState() {
@ -46,6 +71,102 @@ void SourceTest::debugState() {
CORRADE_COMPARE(out.str(), "Audio::Source::State::Playing\n");
}
void SourceTest::position() {
Source source;
constexpr Vector3 pos{3.0f, 5.0f, 6.0f};
source.setPosition(pos);
CORRADE_COMPARE(source.position(), pos);
}
void SourceTest::direction() {
Source source;
constexpr Vector3 dir{3.0f, 1.0f, 2.0f};
source.setDirection(dir);
CORRADE_COMPARE(source.direction(), dir);
}
void SourceTest::velocity() {
Source source;
constexpr Vector3 vel{-3.0f, 5.0f, -6.0f};
source.setVelocity(vel);
CORRADE_COMPARE(source.velocity(), vel);
}
void SourceTest::gain() {
Source source;
constexpr Float gain = 0.1234f;
source.setGain(gain);
CORRADE_COMPARE(source.gain(), gain);
}
void SourceTest::looping() {
Source source;
source.setLooping(true);
CORRADE_VERIFY(source.isLooping());
source.setLooping(false);
CORRADE_VERIFY(!source.isLooping());
}
void SourceTest::relative() {
Source source;
source.setRelative(true);
CORRADE_VERIFY(source.isRelative());
source.setRelative(false);
CORRADE_VERIFY(!source.isRelative());
}
void SourceTest::maxDistance() {
Source source;
constexpr Float dist = 0.222f;
source.setMaxDistance(dist);
CORRADE_COMPARE(source.maxDistance(), dist);
}
void SourceTest::maxGain() {
Source source;
constexpr Float gain = 0.3131f;
source.setMaxGain(gain);
CORRADE_COMPARE(source.maxGain(), gain);
}
void SourceTest::minGain() {
Source source;
constexpr Float gain = 0.4144f;
source.setMinGain(gain);
CORRADE_COMPARE(source.minGain(), gain);
}
void SourceTest::coneAnglesAndGain() {
Source source;
constexpr auto outerAngle = 12.0_degf;
constexpr auto innerAngle = 21.0_degf;
constexpr Float outerGain = 0.05f;
source.setInnerConeAngle(innerAngle);
source.setOuterConeAngle(outerAngle);
source.setOuterConeGain(outerGain);
CORRADE_COMPARE(source.outerConeAngle(), outerAngle);
CORRADE_COMPARE(source.innerConeAngle(), innerAngle);
CORRADE_COMPARE(source.outerConeGain(), outerGain);
}
void SourceTest::rolloffFactor() {
Source source;
constexpr Float fact = 42.0f;
source.setRolloffFactor(fact);
CORRADE_COMPARE(source.rolloffFactor(), fact);
}
}}}
CORRADE_TEST_MAIN(Magnum::Audio::Test::SourceTest)

Loading…
Cancel
Save