Refactor code structure for improved readability and maintainability
This commit is contained in:
parent
b47641feaa
commit
4f488bae45
78 changed files with 3309 additions and 1570 deletions
57
dotnet/src/TwitchArchive.Tests/ProcessorServiceTests.cs
Normal file
57
dotnet/src/TwitchArchive.Tests/ProcessorServiceTests.cs
Normal 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 { }
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue