]> code.bitgloo.com Git - clyne/entityx.git/commitdiff
Test that receivers are only called once for each emit.
authorAlec Thomas <alec@swapoff.org>
Tue, 15 Sep 2015 01:19:36 +0000 (11:19 +1000)
committerAlec Thomas <alec@swapoff.org>
Tue, 15 Sep 2015 01:19:53 +0000 (11:19 +1000)
See #109.

entityx/Event_test.cc

index c643ee98b807018b50bb5fe41ad2bf1cf846da7d..c31505140f9331d2e32c16fadf47926f640706ec 100644 (file)
@@ -35,12 +35,15 @@ struct Collision {
 struct ExplosionSystem : public Receiver<ExplosionSystem> {
   void receive(const Explosion &explosion) {
     damage_received += explosion.damage;
+    received_count++;
   }
 
   void receive(const Collision &collision) {
     damage_received += collision.damage;
+    received_count++;
   }
 
+  int received_count = 0;
   int damage_received = 0;
 };
 
@@ -51,9 +54,11 @@ TEST_CASE("TestEmitReceive") {
   em.subscribe<Collision>(explosion_system);
   REQUIRE(0 == explosion_system.damage_received);
   em.emit<Explosion>(10);
+  REQUIRE(1 == explosion_system.received_count);
   REQUIRE(10 == explosion_system.damage_received);
   em.emit<Collision>(10);
   REQUIRE(20 == explosion_system.damage_received);
+  REQUIRE(2 == explosion_system.received_count);
 }
 
 TEST_CASE("TestUntypedEmitReceive") {
@@ -63,6 +68,7 @@ TEST_CASE("TestUntypedEmitReceive") {
   REQUIRE(0 == explosion_system.damage_received);
   Explosion explosion(10);
   em.emit(explosion);
+  REQUIRE(1 == explosion_system.received_count);
   REQUIRE(10 == explosion_system.damage_received);
 }