require("awful.mouse")

local steps = {}

-- warning: order is important
local buttons = {"left", "middle", "right"}

-- Check the is_****_mouse_button_pressed properties.
for k, v in ipairs(buttons) do

    -- Press the button.
    table.insert(steps, function()
        root.fake_input("button_press", k)
        return true
    end)

    -- Check the property matrix.
    table.insert(steps, function()
        if not mouse["is_"..v.."_mouse_button_pressed"] then return end

        for _, v2 in ipairs(buttons) do
            assert(mouse["is_"..v2.."_mouse_button_pressed"] == (v == v2))
        end

        root.fake_input("button_release", k)

        return true
    end)

    -- Release the button.
    table.insert(steps, function()
        if mouse["is_"..v.."_mouse_button_pressed"] then return end

        return true
    end)

end

require("_runner").run_steps(steps)

-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80