Files
EVEngine/test/editor_audio_waveform.cpp
T
西风逍遥游andCursor 24502babef Nest satellite packages under their host modules.
Keep CMake module names and trim switches, but stop flattening editing/editor and runtime bridges as top-level src/modules directories. Parent scans skip nested facets so runtime-3d can drop authoring by directory leaf.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-06 17:56:12 +08:00

22 lines
1.1 KiB
C++

#include "audio/editor/EditorAudioWaveform.h"
#include "zeroerr/assert.h"
#include "zeroerr/unittest.h"
using namespace eve::editor;
TEST_CASE("editor.audio.waveform_builds_bounded_envelopes_and_loop_diagnostics") {
EditorAudioPcm pcm;
pcm.sampleRate = 4; pcm.channels = 1; pcm.samples = {-1.0F, -0.5F, 0.5F, 1.0F,
0.8F, 0.4F, -0.4F, -0.8F};
AudioWaveformService service;
const auto waveform = service.generate({"asset://sound", 7, 4, 0.25, 1.75}, pcm);
CHECK_EQ(static_cast<int>(waveform.status), static_cast<int>(EditorStatus::Applied));
CHECK_EQ(waveform.sourceRevision, 7U); CHECK_EQ(waveform.duration, 2.0);
REQUIRE_EQ(waveform.envelopes.size(), 1U); CHECK_EQ(waveform.envelopes[0].size(), 4U);
CHECK(waveform.loopStartBucket >= 0); CHECK(waveform.loopEndBucket >= waveform.loopStartBucket);
CHECK(waveform.loopSeamDelta > 0.1); REQUIRE(!waveform.diagnostics.empty());
CHECK_EQ(static_cast<int>(service.generate({"asset://sound", 7, 0, 0.0, 0.0}, pcm).status),
static_cast<int>(EditorStatus::Rejected));
}