SerializationTests.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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 : PixiEditorTest
  14. {
  15. [Fact]
  16. public void TestThatAllPaintablesHaveFactories()
  17. {
  18. var allDrawiePaintableTypes = typeof(Paintable).Assembly.GetTypes()
  19. .Where(x => x.IsAssignableTo(typeof(Paintable))
  20. && x is { IsAbstract: false, IsInterface: false }).ToList();
  21. var pixiEditorAssemblyPaintables = typeof(SerializationFactory).Assembly.GetTypes()
  22. .Where(x => x.IsAssignableTo(typeof(Paintable))
  23. && x is { IsAbstract: false, IsInterface: false }).ToList();
  24. var allPaintables = allDrawiePaintableTypes.Concat(pixiEditorAssemblyPaintables).Distinct().ToList();
  25. var allFoundFactories = typeof(SerializationFactory).Assembly.GetTypes()
  26. .Where(x => x.IsAssignableTo(typeof(IPaintableSerializationFactory))
  27. && x is { IsAbstract: false, IsInterface: false }).ToList();
  28. List<SerializationFactory> factories = new();
  29. QoiEncoder encoder = new QoiEncoder();
  30. SerializationConfig config = new SerializationConfig(encoder, ColorSpace.CreateSrgbLinear());
  31. foreach (var factoryType in allFoundFactories)
  32. {
  33. var factory = (SerializationFactory)Activator.CreateInstance(factoryType);
  34. factories.Add(factory);
  35. }
  36. foreach (var type in allPaintables)
  37. {
  38. var factory = factories.FirstOrDefault(x => x.OriginalType == type);
  39. Assert.NotNull(factory);
  40. }
  41. }
  42. }