using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using Xunit; namespace IPA.Tests { public class ProgramTest { [Theory] // Unrelated path [InlineData("test/from.dll", "test/to.dll", "native", false, new string[] { "test/to.dll" })] // Flat -> Not-Flat [InlineData("native/from.dll", "native/to.dll", "native", false, new string[] { "native/x86/to.dll", "native/x86_64/to.dll" })] // Flat -> Flat [InlineData("native/from.dll", "native/to.dll", "native", true, new string[] { "native/to.dll" })] // Not-Flat -> Flat [InlineData("native/x86/from.dll", "native/x86/to.dll", "native", true, new string[] { })] [InlineData("native/x86_64/from.dll", "native/x86_64/to.dll", "native", true, new string[] { "native/to.dll" })] // Not-flat -> Not-Flat [InlineData("native/x86/from.dll", "native/x86/to.dll", "native", false, new string[] { "native/x86/to.dll" })] [InlineData("native/x86_64/from.dll", "native/x86_64/to.dll", "native", false, new string[] { "native/x86_64/to.dll" })] public void CopiesCorrectly(string from, string to, string nativeFolder, bool isFlat, string[] expected) { var outcome = Program.NativePluginInterceptor(new FileInfo(from), new FileInfo(to), new DirectoryInfo(nativeFolder), isFlat).Select(f => f.FullName).ToList(); var expectedPaths = expected.Select(e => new FileInfo(e)).Select(f => f.FullName).ToList(); Assert.Equal(expectedPaths, outcome); } } }