From 4f6ae1277cc60686169383483e2fdf01cb54910f Mon Sep 17 00:00:00 2001 From: reven Date: Mon, 22 Nov 2021 16:08:49 +1300 Subject: [PATCH] fixed extension node and added more unit tests --- BasicNodes/BasicNodes.csproj | Bin 1914 -> 2042 bytes BasicNodes/File/FileExtension.cs | 22 +++++++ BasicNodes/File/FileSize.cs | 12 +++- BasicNodes/Tests/FileExtensionTests.cs | 78 +++++++++++++++++++++++++ BasicNodes/Tests/FileSizeTests.cs | 58 ++++++++++++++++++ 5 files changed, 169 insertions(+), 1 deletion(-) create mode 100644 BasicNodes/Tests/FileExtensionTests.cs create mode 100644 BasicNodes/Tests/FileSizeTests.cs diff --git a/BasicNodes/BasicNodes.csproj b/BasicNodes/BasicNodes.csproj index 05de7f56608ff2155765a8594540661ed50dda29..c953c5aa5d5cec570676fa9ad613005154ace577 100644 GIT binary patch delta 209 zcmeyx_ltjn3(I6SHko=}1}+9p1{(%Xh7yKUhFk`Bh9ZW1hEj$C1_cIZAS;g{g&`9t zmkDOuGAIGX)frS6G@!C+K$&!)`XYuzxGGJc3IzsRAOxv(0h*fxRFMv3gLK<5K^RT F0syL5Ccgjx delta 63 zcmeyx|BG*f3(MqP%vO_ySi>e;u<(G{25e%J_pq8F@dGAXv8YWvz%qFPv)tr)Y#f`< Iu<0=Z0IE0?V*mgE diff --git a/BasicNodes/File/FileExtension.cs b/BasicNodes/File/FileExtension.cs index 8701cadc..ef2622f5 100644 --- a/BasicNodes/File/FileExtension.cs +++ b/BasicNodes/File/FileExtension.cs @@ -13,5 +13,27 @@ namespace FileFlows.BasicNodes.File [StringArray(1)] public string[] Extensions { get; set; } public override FlowElementType Type => FlowElementType.Logic; + + public override int Execute(NodeParameters args) + { + if (Extensions?.Any() != true) + { + args.Logger.ELog("No extensions specified"); + return -1; + } + + foreach (var extension in Extensions) + { + if (string.IsNullOrEmpty(extension)) + continue; + if (args.WorkingFile.ToLower().EndsWith(extension.ToLower())) + return 1; + if (args.FileName.ToLower().EndsWith(extension.ToLower())) + return 1; + } + return 2; + + + } } } \ No newline at end of file diff --git a/BasicNodes/File/FileSize.cs b/BasicNodes/File/FileSize.cs index fa463d6f..d8d81733 100644 --- a/BasicNodes/File/FileSize.cs +++ b/BasicNodes/File/FileSize.cs @@ -20,7 +20,17 @@ namespace FileFlows.BasicNodes.File public override int Execute(NodeParameters args) { - long size = new FileInfo(args.WorkingFile).Length; + var fi = new FileInfo(args.WorkingFile); + if (fi.Exists == false) { + args.Logger.ELog("File Does not exist: " + args.WorkingFile); + return -1; + } + + return TestSize(args, fi.Length); + } + + public int TestSize(NodeParameters args, long size) + { if (size < (Lower * 1024 * 1024)) return 2; if (Upper > 0 && size > (Upper * 1024 * 1024)) diff --git a/BasicNodes/Tests/FileExtensionTests.cs b/BasicNodes/Tests/FileExtensionTests.cs new file mode 100644 index 00000000..e39e1849 --- /dev/null +++ b/BasicNodes/Tests/FileExtensionTests.cs @@ -0,0 +1,78 @@ +#if(DEBUG) + +namespace BasicNodes.Tests +{ + using FileFlows.BasicNodes.File; + using Microsoft.VisualStudio.TestTools.UnitTesting; + + [TestClass] + public class FileExtensionTests + { + FileFlows.Plugin.NodeParameters Args; + + [TestInitialize] + public void TestStarting() + { + Args = new FileFlows.Plugin.NodeParameters(@"c:\test\testfile.mkv"); + Args.Logger = new TestLogger(); + + } + + [TestMethod] + public void FileExtension_Matches_Single() + { + FileExtension pm = new FileExtension(); + pm.Extensions = new string[] { "mkv" }; + var result = pm.Execute(Args); + Assert.AreEqual(1, result); + } + [TestMethod] + public void FileExtension_Matches_Mutlitple() + { + FileExtension pm = new FileExtension(); + pm.Extensions = new string[] { "avi", "divx", "mkv", "mpg" }; + var result = pm.Execute(Args); + Assert.AreEqual(1, result); + } + [TestMethod] + public void FileExtension_Matches_Mutlitple_Period() + { + FileExtension pm = new FileExtension(); + pm.Extensions = new string[] { ".avi", ".divx", ".mkv", ".mpg" }; + var result = pm.Execute(Args); + Assert.AreEqual(1, result); + } + [TestMethod] + public void FileExtension_Matches_Mutlitple_UpperPeriod() + { + FileExtension pm = new FileExtension(); + pm.Extensions = new string[] { ".AVI", ".DIVX", ".MKV", ".MPG" }; + var result = pm.Execute(Args); + Assert.AreEqual(1, result); + } + [TestMethod] + public void FileExtension_NoMatches_Mutlitple() + { + FileExtension pm = new FileExtension(); + pm.Extensions = new string[] { "avi", "divx", "mpg" }; + var result = pm.Execute(Args); + Assert.AreEqual(2, result); + } + + [TestMethod] + public void FileExtension_NoExtensions() + { + FileExtension pm = new FileExtension(); + pm.Extensions = new string[] { }; + var result = pm.Execute(Args); + Assert.AreEqual(-1, result); + + FileExtension pm2 = new FileExtension(); + pm.Extensions = null; + result = pm.Execute(Args); + Assert.AreEqual(-1, result); + } + } +} + +#endif \ No newline at end of file diff --git a/BasicNodes/Tests/FileSizeTests.cs b/BasicNodes/Tests/FileSizeTests.cs new file mode 100644 index 00000000..19522a27 --- /dev/null +++ b/BasicNodes/Tests/FileSizeTests.cs @@ -0,0 +1,58 @@ +#if(DEBUG) + +namespace BasicNodes.Tests +{ + using FileFlows.BasicNodes.File; + using Microsoft.VisualStudio.TestTools.UnitTesting; + + [TestClass] + public class FileSizeTests + { + FileFlows.Plugin.NodeParameters Args; + + [TestInitialize] + public void TestStarting() + { + Args = new FileFlows.Plugin.NodeParameters(@"c:\test\testfile.mkv"); + Args.Logger = new TestLogger(); + + } + + [TestMethod] + public void FileSize_LessThanLower() + { + FileSize pm = new FileSize(); + pm.Lower = 5; + var result = pm.TestSize(Args, (5 * 1024 * 1024) - 1); + Assert.AreEqual(2, result); + } + + [TestMethod] + public void FileSize_EqualToLower() + { + FileSize pm = new FileSize(); + pm.Lower = 5; + var result = pm.TestSize(Args, 5 * 1024 * 1024); + Assert.AreEqual(1, result); + } + [TestMethod] + public void FileSize_GreaterThanUpper() + { + FileSize pm = new FileSize(); + pm.Upper = 5; + var result = pm.TestSize(Args, (5 * 1024 * 1024) + 1); + Assert.AreEqual(2, result); + } + + [TestMethod] + public void FileSize_EqualToUpper() + { + FileSize pm = new FileSize(); + pm.Upper = 5; + var result = pm.TestSize(Args, 5 * 1024 * 1024); + Assert.AreEqual(1, result); + } + } +} + +#endif \ No newline at end of file