SerializationTests.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using Avalonia.Headless.XUnit;
  2. using Drawie.Backend.Core.Bridge;
  3. using Drawie.Backend.Core.ColorsImpl.Paintables;
  4. using Drawie.Backend.Core.Surfaces.ImageData;
  5. using Drawie.Skia;
  6. using DrawiEngine;
  7. using PixiEditor.ChangeableDocument.Changeables.Interfaces;
  8. using PixiEditor.ChangeableDocument.Changes.NodeGraph;
  9. using PixiEditor.Models.IO;
  10. using PixiEditor.Models.Serialization;
  11. using PixiEditor.Models.Serialization.Factories;
  12. using PixiEditor.Models.Serialization.Factories.Paintables;
  13. using PixiEditor.Parser.Skia.Encoders;
  14. namespace PixiEditor.Tests;
  15. public class SerializationTests : PixiEditorTest
  16. {
  17. [Fact]
  18. public void TestThatAllPaintablesHaveFactories()
  19. {
  20. var allDrawiePaintableTypes = typeof(Paintable).Assembly.GetTypes()
  21. .Where(x => x.IsAssignableTo(typeof(Paintable))
  22. && x is { IsAbstract: false, IsInterface: false }).ToList();
  23. var pixiEditorAssemblyPaintables = typeof(SerializationFactory).Assembly.GetTypes()
  24. .Where(x => x.IsAssignableTo(typeof(Paintable))
  25. && x is { IsAbstract: false, IsInterface: false }).ToList();
  26. var allPaintables = allDrawiePaintableTypes.Concat(pixiEditorAssemblyPaintables).Distinct().ToList();
  27. var allFoundFactories = typeof(SerializationFactory).Assembly.GetTypes()
  28. .Where(x => x.IsAssignableTo(typeof(IPaintableSerializationFactory))
  29. && x is { IsAbstract: false, IsInterface: false }).ToList();
  30. List<SerializationFactory> factories = new();
  31. QoiEncoder encoder = new QoiEncoder();
  32. SerializationConfig config = new SerializationConfig(encoder, ColorSpace.CreateSrgbLinear());
  33. foreach (var factoryType in allFoundFactories)
  34. {
  35. var factory = (SerializationFactory)Activator.CreateInstance(factoryType);
  36. factories.Add(factory);
  37. }
  38. foreach (var type in allPaintables)
  39. {
  40. var factory = factories.FirstOrDefault(x => x.OriginalType == type);
  41. Assert.NotNull(factory);
  42. }
  43. }
  44. [AvaloniaTheory]
  45. [InlineData("Fibi")]
  46. [InlineData("Pond")]
  47. [InlineData("SmlPxlCircShadWithMask")]
  48. [InlineData("SmallPixelArtCircleShadow")]
  49. [InlineData("SmlPxlCircShadWithMaskClipped")]
  50. [InlineData("SmlPxlCircShadWithMaskClippedInFolder")]
  51. [InlineData("VectorRectangleClippedToCircle")]
  52. [InlineData("VectorRectangleClippedToCircleShadowFilter")]
  53. [InlineData("VectorRectangleClippedToCircleMasked")]
  54. public void TestThatDeserializationOfSampleFilesDoesntThrow(string fileName)
  55. {
  56. string pixiFile = Path.Combine("TestFiles", "RenderTests", fileName + ".pixi");
  57. var document = Importer.ImportDocument(pixiFile);
  58. Assert.NotNull(document);
  59. }
  60. }