Skip to content

Commit

Permalink
Tests: add Test_SerializeLinkComponent
Browse files Browse the repository at this point in the history
  • Loading branch information
friflo committed Nov 29, 2024
1 parent 2d6cd5a commit d77bc63
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 4 deletions.
61 changes: 61 additions & 0 deletions src/Tests-internal/ECS/Test_SerializeLinkComponent.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
using Friflo.Engine.ECS;
using Friflo.Engine.ECS.Serialize;
using NUnit.Framework;
using Tests.ECS.Index;
using Tests.ECS.Serialize;
using static NUnit.Framework.Assert;


// ReSharper disable InconsistentNaming
namespace Internal.ECS {

public static class Test_SerializeLinkComponent
{

// referenced entity 1002 is loaded after loading its LinkRelation
// The fields of store.nodes[1002] .isLinked & .isOwner are assigned
private const string Json =
@"[{
""id"": 1,
""components"": {
""LinkComponent"": {""entity"":1002}
}
},{
""id"": 1002
}]";


[Test]
public static void Test_SerializeEntity_read_present()
{
var store = new EntityStore();
var serializer = new EntitySerializer();
var stream = Test_Serializer.StringAsStream(Json);

var result = serializer.ReadIntoStore(store, stream); // referenced EntityReference.entity 1002 is already deserialized
IsNull(result.error);

AreEqual(2, store.Count);

var entity1 = store.GetEntityById(1);
AreEqual(1002, entity1.GetComponent<LinkComponent>().entity.Id);

var attackBit = 1 << StructInfo<LinkComponent>.Index;
AreEqual(attackBit, store.nodes[1].isOwner);
AreEqual(attackBit, store.nodes[1002].isLinked);

Entity entityRef = store.GetEntityById(1002);
IsFalse(entityRef.IsNull);

var incomingLinks = entityRef.GetIncomingLinks<LinkComponent>();
AreEqual(1, incomingLinks.Count);
AreEqual(1, incomingLinks[0].Entity.Id);

entityRef.DeleteEntity();

IsFalse(entity1.HasComponent<LinkComponent>());
}

}

}
2 changes: 2 additions & 0 deletions src/Tests/ECS/Serialize/Test_EntitySerializer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ public static void Test_Serializer_read_into_store()
var fileName = TestUtils.GetBasePath() + "assets/read_scene.json";
var file = new FileStream(fileName, FileMode.Open, FileAccess.Read);
var result = serializer.ReadIntoStore(store, file);
IsNull(result.error);
file.Close();
AssertReadIntoStoreResult(result, store);
}
Expand Down Expand Up @@ -289,6 +290,7 @@ public static void Test_Serializer_read_unknown_JSON_members()
var fileName = TestUtils.GetBasePath() + "assets/read_unknown_members.json";
var file = new FileStream(fileName, FileMode.Open, FileAccess.Read);
var result = serializer.ReadIntoStore(store, file);
IsNull(result.error);
file.Close();
AssertReadIntoStoreResult(result, store);
}
Expand Down
12 changes: 8 additions & 4 deletions src/Tests/ECS/Serialize/Test_SerializeEntity.cs
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,8 @@ public static void Test_SerializeEntity_read_present()
var serializer = new EntitySerializer();
var stream = Test_Serializer.StringAsStream(JsonEntityRefPresent);

serializer.ReadIntoStore(store, stream); // referenced EntityReference.entity 1002 is already deserialized
var result = serializer.ReadIntoStore(store, stream); // referenced EntityReference.entity 1002 is already deserialized
IsNull(result.error);

AreEqual(2, store.Count);

Expand All @@ -83,7 +84,8 @@ public static void Test_SerializeEntity_read_missing()
var serializer = new EntitySerializer();
var stream = Test_Serializer.StringAsStream(JsonEntityRefMissing);

serializer.ReadIntoStore(store, stream);
var result = serializer.ReadIntoStore(store, stream);
IsNull(result.error);

AreEqual(1, store.Count);

Expand All @@ -100,7 +102,8 @@ public static void Test_SerializeEntity_read_not_present()
var serializer = new EntitySerializer();
var stream = Test_Serializer.StringAsStream(JsonEntityRefNotPresent);

serializer.ReadIntoStore(store, stream);
var result = serializer.ReadIntoStore(store, stream);
IsNull(result.error);

AreEqual(2, store.Count);

Expand All @@ -117,7 +120,8 @@ public static void Test_SerializeEntity_read_null()
var serializer = new EntitySerializer();
var stream = Test_Serializer.StringAsStream(JsonEntityRefNull);

serializer.ReadIntoStore(store, stream);
var result = serializer.ReadIntoStore(store, stream);
IsNull(result.error);

AreEqual(1, store.Count);

Expand Down

0 comments on commit d77bc63

Please sign in to comment.