public void TestStop() { var mockOrder = new Mock <IOrder>(); mockOrder.Setup(o => o.IsValid(It.IsAny <Entity>())).Returns(true); mockOrder.Setup(o => o.IsComplete(It.IsAny <Entity>())).Returns(false); mockOrder.Setup(o => o.Update(It.IsAny <Entity>(), It.IsAny <GameTime>())) .Callback(() => TestActor.Tell("Failed")); var entity = new Entity(); var mockComponentActorFactory = new Mock <IComponentActorFactory>(); mockComponentActorFactory.Setup(f => f.GetOrCreateActorForComponent(It.IsAny <EntityComponent>())) .Returns((EntityComponent component) => ActorRefs.Nobody); IActorRef entityActor = ActorOfAsTestActorRef <EntityActor>(EntityActor.Props(entity, mockComponentActorFactory.Object), TestActor); entityActor.Tell(new EnqueueOrder(entity.Id, mockOrder.Object)); entityActor.Tell(new Update(new GameTime())); ExpectMsg("Failed"); entityActor.Tell(new Stop(entity.Id)); entityActor.Tell(new Update(new GameTime())); ExpectNoMsg(500); }
public void TestOrders() { var mockOrder = new Mock <IOrder>(); mockOrder.Setup(o => o.IsValid(It.IsAny <Entity>())).Returns(false); var entity = new Entity(); var mockComponentActorFactory = new Mock <IComponentActorFactory>(); mockComponentActorFactory.Setup(f => f.GetOrCreateActorForComponent(It.IsAny <EntityComponent>())) .Returns((EntityComponent component) => ActorRefs.Nobody); IActorRef entityActor = ActorOfAsTestActorRef <EntityActor>(EntityActor.Props(entity, mockComponentActorFactory.Object), TestActor); entityActor.Tell(new EnqueueOrder(entity.Id, mockOrder.Object)); entityActor.Tell(new Update(new GameTime())); ExpectMsg <InvalidOrder>(); mockOrder.Reset(); mockOrder.Setup(o => o.IsValid(It.IsAny <Entity>())).Returns(true); mockOrder.Setup(o => o.IsComplete(It.IsAny <Entity>())).Returns(false); entityActor.Tell(new EnqueueOrder(entity.Id, mockOrder.Object)); entityActor.Tell(new Update(new GameTime())); ExpectNoMsg(); mockOrder.Verify(o => o.IsComplete(It.IsAny <Entity>()), Times.AtMostOnce); mockOrder.Verify(o => o.IsValid(It.IsAny <Entity>()), Times.Once); mockOrder.Verify(o => o.Update(It.IsAny <Entity>(), It.IsAny <GameTime>()), Times.Once); mockOrder.Invocations.Clear(); mockOrder.Setup(o => o.IsComplete(It.IsAny <Entity>())).Returns(true); entityActor.Tell(new Update(new GameTime())); ExpectNoMsg(100); mockOrder.Verify(o => o.IsComplete(It.IsAny <Entity>()), Times.Once); mockOrder.Verify(o => o.IsValid(It.IsAny <Entity>()), Times.AtMostOnce); mockOrder.Verify(o => o.Update(It.IsAny <Entity>(), It.IsAny <GameTime>()), Times.Never); }
public void TestAnyMessage() { var entity = new Entity(); var mockComponentActorFactory = new Mock <IComponentActorFactory>(); IActorRef entityActor = ActorOfAsTestActorRef <EntityActor>(EntityActor.Props(entity, mockComponentActorFactory.Object), TestActor); // ReSharper disable once SuggestVarOrType_SimpleTypes entityActor.Tell(new TestMessage()); ExpectMsg <TestMessage>(); }
public void TestMessageToComponent() { var entity = new Entity { new TestComponent() }; var mockComponentActorFactory = new Mock <IComponentActorFactory>(); mockComponentActorFactory.Setup(f => f.GetOrCreateActorForComponent(It.IsAny <EntityComponent>())) .Returns((EntityComponent component) => Sys.ActorOf(Props.Create(() => new ComponentActor()))); IActorRef entityActor = ActorOfAsTestActorRef <EntityActor>(EntityActor.Props(entity, mockComponentActorFactory.Object), TestActor); // ReSharper disable once SuggestVarOrType_SimpleTypes var message = Guid.NewGuid(); entityActor.Tell(new TestComponentMessage(entity.Id, message)); ExpectMsg(message); }
public void TestMessageToEntityComponentFirstOfType() { var mockMessage = new Mock <IMessageToEntityComponentFirstOfType>(); var mockComponentActorFactory = new Mock <IComponentActorFactory>(); mockComponentActorFactory.Setup(f => f.GetOrCreateActorForComponent(It.IsAny <EntityComponent>())).Returns( (EntityComponent component) => { return(Sys.ActorOf(Props.Create(() => new EntityTestActor(component.Id)), $"{component.Id}")); } ); var testComponent = new Utils.TestComponent(); var entity = new Entity { testComponent, new Utils.TestComponent() }; mockMessage.Setup(m => m.EntityId).Returns(entity.Id); mockMessage.Setup(m => m.ComponentType).Returns(typeof(Utils.TestComponent)); mockMessage.Setup(m => m.Message).Returns("Test"); IActorRef entityActor = Sys.ActorOf(EntityActor.Props(entity, mockComponentActorFactory.Object)); entityActor.Tell(mockMessage.Object); ExpectMsg(testComponent.Id); entity.RemoveAll <EntityComponent>(); entity.Dispose(); entity = new Entity { new Utils.TestComponent(), testComponent }; entityActor = Sys.ActorOf(EntityActor.Props(entity, mockComponentActorFactory.Object)); entityActor.Tell(mockMessage.Object); ExpectMsg <Guid>(guid => guid != testComponent.Id); }
public void TestUpdate() { var mockComponentActorFactory = new Mock <IComponentActorFactory>(); mockComponentActorFactory.Setup(f => f.GetOrCreateActorForComponent(It.IsAny <EntityComponent>())).Returns( (EntityComponent component) => { return(Sys.ActorOf(Props.Create(() => new EntityTestActor(component.Id)), $"{component.Id}")); } ); var entity = new Entity { new Utils.TestComponent(), new Utils.TestComponent(), new Utils.TestComponent() }; IActorRef entityActor = Sys.ActorOf(EntityActor.Props(entity, mockComponentActorFactory.Object)); entityActor.Tell(new Update(new GameTime())); ExpectMsgAllOf(entity.Select(c => c.Id).ToArray()); ExpectNoMsg(500); }