---------------------------------------------------------------------------
-- @author Aire-One
-- @copyright 2018 Aire-One
---------------------------------------------------------------------------

local slider = require("wibox.widget.slider")

describe("wibox.widget.slider", function()
    local widget = nil

    before_each(function()
        widget = slider()
    end)

    describe("constructor", function()
        it("applies arguments", function()
            widget = slider({ value = 10 })

            assert.is.equal(widget.value, 10)
        end)
    end)

    describe("signal property::value", function()
        local property_value = nil
        before_each(function()
            widget:connect_signal("property::value", function()
                property_value = property_value + 1
            end)

            property_value = 0
        end)

        it("signal property::value", function()
            -- initial stats
            assert.is.equal(property_value, 0)
            assert.is.equal(widget.value, 0)

            -- test to direct change the value
            -- it should call the automated "property changed" signal
            widget.value = 50
            assert.is.equal(property_value, 1)
            assert.is.equal(widget.value, 50)

            -- test with the setter
            widget:set_value(100)
            assert.is.equal(property_value, 2)
            assert.is.equal(widget.value, 100)
        end)
    end)
end)

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