Browse Source

Fixed VecD not deserializing

flabbet 10 months ago
parent
commit
568702dfe4

+ 1 - 1
src/PixiEditor/Models/Serialization/Factories/VecD3SerializationFactory.cs

@@ -4,7 +4,7 @@ namespace PixiEditor.Models.Serialization.Factories;
 
 public class VecD3SerializationFactory : SerializationFactory<byte[], Vec3D>
 {
-    public override string DeserializationId { get; } = "PixiEditor.VecD";
+    public override string DeserializationId { get; } = "PixiEditor.VecD3";
 
     public override byte[] Serialize(Vec3D original)
     {

+ 23 - 0
tests/PixiEditor.Backend.Tests/NodeSystemTests.cs

@@ -170,6 +170,29 @@ public class NodeSystemTests
         }
     }
 
+    [Fact]
+    public void TestThatSerializationFactoriesIdsAreNotDuplicated()
+    {
+        var factoryTypes = typeof(SerializationFactory).Assembly.GetTypes()
+            .Where(x => x.IsAssignableTo(typeof(SerializationFactory))
+                        && x is { IsAbstract: false, IsInterface: false }).ToList();
+
+        List<SerializationFactory> factories = new();
+        
+        foreach (var factoryType in factoryTypes)
+        {
+            var factory = (SerializationFactory)Activator.CreateInstance(factoryType);
+            factories.Add(factory);
+        }
+
+        List<string> ids = new();
+        foreach (var factory in factories)
+        {
+            Assert.DoesNotContain(factory.DeserializationId, ids);
+            ids.Add(factory.DeserializationId);
+        }
+    }
+
     private static List<Type> GetNodeTypesWithoutPairs()
     {
         var allNodeTypes = typeof(Node).Assembly.GetTypes()