mirror of
https://github.com/revenz/FileFlowsPlugins.git
synced 2025-12-31 01:20:00 -06:00
FF-1008 - added more unit tests
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user