local function print_aoi_events(aoi_events)
    print("==========print_aoi_events========")
    -- for watcher, grid_info in pairs(aoi_events) do
    --     print("watcher", watcher)
    --     for grid_idx, event_list in pairs(grid_info) do
    --         --print("grid_idx", grid_idx)
    --         for i = 1, 3 do
    --             local sub_event_list = event_list[i]
    --             if sub_event_list then
    --                 for _, e in ipairs(sub_event_list) do
    --                     if(e[1]==1 or e[1] == 'A') then
    --                         print(string.format("event:A,id:%d,x:%d,y:%d",e[2],e[3],e[4]))
    --                     elseif(e[1]==2 or e[1] == 'D') then
    --                         print(string.format("event:D,id:%d,x:%d,y:%d",e[2],e[3],e[4]))
    --                     else
    --                         print(string.format("event:U,id:%d,x:%d,y:%d",e[2],e[3],e[4]))
    --                     end
    --                 end
    --             end
    --         end

    --     end
    -- end
    for watcher, watch_ret in pairs(aoi_events) do
        print("watcher", watcher)
        for _, data in ipairs(watch_ret) do
            for _, e in ipairs(data) do
                if (e[1] == 1 or e[1] == 'A') then
                    print(string.format("event:A,id:%d,x:%d,y:%d", e[2], e[3], e[4]))
                elseif (e[1] == 2 or e[1] == 'D') then
                    print(string.format("event:D,id:%d,x:%d,y:%d", e[2], e[3], e[4]))
                else
                    print(string.format("event:U,id:%d,x:%d,y:%d", e[2], e[3], e[4]))
                end
            end
        end
    end
end

local function my_aoi_test()
    local my_aoi = require "laoi"
    local world = my_aoi.create_world(4, 3)
    my_aoi.add_obj(world, 7, 2, 2, 1, 1) -- my_aoi.add_obj(world, 7, 2,2,1,1)
    my_aoi.add_obj(world, 1, 2, 2, 1, 1)
    my_aoi.add_obj(world, 6, 3, 3, 1, 1)
    print_aoi_events(my_aoi.update_aoi(world))
    print_aoi_events(my_aoi.update_aoi(world))

    my_aoi.set_obj(world, 7, 2, 3)
    print_aoi_events(my_aoi.update_aoi(world))

    my_aoi.add_obj(world, 2, 1, 1, 1, 1)
    my_aoi.set_obj(world, 2, 1, 2)
    print_aoi_events(my_aoi.update_aoi(world))

    my_aoi.add_obj(world, 3, 2, 2, 1, 1)
    my_aoi.del_obj(world, 3)
    print_aoi_events(my_aoi.update_aoi(world))

    my_aoi.set_obj(world, 2, 3, 3)
    my_aoi.set_obj(world, 7, 1, 1)
    print_aoi_events(my_aoi.update_aoi(world))

    my_aoi.set_obj(world, 2, 3, 2)
    my_aoi.set_obj(world, 2, 3, 1)
    print_aoi_events(my_aoi.update_aoi(world))
end

my_aoi_test()
