public void TestAdd()
        {
            var e    = EntityManager.CreateEntity();
            var item = new Item {
                Center = new float3(50.5F), Size = new float3(1.1F)
            };

            EntityManager.AddComponentData(e, item);

            EntityCommandBufferSystem barrier = World.CreateSystem <BeginInitializationEntityCommandBufferSystem>();
            var system = World.CreateSystem <SystemTest>();

            system.Barrier = barrier;

            system.Update();
            EntityManager.CompleteAllJobs();
            barrier.Update();
            EntityManager.CompleteAllJobs();

            Assert.IsTrue(EntityManager.HasComponent(e, ComponentType.ReadOnly(typeof(ItemMirror))));
            Assert.AreEqual(1, EntityManager.GetComponentData <ItemMirror>(e).GetItemID);

            var sh = system.SpatialHash;

            Assert.AreEqual(1, sh.ItemCount);
            Assert.AreEqual(3 * 3 * 3, sh.BucketItemCount);

            var results = new NativeList <Item>(5, Allocator.TempJob);
            var bounds  = new Bounds(item.GetCenter(), item.GetSize());

            sh.CalculStartEndIteration(bounds, out var start, out var end);

            var hashPosition = new int3(0F);

            for (int x = start.x; x < end.x; ++x)
            {
                hashPosition.x = x;

                for (int y = start.y; y < end.y; ++y)
                {
                    hashPosition.y = y;

                    for (int z = start.z; z < end.z; ++z)
                    {
                        hashPosition.z = z;

                        var querryBound = new Bounds(sh.GetPositionVoxel(hashPosition, true), sh.CellSize * 0.99F);

                        results.Clear();
                        sh.Query(querryBound, results);

                        Assert.AreEqual(1, results.Length);
                        Assert.AreEqual(item, results[0]);
                    }
                }
            }

            results.Dispose();
        }