ImageDetectExtTests.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using System.IO;
  2. using System.IO.Compression;
  3. using Masuit.Tools.Media;
  4. using SixLabors.ImageSharp;
  5. using SixLabors.ImageSharp.Formats.Jpeg;
  6. using SixLabors.ImageSharp.PixelFormats;
  7. using Xunit;
  8. namespace Masuit.Tools.Abstractions.Test.Media;
  9. public class ImageDetectExtTests
  10. {
  11. [Fact]
  12. public void IsImage_ShouldReturnTrueForValidImageFile()
  13. {
  14. var filePath = Path.Combine(Directory.GetCurrentDirectory(), "test.jpg");
  15. using var image = new Image<Rgba32>(1, 1);
  16. image.Save(filePath);
  17. var fileInfo = new FileInfo(filePath);
  18. var result = fileInfo.IsImage();
  19. Assert.True(result);
  20. File.Delete(filePath);
  21. }
  22. [Fact]
  23. public void IsImage_ShouldReturnTrueForValidImageStream()
  24. {
  25. using var ms = new MemoryStream();
  26. using var image = new Image<Rgba32>(1, 1);
  27. image.Save(ms, new JpegEncoder());
  28. ms.Seek(0, SeekOrigin.Begin);
  29. var result = ms.IsImage();
  30. Assert.True(result);
  31. }
  32. [Fact]
  33. public void IsImage_ShouldReturnFalseForInvalidImageStream()
  34. {
  35. using var ms = new MemoryStream();
  36. using var writer = new StreamWriter(ms);
  37. writer.Write("This is a test stream.");
  38. writer.Flush();
  39. ms.Seek(0, SeekOrigin.Begin);
  40. Assert.Throws<UnknownImageFormatException>(() => ms.IsImage());
  41. }
  42. [Fact]
  43. public void GetImageType_ShouldReturnCorrectImageFormat()
  44. {
  45. using var ms = new MemoryStream();
  46. using var image = new Image<Rgba32>(1, 1);
  47. image.Save(ms, new JpegEncoder());
  48. ms.Seek(0, SeekOrigin.Begin);
  49. var result = ms.GetImageType();
  50. Assert.Equal(ImageFormat.Jpg, result);
  51. }
  52. [Fact]
  53. public void GetImageType_ShouldReturnNullForInvalidImageStream()
  54. {
  55. using var ms = new MemoryStream();
  56. using var writer = new StreamWriter(ms);
  57. writer.Write("This is a test stream.");
  58. writer.Flush();
  59. ms.Seek(0, SeekOrigin.Begin);
  60. Assert.Throws<UnknownImageFormatException>(() => ms.GetImageType());
  61. }
  62. }