FF-1008 - added more unit tests

This commit is contained in:
John Andrews
2023-07-14 08:08:06 +12:00
parent 116a52d059
commit 008e3e4e58
3 changed files with 55 additions and 15 deletions

View File

@@ -124,22 +124,25 @@ public class FfmpegBuilderAudioTrackReorder : FfmpegBuilderNode
/// <typeparam name="T">the type to reorder</typeparam>
/// <returns>the reordered tracks</returns>
public List<T> Reorder<T>(List<T> input) where T : FfmpegStream
=> Reorder(Languages, OrderedTracks, Channels, input);
public static List<T> Reorder<T>(List<string> languages, List<string> orderedTracks, List<string> channels, List<T> input) where T : FfmpegStream
{
Languages ??= new List<string>();
OrderedTracks ??= new List<string>();
Channels ??= new List<string>();
List<float> actualChannels = Channels.Select(x =>
languages ??= new List<string>();
orderedTracks ??= new List<string>();
channels ??= new List<string>();
List<float> actualChannels = channels.Select(x =>
{
if (float.TryParse(x, out float value))
return value;
return -1f;
}).Where(x => x > 0f).ToList();
if (Languages.Any() == false && OrderedTracks.Any() == false && actualChannels.Any() == false)
if (languages.Any() == false && orderedTracks.Any() == false && actualChannels.Any() == false)
return input; // nothing to do
Languages.Reverse();
OrderedTracks.Reverse();
languages.Reverse();
orderedTracks.Reverse();
actualChannels.Reverse();
const int base_number = 1_000_000_000;
@@ -153,15 +156,15 @@ public class FfmpegBuilderAudioTrackReorder : FfmpegBuilderNode
if (x is FfmpegAudioStream audioStream)
{
langIndex = Languages.IndexOf(audioStream.Stream.Language?.ToLower() ?? String.Empty);
codecIndex = OrderedTracks.IndexOf(audioStream.Stream.Codec?.ToLower() ?? String.Empty);
float channels = audioStream.Channels > 0 ? audioStream.Channels : audioStream.Stream.Channels;
channelIndex = actualChannels.IndexOf(channels);
langIndex = languages.IndexOf(audioStream.Stream.Language?.ToLower() ?? String.Empty);
codecIndex = orderedTracks.IndexOf(audioStream.Stream.Codec?.ToLower() ?? String.Empty);
float asChannels = audioStream.Channels > 0 ? audioStream.Channels : audioStream.Stream.Channels;
channelIndex = actualChannels.IndexOf(asChannels);
}
else if (x is FfmpegSubtitleStream subStream)
{
langIndex = Languages.IndexOf(subStream.Stream.Language?.ToLower() ?? String.Empty);
codecIndex = OrderedTracks.IndexOf(subStream.Stream.Codec?.ToLower() ?? String.Empty);
langIndex = languages.IndexOf(subStream.Stream.Language?.ToLower() ?? String.Empty);
codecIndex = orderedTracks.IndexOf(subStream.Stream.Codec?.ToLower() ?? String.Empty);
}
int result = base_number;

View File

@@ -39,8 +39,8 @@ namespace FileFlows.VideoNodes.FfmpegBuilderNodes
{
get
{
if (Args.Variables.ContainsKey(MODEL_KEY))
return Args.Variables[MODEL_KEY] as FfmpegModel;
if (Args.Variables.TryGetValue(MODEL_KEY, out var variable))
return variable as FfmpegModel;
return null;
}
set

View File

@@ -1,6 +1,7 @@
#if(DEBUG)
using FileFlows.VideoNodes.FfmpegBuilderNodes;
using FileFlows.VideoNodes.FfmpegBuilderNodes.Models;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using VideoNodes.Tests;
@@ -166,6 +167,42 @@ public class FfmpegBuilder_AddAudioTests
Assert.AreEqual("AAC", best.Codec);
Assert.AreEqual(2f, best.Channels);
}
[TestMethod]
public void FfmpegBuilder_AddAudio_Basic()
{
Prepare();
FfmpegBuilderAudioAddTrack ffAddAudio = new();
ffAddAudio.Codec = "dts";
ffAddAudio.Channels = 1;
ffAddAudio.Index = 1000;
ffAddAudio.PreExecute(args);
var output = ffAddAudio.Execute(args);
Assert.AreEqual(1, output);
FfmpegModel model = (FfmpegModel)args.Variables["FfmpegBuilderModel"];
var last = model.AudioStreams.Last();
Assert.AreEqual(1, last.Channels);
}
[TestMethod]
public void FfmpegBuilder_AddAudio_Basic_2()
{
Prepare();
FfmpegBuilderAudioAddTrack ffAddAudio = new();
ffAddAudio.Codec = "dts";
ffAddAudio.Channels = 2;
ffAddAudio.Index = 1000;
ffAddAudio.PreExecute(args);
var output = ffAddAudio.Execute(args);
Assert.AreEqual(1, output);
FfmpegModel model = (FfmpegModel)args.Variables["FfmpegBuilderModel"];
var last = model.AudioStreams.Last();
Assert.AreEqual(2, last.Channels);
}
}
#endif