FileSystemIconProviderTests.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO.Abstractions;
  4. using System.IO.Abstractions.TestingHelpers;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using Xunit;
  9. namespace Terminal.Gui.FileServicesTests {
  10. public class FileSystemIconProviderTests {
  11. [Fact]
  12. public void FlagsShouldBeMutuallyExclusive()
  13. {
  14. var p = new FileSystemIconProvider {
  15. UseUnicodeCharacters = false,
  16. UseNerdIcons = false
  17. };
  18. Assert.False (p.UseUnicodeCharacters);
  19. Assert.False (p.UseNerdIcons);
  20. p.UseUnicodeCharacters = true;
  21. Assert.True (p.UseUnicodeCharacters);
  22. Assert.False (p.UseNerdIcons);
  23. // Cannot use both nerd and unicode so unicode should have switched off
  24. p.UseNerdIcons = true;
  25. Assert.True (p.UseNerdIcons);
  26. Assert.False (p.UseUnicodeCharacters);
  27. // Cannot use both unicode and nerd so now nerd should have switched off
  28. p.UseUnicodeCharacters = true;
  29. Assert.True (p.UseUnicodeCharacters);
  30. Assert.False (p.UseNerdIcons);
  31. }
  32. [Fact]
  33. public void TestBasicIcons ()
  34. {
  35. var p = new FileSystemIconProvider ();
  36. var fs = GetMockFileSystem ();
  37. Assert.Equal(IsWindows() ? new Rune('\\') : new Rune('/'), p.GetIcon(fs.DirectoryInfo.New(@"c:\")));
  38. Assert.Equal (new Rune (' '), p.GetIcon (
  39. fs.FileInfo.New (GetFileSystemRoot() + @"myfile.txt"))
  40. );
  41. }
  42. private bool IsWindows ()
  43. {
  44. return System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform (System.Runtime.InteropServices.OSPlatform.Windows);
  45. }
  46. private IFileSystem GetMockFileSystem()
  47. {
  48. string root = GetFileSystemRoot();
  49. var fileSystem = new MockFileSystem (new Dictionary<string, MockFileData> (), root);
  50. fileSystem.AddFile (root+@"myfile.txt", new MockFileData ("Testing is meh."));
  51. fileSystem.AddFile (root+@"demo/jQuery.js", new MockFileData ("some js"));
  52. fileSystem.AddFile (root+@"demo/mybinary.exe", new MockFileData ("some js"));
  53. fileSystem.AddFile (root+@"demo/image.gif", new MockFileData (new byte [] { 0x12, 0x34, 0x56, 0xd2 }));
  54. var m = (MockDirectoryInfo)fileSystem.DirectoryInfo.New (root + @"demo/subfolder");
  55. m.Create ();
  56. return fileSystem;
  57. }
  58. private string GetFileSystemRoot ()
  59. {
  60. return IsWindows () ? @"c:\" : "/";
  61. }
  62. }
  63. }