SerializationTests.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using Drawie.Backend.Core.Bridge;
  2. using Drawie.Backend.Core.ColorsImpl.Paintables;
  3. using Drawie.Backend.Core.Surfaces.ImageData;
  4. using Drawie.Skia;
  5. using DrawiEngine;
  6. using PixiEditor.ChangeableDocument.Changeables.Interfaces;
  7. using PixiEditor.ChangeableDocument.Changes.NodeGraph;
  8. using PixiEditor.Models.Serialization;
  9. using PixiEditor.Models.Serialization.Factories;
  10. using PixiEditor.Models.Serialization.Factories.Paintables;
  11. using PixiEditor.Parser.Skia.Encoders;
  12. namespace PixiEditor.Tests;
  13. public class SerializationTests
  14. {
  15. public SerializationTests()
  16. {
  17. if (DrawingBackendApi.HasBackend)
  18. {
  19. return;
  20. }
  21. SkiaDrawingBackend skiaDrawingBackend = new SkiaDrawingBackend();
  22. DrawingBackendApi.SetupBackend(skiaDrawingBackend, new DrawieRenderingDispatcher());
  23. }
  24. [Fact]
  25. public void TestThatAllPaintablesHaveFactories()
  26. {
  27. var allDrawiePaintableTypes = typeof(Paintable).Assembly.GetTypes()
  28. .Where(x => x.IsAssignableTo(typeof(Paintable))
  29. && x is { IsAbstract: false, IsInterface: false }).ToList();
  30. var pixiEditorAssemblyPaintables = typeof(SerializationFactory).Assembly.GetTypes()
  31. .Where(x => x.IsAssignableTo(typeof(Paintable))
  32. && x is { IsAbstract: false, IsInterface: false }).ToList();
  33. var allPaintables = allDrawiePaintableTypes.Concat(pixiEditorAssemblyPaintables).Distinct().ToList();
  34. var allFoundFactories = typeof(SerializationFactory).Assembly.GetTypes()
  35. .Where(x => x.IsAssignableTo(typeof(IPaintableSerializationFactory))
  36. && x is { IsAbstract: false, IsInterface: false }).ToList();
  37. List<SerializationFactory> factories = new();
  38. QoiEncoder encoder = new QoiEncoder();
  39. SerializationConfig config = new SerializationConfig(encoder, ColorSpace.CreateSrgbLinear());
  40. foreach (var factoryType in allFoundFactories)
  41. {
  42. var factory = (SerializationFactory)Activator.CreateInstance(factoryType);
  43. factories.Add(factory);
  44. }
  45. foreach (var type in allPaintables)
  46. {
  47. var factory = factories.FirstOrDefault(x => x.OriginalType == type);
  48. Assert.NotNull(factory);
  49. }
  50. }
  51. }