FileHistoryTest.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using PicView.Core.FileHandling;
  2. using PicView.Core.Navigation;
  3. namespace PicView.Tests;
  4. public class FileHistoryTest
  5. {
  6. [Fact]
  7. public void TestFileHistory()
  8. {
  9. var list = new List<string>();
  10. var history = new FileHistory();
  11. Assert.NotNull(history);
  12. // Check adding
  13. for (var i = 0; i <= FileHistory.MaxCount; i++)
  14. {
  15. AddRandomFiles(history, list);
  16. }
  17. Assert.Equal(FileHistory.MaxCount, history.GetCount());
  18. AddRandomFiles(history, list);
  19. Assert.Equal(FileHistory.MaxCount, history.GetCount());
  20. // Check removing
  21. history.Remove(history.GetLastFile());
  22. Assert.Equal(FileHistory.MaxCount - 1, history.GetCount());
  23. // Check renaming
  24. var lastFile = history.GetLastFile();
  25. var newFile = Path.GetFileNameWithoutExtension(lastFile);
  26. newFile = Path.GetRandomFileName();
  27. history.Rename(lastFile, newFile);
  28. Assert.Equal(newFile, history.GetLastFile());
  29. history.Remove(newFile);
  30. Assert.False(history.Contains(newFile));
  31. // Check getting iterations
  32. var entry = history.GetEntryAt(1);
  33. Assert.NotNull(entry);
  34. var nextEntry = history.GetNextEntry(looping: true, 2);
  35. Assert.NotNull(nextEntry);
  36. Assert.True(File.Exists(nextEntry));
  37. var prevEntry = history.GetPreviousEntry(looping: true, 2);
  38. Assert.NotNull(prevEntry);
  39. Assert.True(File.Exists(prevEntry));
  40. foreach (var t in list)
  41. {
  42. FileDeletionHelper.DeleteFileWithErrorMsg(t, false);
  43. Assert.False(File.Exists(t));
  44. history.Remove(t);
  45. }
  46. Assert.Equal(0, history.GetCount());
  47. }
  48. private static void AddRandomFiles(FileHistory history, List<string> list)
  49. {
  50. var imageFileExtensionArray = new[] { ".jpg", ".png", ".bmp", ".gif", ".tiff", ".webp" };
  51. var directory = TempFileHelper.CreateTempDirectory();
  52. Assert.True(directory);
  53. var randomExtension = imageFileExtensionArray[new Random().Next(0, imageFileExtensionArray.Length)];
  54. var randomFileNameWithExtension = TempFileHelper.TempFilePath + randomExtension;
  55. var fullPath = Path.Combine(TempFileHelper.TempFilePath, randomFileNameWithExtension);
  56. using var fs = File.Create(fullPath);
  57. Assert.True(File.Exists(fullPath));
  58. history.Add(randomFileNameWithExtension);
  59. list.Add(randomFileNameWithExtension);
  60. }
  61. }