diff --git a/FFMpegCore.Test/FFMpegArgumentProcessorTest.cs b/FFMpegCore.Test/FFMpegArgumentProcessorTest.cs new file mode 100644 index 0000000..08de91c --- /dev/null +++ b/FFMpegCore.Test/FFMpegArgumentProcessorTest.cs @@ -0,0 +1,84 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using FluentAssertions; + +namespace FFMpegCore.Test +{ + [TestClass] + public class FFMpegArgumentProcessorTest + { + + private static FFMpegArgumentProcessor CreateArgumentProcessor() => FFMpegArguments + .FromFileInput("") + .OutputToFile(""); + + + [TestMethod] + public void Processor_GlobalOptions_GetUsed() + { + + var globalWorkingDir = "Whatever"; + GlobalFFOptions.Configure(new FFOptions { WorkingDirectory = globalWorkingDir }); + + var processor = CreateArgumentProcessor(); + var options2 = processor.GetConfiguredOptions(null); + options2.WorkingDirectory.Should().Be(globalWorkingDir); + } + + [TestMethod] + public void Processor_SessionOptions_GetUsed() + { + + var sessionWorkingDir = "./CurrentRunWorkingDir"; + + var processor = CreateArgumentProcessor(); + processor.Configure(options => options.WorkingDirectory = sessionWorkingDir); + var options = processor.GetConfiguredOptions(null); + + options.WorkingDirectory.Should().Be(sessionWorkingDir); + } + + + [TestMethod] + public void Processor_Options_CanBeOverridden_And_Configured() + { + var globalConfig = "Whatever"; + GlobalFFOptions.Configure(new FFOptions { WorkingDirectory = globalConfig, TemporaryFilesFolder = globalConfig, BinaryFolder = globalConfig }); + + + var processor = CreateArgumentProcessor(); + + var sessionTempDir = "./CurrentRunWorkingDir"; + processor.Configure(options => options.TemporaryFilesFolder = sessionTempDir); + + var overrideOptions = new FFOptions() { WorkingDirectory = "override" }; + var options = processor.GetConfiguredOptions(overrideOptions); + + options.Should().BeEquivalentTo(overrideOptions); + options.TemporaryFilesFolder.Should().BeEquivalentTo(sessionTempDir); + options.BinaryFolder.Should().NotBeEquivalentTo(globalConfig); + } + + + [TestMethod] + public void Options_Global_And_Session_Options_Can_Differ() + { + FFMpegArgumentProcessor CreateArgumentProcessor() => FFMpegArguments + .FromFileInput("") + .OutputToFile(""); + + var globalWorkingDir = "Whatever"; + GlobalFFOptions.Configure(new FFOptions { WorkingDirectory = globalWorkingDir }); + + var processor1 = CreateArgumentProcessor(); + var sessionWorkingDir = "./CurrentRunWorkingDir"; + processor1.Configure(options => options.WorkingDirectory = sessionWorkingDir); + var options1 = processor1.GetConfiguredOptions(null); + options1.WorkingDirectory.Should().Be(sessionWorkingDir); + + + var processor2 = CreateArgumentProcessor(); + var options2 = processor2.GetConfiguredOptions(null); + options2.WorkingDirectory.Should().Be(globalWorkingDir); + } + } +} \ No newline at end of file diff --git a/FFMpegCore.Test/FFMpegCore.Test.csproj b/FFMpegCore.Test/FFMpegCore.Test.csproj index e6831e6..6388724 100644 --- a/FFMpegCore.Test/FFMpegCore.Test.csproj +++ b/FFMpegCore.Test/FFMpegCore.Test.csproj @@ -39,6 +39,7 @@ + diff --git a/FFMpegCore/FFMpeg/FFMpegArgumentProcessor.cs b/FFMpegCore/FFMpeg/FFMpegArgumentProcessor.cs index 209cc36..fdbdcc8 100644 --- a/FFMpegCore/FFMpeg/FFMpegArgumentProcessor.cs +++ b/FFMpegCore/FFMpeg/FFMpegArgumentProcessor.cs @@ -172,7 +172,7 @@ private bool HandleCompletion(bool throwOnError, int exitCode, IReadOnlyList errorData) { if (!throwOnError)