コード例 #1
0
        public void OnDisconnect_should_add_OnDisconnected_to_WorkerEntity_and_deallocate_world_command_senders()
        {
            const string DisconnectReason = "Testing disconnect.";

            var createEntityRequestsHandle =
                entityManager.GetComponentData <WorldCommands.CreateEntity.CommandSender>(worker.WorkerEntity).Handle;
            var deleteEntityRequestsHandle =
                entityManager.GetComponentData <WorldCommands.DeleteEntity.CommandSender>(worker.WorkerEntity).Handle;
            var entityQueryRequestsHandle =
                entityManager.GetComponentData <WorldCommands.EntityQuery.CommandSender>(worker.WorkerEntity).Handle;
            var reserveEntityIdsRequestsHandle =
                entityManager.GetComponentData <WorldCommands.ReserveEntityIds.CommandSender>(worker.WorkerEntity)
                .Handle;

            using (var wrappedOp = WorkerOpFactory.CreateDisconnectOp(DisconnectReason))
            {
                receiveSystem.OnDisconnect(wrappedOp.Op);
            }

            Assert.IsTrue(entityManager.HasComponent <OnDisconnected>(worker.WorkerEntity));
            Assert.AreEqual(DisconnectReason,
                            entityManager.GetSharedComponentData <OnDisconnected>(worker.WorkerEntity).ReasonForDisconnect);

            Assert.Throws <ArgumentException>(() =>
                                              WorldCommands.CreateEntity.RequestsProvider.Get(createEntityRequestsHandle));
            Assert.Throws <ArgumentException>(() =>
                                              WorldCommands.DeleteEntity.RequestsProvider.Get(deleteEntityRequestsHandle));
            Assert.Throws <ArgumentException>(() =>
                                              WorldCommands.EntityQuery.RequestsProvider.Get(entityQueryRequestsHandle));
            Assert.Throws <ArgumentException>(() =>
                                              WorldCommands.ReserveEntityIds.RequestsProvider.Get(reserveEntityIdsRequestsHandle));
        }