mirror of
https://github.com/unclshura/ABStemPlayer.git
synced 2026-08-07 00:43:38 +00:00
118 lines
3.0 KiB
C#
118 lines
3.0 KiB
C#
using AudioCore.Models;
|
|
using AudioCore.Impl;
|
|
|
|
namespace AudioCore_Tests;
|
|
|
|
[TestClass]
|
|
public sealed class StemWaveformService_RealDecoder_Tests
|
|
{
|
|
private string GetTestInputPath()
|
|
{
|
|
var baseDir = AppDomain.CurrentDomain.BaseDirectory;
|
|
return Path.Combine(baseDir, "Data", "test_input.mp3");
|
|
}
|
|
|
|
private StemTrack CreateStem(string path)
|
|
{
|
|
return new StemTrack
|
|
{
|
|
FilePath = path,
|
|
SampleRate = 44100,
|
|
Channels = 2,
|
|
Duration = TimeSpan.FromSeconds(10),
|
|
Name = "TestStem",
|
|
Type = StemType.Other
|
|
};
|
|
}
|
|
|
|
[TestMethod]
|
|
public void TestInputFileExists()
|
|
{
|
|
var path = GetTestInputPath();
|
|
Assert.IsTrue(File.Exists(path));
|
|
}
|
|
|
|
[TestMethod]
|
|
public async Task ComputeWaveform_RealDecoder_ReturnsCorrectLength()
|
|
{
|
|
var path = GetTestInputPath();
|
|
var pool = new AudioBufferPool();
|
|
|
|
var reader = new FfmpegAudioReader(path);
|
|
var stem = CreateStem(path);
|
|
|
|
using var decoder = new StemDecoder(reader, pool, stem, blockSize: 4096);
|
|
|
|
var service = new StemWaveformService(pool);
|
|
|
|
int segments = 20;
|
|
var result = await service.ComputeWaveformAsync(stem, decoder, segments);
|
|
|
|
Assert.HasCount(segments, result);
|
|
}
|
|
|
|
[TestMethod]
|
|
public async Task ComputeWaveform_RealDecoder_ProducesNonZeroValues()
|
|
{
|
|
var path = GetTestInputPath();
|
|
var pool = new AudioBufferPool();
|
|
|
|
var reader = new FfmpegAudioReader(path);
|
|
var stem = CreateStem(path);
|
|
|
|
using var decoder = new StemDecoder(reader, pool, stem, blockSize: 4096);
|
|
|
|
var service = new StemWaveformService(pool);
|
|
|
|
var result = await service.ComputeWaveformAsync(stem, decoder, 10);
|
|
|
|
bool anyNonZero = false;
|
|
foreach (var v in result)
|
|
{
|
|
if (v > 0f)
|
|
{
|
|
anyNonZero = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
Assert.IsTrue(anyNonZero);
|
|
}
|
|
|
|
[TestMethod]
|
|
public async Task ComputeWaveform_RealDecoder_CallsSeekAndReset()
|
|
{
|
|
var path = GetTestInputPath();
|
|
var pool = new AudioBufferPool();
|
|
|
|
var reader = new FfmpegAudioReader(path);
|
|
var stem = CreateStem(path);
|
|
|
|
using var decoder = new StemDecoder(reader, pool, stem, blockSize: 4096);
|
|
|
|
var service = new StemWaveformService(pool);
|
|
|
|
var result = await service.ComputeWaveformAsync(stem, decoder, 5);
|
|
|
|
Assert.HasCount(5, result);
|
|
}
|
|
|
|
[TestMethod]
|
|
public async Task ComputeWaveform_RealDecoder_HandlesLargeSegmentCount()
|
|
{
|
|
var path = GetTestInputPath();
|
|
var pool = new AudioBufferPool();
|
|
|
|
var reader = new FfmpegAudioReader(path);
|
|
var stem = CreateStem(path);
|
|
|
|
using var decoder = new StemDecoder(reader, pool, stem, blockSize: 4096);
|
|
|
|
var service = new StemWaveformService(pool);
|
|
|
|
var result = await service.ComputeWaveformAsync(stem, decoder, 200);
|
|
|
|
Assert.HasCount(200, result);
|
|
}
|
|
}
|