public void CirclesOverlap()
    {
        var map = new NativeMultiHashMap <int, int>(10, Allocator.Temp);

        int valA = 55;
        int radA = 15;

        map.InsertCircle(new float2(10, 10), radA, valA);
        // min = -5, -5 => -1, -1
        // max = 25, 25 => 3, 3

        int valB = 99;
        int radB = 10;

        map.InsertCircle(new float2(30, 10), radB, valB);
        // min = 20, 0 => 2, 0
        // max = 40, 20 => 4, 2

        var values = CopyCellList(map, new int2(2, 1));

        Assert.AreEqual(2, values.Count);
        Assert.Contains(valA, values);
        Assert.Contains(valB, values);

        values = CopyCellList(map, new int2(3, 1));

        Assert.AreEqual(1, values.Count);
        Assert.AreEqual(valB, values[0]);
    }
    public void CircleValuesAreInserted()
    {
        var map = new NativeMultiHashMap <int, int>(10, Allocator.Temp);

        float2 pos      = new float2(30, 30);
        int    cellSize = 10;
        int2   cell     = SpatialHashExt.CellFromPos(pos, cellSize);
        int    value    = 5;
        float  radius   = 1;

        map.InsertCircle(pos, radius, value, cellSize);

        var items = CopyCellList(map, cell);

        Assert.AreEqual(1, items.Count);
        Assert.AreEqual(value, items[0]);

        pos   = new float2(14.3f, 7.1f);
        cell  = SpatialHashExt.CellFromPos(pos, cellSize);
        value = 15;

        map.InsertCircle(pos, radius, value, cellSize);

        items = CopyCellList(map, cell);

        Assert.AreEqual(1, items.Count);
        Assert.AreEqual(value, items[0]);

        pos    = new float2(41f, 55.5f);
        radius = 15;
        value  = 45;

        map.InsertCircle(pos, radius, value, cellSize);

        // min = 26, 40.5 => 2, 4
        // max = 56, 70.5 => 6, 8

        for (int x = 2; x < 6; ++x)
        {
            for (int y = 4; y < 8; ++y)
            {
                items = CopyCellList(map, new int2(x, y));

                Assert.AreEqual(1, items.Count);
                Assert.AreEqual(value, items[0]);
            }
        }
    }