feat(audio): formalize runtime effects and wav loading

This commit is contained in:
2026-04-19 00:26:28 +08:00
parent 8164baba0a
commit d2017b251c
13 changed files with 518 additions and 254 deletions

View File

@@ -65,7 +65,10 @@ TEST(AudioLoader, ParseWAV_Mono44100_16bit) {
EXPECT_EQ(clip->GetSampleRate(), 44100u);
EXPECT_EQ(clip->GetChannels(), 1u);
EXPECT_EQ(clip->GetBitsPerSample(), 16u);
EXPECT_GT(clip->GetDuration(), 0.0f);
EXPECT_EQ(clip->GetPCMData().Size(), 44100u * sizeof(int16_t));
EXPECT_EQ(clip->GetFrameCount(), 44100u);
EXPECT_EQ(clip->GetSampleCount(), 44100u);
EXPECT_FLOAT_EQ(clip->GetDuration(), 1.0f);
}
std::remove(testPath);
@@ -84,6 +87,10 @@ TEST(AudioLoader, ParseWAV_Stereo48000_16bit) {
EXPECT_EQ(clip->GetSampleRate(), 48000u);
EXPECT_EQ(clip->GetChannels(), 2u);
EXPECT_EQ(clip->GetBitsPerSample(), 16u);
EXPECT_EQ(clip->GetPCMData().Size(), 4800u * 2u * sizeof(int16_t));
EXPECT_EQ(clip->GetFrameCount(), 4800u);
EXPECT_EQ(clip->GetSampleCount(), 9600u);
EXPECT_FLOAT_EQ(clip->GetDuration(), 0.1f);
}
std::remove(testPath);
@@ -97,14 +104,15 @@ TEST(AudioLoader, GetResourceType) {
TEST(AudioLoader, GetSupportedExtensions) {
AudioLoader loader;
auto extensions = loader.GetSupportedExtensions();
EXPECT_GE(extensions.Size(), 1u);
ASSERT_EQ(extensions.Size(), 1u);
EXPECT_EQ(extensions[0], XCEngine::Containers::String("wav"));
}
TEST(AudioLoader, CanLoad) {
AudioLoader loader;
EXPECT_TRUE(loader.CanLoad("test.wav"));
EXPECT_TRUE(loader.CanLoad("test.mp3"));
EXPECT_TRUE(loader.CanLoad("test.ogg"));
EXPECT_FALSE(loader.CanLoad("test.mp3"));
EXPECT_FALSE(loader.CanLoad("test.ogg"));
EXPECT_FALSE(loader.CanLoad("test.txt"));
EXPECT_FALSE(loader.CanLoad("test.png"));
}
@@ -115,4 +123,13 @@ TEST(AudioLoader, LoadInvalidPath) {
EXPECT_FALSE(result);
}
TEST(AudioLoader, ResourceManagerRegistersAudioLoader) {
ResourceManager& manager = ResourceManager::Get();
manager.Initialize();
EXPECT_NE(manager.GetLoader(ResourceType::AudioClip), nullptr);
manager.Shutdown();
}
} // namespace