#if(DEBUG)

using FileFlows.BasicNodes.Functions;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace BasicNodes.Tests;

[TestClass]
public class PatternMatchTests : TestBase
{
    [TestMethod]    
    public void PatternMatch_Extension()
    {
        PatternMatch pm = new PatternMatch();
        string newFile = TempFile + ".mkv";
        System.IO.File.Move(TempFile, newFile);
        pm.Pattern = @"\.mkv$";
        var args = new FileFlows.Plugin.NodeParameters(newFile, Logger, false, string.Empty, new LocalFileService());
        args.SetWorkingFile($@"c:\temp\{Guid.NewGuid().ToString()}.mkv", dontDelete: true); 

        var result = pm.Execute(args);
        Assert.AreEqual(1, result);
    }

    [TestMethod]    
    public void PatternMatch_Forum()
    {
        PatternMatch pm = new PatternMatch();
        pm.Pattern = @"(.*)1080p(.*)megusta(.*)";
        var args = new FileFlows.Plugin.NodeParameters(@"SAB_TV/The.Secrets.of.Hillsong.S01E01.1080p.HEVC.x265-MeGusta/The.Secrets.of.Hillsong.S01E01.1080p.HEVC.x265-MeGusta.mkv", new TestLogger(), false, string.Empty, null);;
        
        var result = pm.Execute(args);
        Assert.AreEqual(1, result);
    }
    
    [TestMethod]
    public void PatternMatch_NotMatch()
    {
        PatternMatch pm = new PatternMatch();
        pm.Pattern = @"\.mkv$";
        var args = new FileFlows.Plugin.NodeParameters(@"c:\test\testfile.avi", Logger, false, string.Empty, new LocalFileService());
        args.SetWorkingFile($@"c:\temp\{Guid.NewGuid().ToString()}.avi", dontDelete: true);

        var result = pm.Execute(args);
        Assert.AreEqual(2, result);
    }

    [TestMethod]
    public void PatternMatch_BadExpression()
    {
        PatternMatch pm = new PatternMatch();
        pm.Pattern = @"[-$";
        var args = new FileFlows.Plugin.NodeParameters(@"c:\test\testfile.avi", Logger, false, string.Empty, new LocalFileService());
        args.SetWorkingFile($@"c:\temp\{Guid.NewGuid().ToString()}.avi", dontDelete: true);

        var result = pm.Execute(args);
        Assert.AreEqual(-1, result);
    }
    [TestMethod]
    public void PatternMatch_Trailer()
    {
        PatternMatch pm = new PatternMatch();
        pm.Pattern = @"\-trailer";
        var args = new FileFlows.Plugin.NodeParameters(@"c:\test\testfile-TRAILER.avi", Logger, false, string.Empty, new LocalFileService());
        args.SetWorkingFile($@"c:\temp\{Guid.NewGuid().ToString()}.avi", dontDelete: true);

        var result = pm.Execute(args);
        Assert.AreEqual(1, result);
    }
}

#endif