Skip to content

Commit

Permalink
Engine - Tests: add Test_Events_add_multiple_ComponentChanged_handler()
Browse files Browse the repository at this point in the history
  • Loading branch information
friflo committed May 31, 2024
1 parent 2fc7d46 commit a39ebed
Showing 1 changed file with 67 additions and 0 deletions.
67 changes: 67 additions & 0 deletions Engine/src/Tests-internal/ECS/Test_Events.cs
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,73 @@ public static void Test_Events_add_multiple_signal_handler()
AreEqual(2, countEvent2A);
AreEqual(1, countEvent2B);
}

[Test]
public static void Test_Events_add_multiple_ComponentChanged_handler()
{
var store = new EntityStore();
var entity = store.CreateEntity();
var countEvent1 = 0;
var countEvent2A = 0;
var countEvent2B = 0;
Action<ComponentChanged> handler1 = changed => {
var value = changed.Component<MyComponent1>().a;
switch (countEvent1++) {
case 0: AreEqual(10, value); break;
case 1: AreEqual(20, value); break;
case 2: AreEqual(40, value); break;
}
};
Action<ComponentChanged> handler2A = changed => {
var value = changed.Component<MyComponent1>().a;
switch (countEvent2A++) {
case 0: AreEqual(10, value); break;
case 1: AreEqual(20, value); break;
}
};
Action<ComponentChanged> handler2B = changed => {
var value = changed.Component<MyComponent1>().a;
switch (countEvent2B++) {
case 0: AreEqual(10, value); break;
}
};
entity.OnComponentChanged += handler1;
entity.OnComponentChanged += handler2A;
entity.OnComponentChanged += handler2B;

var handlers = entity.DebugEventHandlers;
AreEqual(3, handlers.HandlerCount);
AreEqual(1, handlers.TypeCount);

entity.AddComponent(new MyComponent1{ a = 10 });

entity.OnComponentChanged -= handler2B;
handlers = entity.DebugEventHandlers;
AreEqual(2, handlers.HandlerCount);
AreEqual(1, handlers.TypeCount);
entity.AddComponent(new MyComponent1{ a = 20 });

entity.OnComponentChanged -= handler2A;
handlers = entity.DebugEventHandlers;
AreEqual(1, handlers.HandlerCount);
AreEqual(1, handlers.TypeCount);

entity.OnComponentChanged -= handler1;
handlers = entity.DebugEventHandlers;
AreEqual(0, handlers.HandlerCount);
AreEqual(0, handlers.TypeCount);

// All event handlers removed. AddComponent() will not call any delegate
entity.AddComponent(new MyComponent1{ a = 30 });

// add handler1 again
entity.OnComponentChanged += handler1;
entity.AddComponent(new MyComponent1{ a = 40 });

AreEqual(3, countEvent1);
AreEqual(2, countEvent2A);
AreEqual(1, countEvent2B);
}
}

}

0 comments on commit a39ebed

Please sign in to comment.