using System; using System.Collections.Generic; using System.IO.Abstractions; using System.IO.Abstractions.TestingHelpers; using System.Linq; using System.Text; using System.Threading.Tasks; using Xunit; namespace Terminal.Gui.FileServicesTests { public class FileSystemIconProviderTests { [Fact] public void FlagsShouldBeMutuallyExclusive() { var p = new FileSystemIconProvider { UseUnicodeCharacters = false, UseNerdIcons = false }; Assert.False (p.UseUnicodeCharacters); Assert.False (p.UseNerdIcons); p.UseUnicodeCharacters = true; Assert.True (p.UseUnicodeCharacters); Assert.False (p.UseNerdIcons); // Cannot use both nerd and unicode so unicode should have switched off p.UseNerdIcons = true; Assert.True (p.UseNerdIcons); Assert.False (p.UseUnicodeCharacters); // Cannot use both unicode and nerd so now nerd should have switched off p.UseUnicodeCharacters = true; Assert.True (p.UseUnicodeCharacters); Assert.False (p.UseNerdIcons); } [Fact] public void TestBasicIcons () { var p = new FileSystemIconProvider (); var fs = GetMockFileSystem (); Assert.Equal(IsWindows() ? new Rune('\\') : new Rune('/'), p.GetIcon(fs.DirectoryInfo.New(@"c:\"))); Assert.Equal (new Rune (' '), p.GetIcon ( fs.FileInfo.New (GetFileSystemRoot() + @"myfile.txt")) ); } private bool IsWindows () { return System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform (System.Runtime.InteropServices.OSPlatform.Windows); } private IFileSystem GetMockFileSystem() { string root = GetFileSystemRoot(); var fileSystem = new MockFileSystem (new Dictionary (), root); fileSystem.AddFile (root+@"myfile.txt", new MockFileData ("Testing is meh.")); fileSystem.AddFile (root+@"demo/jQuery.js", new MockFileData ("some js")); fileSystem.AddFile (root+@"demo/mybinary.exe", new MockFileData ("some js")); fileSystem.AddFile (root+@"demo/image.gif", new MockFileData (new byte [] { 0x12, 0x34, 0x56, 0xd2 })); var m = (MockDirectoryInfo)fileSystem.DirectoryInfo.New (root + @"demo/subfolder"); m.Create (); return fileSystem; } private string GetFileSystemRoot () { return IsWindows () ? @"c:\" : "/"; } } }