Files
FileFlowsPlugins/BasicNodes/Tests/MatchesTests.cs
2024-09-11 08:16:15 +12:00

203 lines
5.8 KiB
C#

#if(DEBUG)
using FileFlows.BasicNodes.Functions;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace BasicNodes.Tests;
[TestClass]
public class MatchesTests : TestBase
{
[TestMethod]
public void Matches_Math()
{
Matches ele = new ();
ele.MatchConditions = new()
{
new("{file.Size}", "<=100KB"),
new("{file.Size}", ">100KB"),
new("{file.Size}", ">10MB"),
};
var args = new FileFlows.Plugin.NodeParameters(null, Logger,
false, string.Empty, new LocalFileService());
args.Variables["file.Size"] = 120_000; // 120KB
var result = ele.Execute(args);
Assert.AreEqual(2, result);
}
[TestMethod]
public void Matches_MathFailString()
{
Matches ele = new ();
ele.MatchConditions = new()
{
new("{file.Size}", "<=100KB"),
new("{file.Size}", ">100KB"),
new("{file.Size}", ">10MB"),
};
var args = new FileFlows.Plugin.NodeParameters(null, Logger,
false, string.Empty, new LocalFileService());
args.Variables["file.Size"] = "Some String"; // 120KB
var result = ele.Execute(args);
Assert.AreEqual(4, result);
}
[TestMethod]
public void Matches_EqualsOne()
{
foreach (var test in new[]
{
((object)1, "=1"),
((object)"1", "=1"),
((object)1, "1"),
((object)"1", "1"),
})
{
Matches ele = new();
ele.MatchConditions = new()
{
new("{myVariable}", test.Item2)
};
var args = new FileFlows.Plugin.NodeParameters(null, Logger,
false, string.Empty, new LocalFileService());
args.Variables["myVariable"] = test.Item1;
var result = ele.Execute(args);
Assert.AreEqual(1, result);
}
}
[TestMethod]
public void Matches_String()
{
Matches ele = new ();
ele.MatchConditions = new()
{
new("{file.Name}", "nopetriggerthis"),
new("{file.Name}", "DontTriggerThis"),
new("{file.Name}", "TriggerThis"),
};
var args = new FileFlows.Plugin.NodeParameters(null, Logger,
false, string.Empty, new LocalFileService());
args.Variables["file.Name"] = "TriggerThis";
var result = ele.Execute(args);
Assert.AreEqual(3, result);
}
[TestMethod]
public void Matches_NoMatch()
{
Matches ele = new ();
ele.MatchConditions = new()
{
new("{file.Name}", "triggerthis"),
new("{file.Name}", "DontTriggerThis"),
new("{file.Name}", "TriggerThis"),
};
var args = new FileFlows.Plugin.NodeParameters(null, Logger,
false, string.Empty, new LocalFileService());
args.Variables["file.Name"] = "Nothing";
var result = ele.Execute(args);
Assert.AreEqual(4, result);
}
[TestMethod]
public void Matches_Regex()
{
Matches ele = new ();
ele.MatchConditions = new()
{
new("{file.Name}", "/triggerthis/"),
new("{file.Name}", "/.*batman.*/"),
new("{file.Name}", "/TriggerThis/"),
};
var args = new FileFlows.Plugin.NodeParameters(null, Logger,
false, string.Empty, new LocalFileService());
args.Variables["file.Name"] = "Superman vs Batman (2017)";
var result = ele.Execute(args);
Assert.AreEqual(2, result);
}
[TestMethod]
public void Matches_True()
{
Matches ele = new ();
ele.MatchConditions = new()
{
new("{file.Name}", "triggerthis"),
new("{file.Deleted}", "true"),
new("{file.Name}", "TriggerThis"),
};
var args = new FileFlows.Plugin.NodeParameters(null, Logger,
false, string.Empty, new LocalFileService());
args.Variables["file.Deleted"] = true;
var result = ele.Execute(args);
Assert.AreEqual(2, result);
}
[TestMethod]
public void Matches_True_1()
{
Matches ele = new ();
ele.MatchConditions = new()
{
new("{file.Name}", "triggerthis"),
new("{file.Deleted}", "true"),
new("{file.Name}", "TriggerThis"),
};
var args = new FileFlows.Plugin.NodeParameters(null, Logger,
false, string.Empty, new LocalFileService());
args.Variables["file.Deleted"] = 1;
var result = ele.Execute(args);
Assert.AreEqual(2, result);
}
[TestMethod]
public void Matches_False()
{
Matches ele = new ();
ele.MatchConditions = new()
{
new("{file.Name}", "triggerthis"),
new("{file.Deleted}", "false"),
new("{file.Name}", "TriggerThis"),
};
var args = new FileFlows.Plugin.NodeParameters(null, Logger,
false, string.Empty, new LocalFileService());
args.Variables["file.Deleted"] = false;
var result = ele.Execute(args);
Assert.AreEqual(2, result);
}
[TestMethod]
public void Matches_False_0()
{
Matches ele = new ();
ele.MatchConditions = new()
{
new("{file.Name}", "triggerthis"),
new("{file.Deleted}", "false"),
new("{file.Name}", "TriggerThis"),
};
var args = new FileFlows.Plugin.NodeParameters(null, Logger,
false, string.Empty, new LocalFileService());
args.Variables["file.Deleted"] = 0;
var result = ele.Execute(args);
Assert.AreEqual(2, result);
}
}
#endif