return function()
local Signal = require(script.Parent.Signal)
it("should invoke all connections, instantly", function()
local signal = Signal.new()
local a, b
signal:connect(function(value)
a = value
end)
signal:connect(function(value)
b = value
end)
signal:fire("hello")
expect(a).to.equal("hello")
expect(b).to.equal("hello")
end)
it("should return values when :wait() is called", function()
local signal = Signal.new()
spawn(function()
signal:fire(123, "hello")
end)
local a, b = signal:wait()
expect(a).to.equal(123)
expect(b).to.equal("hello")
end)
it("should properly handle disconnections", function()
local signal = Signal.new()
local didRun = false
local connection = signal:connect(function()
didRun = true
end)
connection:disconnect()
signal:fire()
expect(didRun).to.equal(false)
end)
end