Refactor code structure for improved readability and maintainability

This commit is contained in:
MaddoScientisto 2026-02-21 10:40:12 +01:00
commit 4f488bae45
78 changed files with 3309 additions and 1570 deletions

View file

@ -0,0 +1,57 @@
using System;
using System.IO;
using System.Threading.Tasks;
using Moq;
using Xunit;
using TwitchArchive.Core.Services;
namespace TwitchArchive.Tests
{
public class ProcessorServiceTests : IDisposable
{
private readonly string _tmp;
public ProcessorServiceTests()
{
_tmp = Path.Combine(Path.GetTempPath(), "ta_proc_" + Guid.NewGuid().ToString("N"));
Directory.CreateDirectory(_tmp);
}
[Fact]
public async Task ProcessRawStream_CallsFfmpeg_CopyMode()
{
var mock = new Mock<IProcessRunner>();
mock.Setup(r => r.RunAsync(It.IsAny<ProcessRunOptions>(), default)).ReturnsAsync(new ProcessRunResult { ExitCode = 0 });
var svc = new ProcessorService(mock.Object);
var raw = Path.Combine(_tmp, "in.ts");
var outp = Path.Combine(_tmp, "out.mp4");
File.WriteAllText(raw, "x");
var ok = await svc.ProcessRawStreamAsync(raw, outp, "best");
Assert.True(ok);
mock.Verify(r => r.RunAsync(It.Is<ProcessRunOptions>(o => o.FileName == "ffmpeg" && o.Arguments.Contains("-c:v copy")), default), Times.Once);
}
[Fact]
public async Task ProcessRawStream_AudioOnly_UsesAac()
{
var mock = new Mock<IProcessRunner>();
mock.Setup(r => r.RunAsync(It.IsAny<ProcessRunOptions>(), default)).ReturnsAsync(new ProcessRunResult { ExitCode = 0 });
var svc = new ProcessorService(mock.Object);
var raw = Path.Combine(_tmp, "in.ts");
var outp = Path.Combine(_tmp, "out.mp4");
File.WriteAllText(raw, "x");
var ok = await svc.ProcessRawStreamAsync(raw, outp, "audio_only");
Assert.True(ok);
mock.Verify(r => r.RunAsync(It.Is<ProcessRunOptions>(o => o.FileName == "ffmpeg" && o.Arguments.Contains("-vn") && o.Arguments.Contains("-c:a aac")), default), Times.Once);
}
public void Dispose()
{
try { Directory.Delete(_tmp, true); } catch { }
}
}
}