diff --git a/src/Magnum/Trade/AnimationData.cpp b/src/Magnum/Trade/AnimationData.cpp index b7be3f127..f9fbd005d 100644 --- a/src/Magnum/Trade/AnimationData.cpp +++ b/src/Magnum/Trade/AnimationData.cpp @@ -78,34 +78,42 @@ Containers::ArrayView AnimationData::mutableData() & { } AnimationTrackType AnimationData::trackType(UnsignedInt id) const { - CORRADE_ASSERT(id < _tracks.size(), "Trade::AnimationData::trackType(): index out of range", {}); + CORRADE_ASSERT(id < _tracks.size(), + "Trade::AnimationData::trackType(): index" << id << "out of range for" << _tracks.size() << "tracks", {}); return _tracks[id]._type; } AnimationTrackType AnimationData::trackResultType(UnsignedInt id) const { - CORRADE_ASSERT(id < _tracks.size(), "Trade::AnimationData::trackResultType(): index out of range", {}); + CORRADE_ASSERT(id < _tracks.size(), + "Trade::AnimationData::trackResultType(): index" << id << "out of range for" << _tracks.size() << "tracks", {}); return _tracks[id]._resultType; } AnimationTrackTargetType AnimationData::trackTargetType(UnsignedInt id) const { - CORRADE_ASSERT(id < _tracks.size(), "Trade::AnimationData::trackTargetType(): index out of range", {}); + CORRADE_ASSERT(id < _tracks.size(), + "Trade::AnimationData::trackTargetType(): index" << id << "out of range for" << _tracks.size() << "tracks", {}); return _tracks[id]._targetType; } UnsignedLong AnimationData::trackTarget(UnsignedInt id) const { - CORRADE_ASSERT(id < _tracks.size(), "Trade::AnimationData::trackTarget(): index out of range", {}); + CORRADE_ASSERT(id < _tracks.size(), + "Trade::AnimationData::trackTarget(): index" << id << "out of range for" << _tracks.size() << "tracks", {}); return _tracks[id]._target; } const Animation::TrackViewStorage& AnimationData::track(UnsignedInt id) const { - CORRADE_ASSERT(id < _tracks.size(), "Trade::AnimationData::track(): index out of range", _tracks[id]._view); + CORRADE_ASSERT(id < _tracks.size(), + "Trade::AnimationData::track(): index" << id << "out of range for" << _tracks.size() << "tracks", _tracks[0]._view); return _tracks[id]._view; } const Animation::TrackViewStorage& AnimationData::mutableTrack(UnsignedInt id) { CORRADE_ASSERT(_dataFlags & DataFlag::Mutable, - "Trade::AnimationData::mutableTrack(): the animation is not mutable", reinterpret_cast&>(_tracks[id]._view)); - CORRADE_ASSERT(id < _tracks.size(), "Trade::AnimationData::track(): index out of range", reinterpret_cast&>(_tracks[id]._view)); + "Trade::AnimationData::mutableTrack(): the animation is not mutable", + reinterpret_cast&>(_tracks[id]._view)); + CORRADE_ASSERT(id < _tracks.size(), + "Trade::AnimationData::mutableTrack(): index" << id << "out of range for" << _tracks.size() << "tracks", + reinterpret_cast&>(_tracks[0]._view)); return reinterpret_cast&>(_tracks[id]._view); } diff --git a/src/Magnum/Trade/Test/AnimationDataTest.cpp b/src/Magnum/Trade/Test/AnimationDataTest.cpp index a11eaa2e9..57900aa76 100644 --- a/src/Magnum/Trade/Test/AnimationDataTest.cpp +++ b/src/Magnum/Trade/Test/AnimationDataTest.cpp @@ -579,19 +579,24 @@ void AnimationDataTest::trackWrongIndex() { std::ostringstream out; Error redirectError{&out}; - AnimationData data{nullptr, nullptr}; - data.trackType(0); - data.trackResultType(0); - data.trackTargetType(0); - data.trackTarget(0); - data.track(0); + AnimationData data{nullptr, { + AnimationTrackData{AnimationTrackType::Vector3, + AnimationTrackTargetType::Scaling3D, 0, {}} + }}; + data.trackType(1); + data.trackResultType(1); + data.trackTargetType(1); + data.trackTarget(1); + data.track(1); + data.mutableTrack(1); CORRADE_COMPARE(out.str(), - "Trade::AnimationData::trackType(): index out of range\n" - "Trade::AnimationData::trackResultType(): index out of range\n" - "Trade::AnimationData::trackTargetType(): index out of range\n" - "Trade::AnimationData::trackTarget(): index out of range\n" - "Trade::AnimationData::track(): index out of range\n"); + "Trade::AnimationData::trackType(): index 1 out of range for 1 tracks\n" + "Trade::AnimationData::trackResultType(): index 1 out of range for 1 tracks\n" + "Trade::AnimationData::trackTargetType(): index 1 out of range for 1 tracks\n" + "Trade::AnimationData::trackTarget(): index 1 out of range for 1 tracks\n" + "Trade::AnimationData::track(): index 1 out of range for 1 tracks\n" + "Trade::AnimationData::mutableTrack(): index 1 out of range for 1 tracks\n"); } void AnimationDataTest::trackWrongType() {