From b7aafeb586a8aef8f11bf7c8aca4754d93a23d22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=91=D0=B0=D0=B3?= =?UTF-8?q?=D1=80=D1=8F=D0=BD=D1=86=D0=B5=D0=B2?= Date: Thu, 30 Apr 2020 15:14:10 +0300 Subject: [PATCH] Added Fluent tests --- FFMpegCore.Test/ArgumentBuilderTest.cs | 219 +++++++++++++++++++++++++ 1 file changed, 219 insertions(+) diff --git a/FFMpegCore.Test/ArgumentBuilderTest.cs b/FFMpegCore.Test/ArgumentBuilderTest.cs index cde8da2..482830d 100644 --- a/FFMpegCore.Test/ArgumentBuilderTest.cs +++ b/FFMpegCore.Test/ArgumentBuilderTest.cs @@ -1,4 +1,5 @@ using FFMpegCore.FFMPEG.Argument; +using FFMpegCore.FFMPEG.Argument.Fluent; using FFMpegCore.FFMPEG.Enums; using Microsoft.VisualStudio.TestTools.UnitTesting; using System; @@ -31,6 +32,18 @@ private string GetArgumentsString(params Argument[] args) return builder.BuildArguments(container); } + private string GetArgumentsString(ArgumentContainer container) + { + var resContainer = new ArgumentContainer { new InputArgument("input.mp4") }; + foreach (var a in container) + { + resContainer.Add(a.Value); + } + resContainer.Add(new OutputArgument("output.mp4")); + + return builder.BuildArguments(resContainer); + } + [TestMethod] public void Builder_BuildString_IO_1() @@ -48,6 +61,15 @@ public void Builder_BuildString_Scale() Assert.AreEqual(str, "-i \"input.mp4\" -vf scale=-1:720 \"output.mp4\""); } + + [TestMethod] + public void Builder_BuildString_Scale_Fluent() + { + var str = GetArgumentsString(new ArgumentContainer().Scale(VideoSize.Hd)); + + Assert.AreEqual(str, "-i \"input.mp4\" -vf scale=-1:720 \"output.mp4\""); + } + [TestMethod] public void Builder_BuildString_AudioCodec() { @@ -55,6 +77,14 @@ public void Builder_BuildString_AudioCodec() Assert.AreEqual(str, "-i \"input.mp4\" -c:a aac -b:a 128k \"output.mp4\""); } + + [TestMethod] + public void Builder_BuildString_AudioCodec_Fluent() + { + var str = GetArgumentsString(new ArgumentContainer().AudioCodec(AudioCodec.Aac, AudioQuality.Normal)); + Assert.AreEqual(str, "-i \"input.mp4\" -c:a aac -b:a 128k \"output.mp4\""); + } + [TestMethod] public void Builder_BuildString_BitStream() { @@ -63,6 +93,14 @@ public void Builder_BuildString_BitStream() Assert.AreEqual(str, "-i \"input.mp4\" -bsf:a h264_mp4toannexb \"output.mp4\""); } + [TestMethod] + public void Builder_BuildString_BitStream_Fluent() + { + var str = GetArgumentsString(new ArgumentContainer().BitStreamFilter(Channel.Audio, Filter.H264_Mp4ToAnnexB)); + + Assert.AreEqual(str, "-i \"input.mp4\" -bsf:a h264_mp4toannexb \"output.mp4\""); + } + [TestMethod] public void Builder_BuildString_Concat() { @@ -74,6 +112,20 @@ public void Builder_BuildString_Concat() Assert.AreEqual(str, "-i \"concat:1.mp4|2.mp4|3.mp4|4.mp4\" \"output.mp4\""); } + + [TestMethod] + public void Builder_BuildString_Concat_Fluent() + { + var container = new ArgumentContainer() + .Concat(concatFiles) + .Output("output.mp4"); + + + var str = builder.BuildArguments(container); + + Assert.AreEqual(str, "-i \"concat:1.mp4|2.mp4|3.mp4|4.mp4\" \"output.mp4\""); + } + [TestMethod] public void Builder_BuildString_Copy_Audio() { @@ -82,6 +134,13 @@ public void Builder_BuildString_Copy_Audio() Assert.AreEqual(str, "-i \"input.mp4\" -c:a copy \"output.mp4\""); } + [TestMethod] + public void Builder_BuildString_Copy_Audio_Fluent() + { + var str = GetArgumentsString(new ArgumentContainer().Copy(Channel.Audio)); + + Assert.AreEqual(str, "-i \"input.mp4\" -c:a copy \"output.mp4\""); + } [TestMethod] public void Builder_BuildString_Copy_Video() @@ -91,6 +150,15 @@ public void Builder_BuildString_Copy_Video() Assert.AreEqual(str, "-i \"input.mp4\" -c:v copy \"output.mp4\""); } + [TestMethod] + public void Builder_BuildString_Copy_Video_Fluent() + { + var str = GetArgumentsString(new ArgumentContainer().Copy(Channel.Video)); + + Assert.AreEqual(str, "-i \"input.mp4\" -c:v copy \"output.mp4\""); + } + + [TestMethod] public void Builder_BuildString_Copy_Both() { @@ -99,6 +167,14 @@ public void Builder_BuildString_Copy_Both() Assert.AreEqual(str, "-i \"input.mp4\" -c copy \"output.mp4\""); } + [TestMethod] + public void Builder_BuildString_Copy_Both_Fluent() + { + var str = GetArgumentsString(new ArgumentContainer().Copy(Channel.Both)); + + Assert.AreEqual(str, "-i \"input.mp4\" -c copy \"output.mp4\""); + } + [TestMethod] public void Builder_BuildString_CpuSpeed() { @@ -107,6 +183,14 @@ public void Builder_BuildString_CpuSpeed() Assert.AreEqual(str, "-i \"input.mp4\" -quality good -cpu-used 10 -deadline realtime \"output.mp4\""); } + [TestMethod] + public void Builder_BuildString_CpuSpeed_Fluent() + { + var str = GetArgumentsString(new ArgumentContainer().CpuSpeed(10)); + + Assert.AreEqual(str, "-i \"input.mp4\" -quality good -cpu-used 10 -deadline realtime \"output.mp4\""); + } + [TestMethod] public void Builder_BuildString_ForceFormat() { @@ -115,6 +199,14 @@ public void Builder_BuildString_ForceFormat() Assert.AreEqual(str, "-i \"input.mp4\" -f libx264 \"output.mp4\""); } + [TestMethod] + public void Builder_BuildString_ForceFormat_Fluent() + { + var str = GetArgumentsString(new ArgumentContainer().ForceFormat(VideoCodec.LibX264)); + + Assert.AreEqual(str, "-i \"input.mp4\" -f libx264 \"output.mp4\""); + } + [TestMethod] public void Builder_BuildString_FrameOutputCount() { @@ -123,6 +215,14 @@ public void Builder_BuildString_FrameOutputCount() Assert.AreEqual(str, "-i \"input.mp4\" -vframes 50 \"output.mp4\""); } + [TestMethod] + public void Builder_BuildString_FrameOutputCount_Fluent() + { + var str = GetArgumentsString(new ArgumentContainer().FrameOutputCount(50)); + + Assert.AreEqual(str, "-i \"input.mp4\" -vframes 50 \"output.mp4\""); + } + [TestMethod] public void Builder_BuildString_FrameRate() { @@ -131,6 +231,14 @@ public void Builder_BuildString_FrameRate() Assert.AreEqual(str, "-i \"input.mp4\" -r 50 \"output.mp4\""); } + [TestMethod] + public void Builder_BuildString_FrameRate_Fluent() + { + var str = GetArgumentsString(new ArgumentContainer().FrameRate(50)); + + Assert.AreEqual(str, "-i \"input.mp4\" -r 50 \"output.mp4\""); + } + [TestMethod] public void Builder_BuildString_Loop() { @@ -139,6 +247,14 @@ public void Builder_BuildString_Loop() Assert.AreEqual(str, "-i \"input.mp4\" -loop 50 \"output.mp4\""); } + [TestMethod] + public void Builder_BuildString_Loop_Fluent() + { + var str = GetArgumentsString(new ArgumentContainer().Loop(50)); + + Assert.AreEqual(str, "-i \"input.mp4\" -loop 50 \"output.mp4\""); + } + [TestMethod] public void Builder_BuildString_Seek() { @@ -147,6 +263,14 @@ public void Builder_BuildString_Seek() Assert.AreEqual(str, "-i \"input.mp4\" -ss 00:00:10 \"output.mp4\""); } + [TestMethod] + public void Builder_BuildString_Seek_Fluent() + { + var str = GetArgumentsString(new ArgumentContainer().Seek(TimeSpan.FromSeconds(10))); + + Assert.AreEqual(str, "-i \"input.mp4\" -ss 00:00:10 \"output.mp4\""); + } + [TestMethod] public void Builder_BuildString_Shortest() { @@ -155,6 +279,14 @@ public void Builder_BuildString_Shortest() Assert.AreEqual(str, "-i \"input.mp4\" -shortest \"output.mp4\""); } + [TestMethod] + public void Builder_BuildString_Shortest_Fluent() + { + var str = GetArgumentsString(new ArgumentContainer().Shortest()); + + Assert.AreEqual(str, "-i \"input.mp4\" -shortest \"output.mp4\""); + } + [TestMethod] public void Builder_BuildString_Size() { @@ -163,6 +295,14 @@ public void Builder_BuildString_Size() Assert.AreEqual(str, "-i \"input.mp4\" -s 1920x1080 \"output.mp4\""); } + [TestMethod] + public void Builder_BuildString_Size_Fluent() + { + var str = GetArgumentsString(new ArgumentContainer().Size(1920, 1080)); + + Assert.AreEqual(str, "-i \"input.mp4\" -s 1920x1080 \"output.mp4\""); + } + [TestMethod] public void Builder_BuildString_Speed() { @@ -171,6 +311,14 @@ public void Builder_BuildString_Speed() Assert.AreEqual(str, "-i \"input.mp4\" -preset fast \"output.mp4\""); } + [TestMethod] + public void Builder_BuildString_Speed_Fluent() + { + var str = GetArgumentsString(new ArgumentContainer().Speed(Speed.Fast)); + + Assert.AreEqual(str, "-i \"input.mp4\" -preset fast \"output.mp4\""); + } + [TestMethod] public void Builder_BuildString_DrawtextFilter() { @@ -186,6 +334,27 @@ public void Builder_BuildString_DrawtextFilter() Assert.AreEqual("-i \"input.mp4\" -vf drawtext=\"text='Stack Overflow': fontfile=/path/to/font.ttf: fontcolor=white: fontsize=24: box=1: boxcolor=black@0.5: boxborderw=5: x=(w-text_w)/2: y=(h-text_h)/2\" \"output.mp4\"", str); } + [TestMethod] + public void Builder_BuildString_DrawtextFilter_Fluent() + { + var container = new ArgumentContainer(). + DrawText((options) => + { + options.Text = "Stack Overflow"; + options.FontPath = "/path/to/font.ttf"; + options.AddParam("fontcolor", "white") + .AddParam("fontsize", "24") + .AddParam("box", "1") + .AddParam("boxcolor", "black@0.5") + .AddParam("boxborderw", "5") + .AddParam("x", "(w-text_w)/2") + .AddParam("y", "(h-text_h)/2"); + }); + var str = GetArgumentsString(container); + + Assert.AreEqual("-i \"input.mp4\" -vf drawtext=\"text='Stack Overflow': fontfile=/path/to/font.ttf: fontcolor=white: fontsize=24: box=1: boxcolor=black@0.5: boxborderw=5: x=(w-text_w)/2: y=(h-text_h)/2\" \"output.mp4\"", str); + } + [TestMethod] public void Builder_BuildString_StartNumber() { @@ -194,6 +363,15 @@ public void Builder_BuildString_StartNumber() Assert.AreEqual(str, "-i \"input.mp4\" -start_number 50 \"output.mp4\""); } + + [TestMethod] + public void Builder_BuildString_StartNumber_Fluent() + { + var str = GetArgumentsString(new ArgumentContainer().StartNumber(50)); + + Assert.AreEqual(str, "-i \"input.mp4\" -start_number 50 \"output.mp4\""); + } + [TestMethod] public void Builder_BuildString_Threads_1() { @@ -202,6 +380,14 @@ public void Builder_BuildString_Threads_1() Assert.AreEqual(str, "-i \"input.mp4\" -threads 50 \"output.mp4\""); } + [TestMethod] + public void Builder_BuildString_Threads_1_Fluent() + { + var str = GetArgumentsString(new ArgumentContainer().Threads(50)); + + Assert.AreEqual(str, "-i \"input.mp4\" -threads 50 \"output.mp4\""); + } + [TestMethod] public void Builder_BuildString_Threads_2() { @@ -210,6 +396,14 @@ public void Builder_BuildString_Threads_2() Assert.AreEqual(str, $"-i \"input.mp4\" -threads {Environment.ProcessorCount} \"output.mp4\""); } + [TestMethod] + public void Builder_BuildString_Threads_2_Fluent() + { + var str = GetArgumentsString(new ArgumentContainer().MultiThreaded()); + + Assert.AreEqual(str, $"-i \"input.mp4\" -threads {Environment.ProcessorCount} \"output.mp4\""); + } + [TestMethod] public void Builder_BuildString_Codec() @@ -219,6 +413,14 @@ public void Builder_BuildString_Codec() Assert.AreEqual(str, "-i \"input.mp4\" -c:v libx264 -pix_fmt yuv420p \"output.mp4\""); } + [TestMethod] + public void Builder_BuildString_Codec_Fluent() + { + var str = GetArgumentsString(new ArgumentContainer().VideoCodec(VideoCodec.LibX264)); + + Assert.AreEqual(str, "-i \"input.mp4\" -c:v libx264 -pix_fmt yuv420p \"output.mp4\""); + } + [TestMethod] public void Builder_BuildString_Codec_Override() { @@ -227,11 +429,28 @@ public void Builder_BuildString_Codec_Override() Assert.AreEqual(str, "-i \"input.mp4\" -c:v libx264 -pix_fmt yuv420p -y \"output.mp4\""); } + [TestMethod] + public void Builder_BuildString_Codec_Override_Fluent() + { + var str = GetArgumentsString(new ArgumentContainer().VideoCodec(VideoCodec.LibX264).Override()); + + Assert.AreEqual(str, "-i \"input.mp4\" -c:v libx264 -pix_fmt yuv420p -y \"output.mp4\""); + } + + [TestMethod] public void Builder_BuildString_Duration() { var str = GetArgumentsString(new DurationArgument(TimeSpan.FromSeconds(20))); Assert.AreEqual(str, "-i \"input.mp4\" -t 00:00:20 \"output.mp4\""); } + + [TestMethod] + public void Builder_BuildString_Duration_Fluent() + { + var str = GetArgumentsString(new ArgumentContainer().Duration(TimeSpan.FromSeconds(20))); + + Assert.AreEqual(str, "-i \"input.mp4\" -t 00:00:20 \"output.mp4\""); + } } }