return function()local Y=require(script.Parent.difference)it("\115\104\111\117\108\100 \114\101\116\117\114\110 \116\104\101 \100\105\102\102\101\114\101\110\099\101 \098\101\116\119\101\101\110 \116\119\111 \115\101\116\115",function()local N={hello=true,world=true}local p={panda=true,cat=true}local e=Y(N,p);(expect(e)).to.be.a("\116\097\098\108\101");(expect(e.hello)).to.equal(true);(expect(e.world)).to.equal(true);(expect(e.panda)).to.equal(nil);(expect(e.cat)).to.equal(nil)end)it("\115\104\111\117\108\100 \097\099\099\101\112\116 \118\097\114\097\114\103 \110\105\108 \118\097\108\117\101\115",function()local N={hello=true;world=true}local p={panda=true;cat=true}local e=Y(N,nil,p);(expect(e)).to.be.a("\116\097\098\108\101");(expect(e.hello)).to.equal(true);(expect(e.panda)).to.equal(nil)end)it("\115\104\111\117\108\100 \097\099\099\101\112\116 \109\117\108\116\105\112\108\101 \115\101\116\115",function()local N={hello=true;world=true}local p={panda=true;cat=true}local e={hello=true;panda=true}local I=Y(N,p,e);(expect(I)).to.be.a("\116\097\098\108\101");(expect(I.hello)).to.equal(nil);(expect(I.world)).to.equal(true);(expect(I.panda)).to.equal(nil);(expect(I.cat)).to.equal(nil)end)end
return function()
	local difference = require(script.Parent.difference)

	it("should return the difference between two sets", function()
		local set = { hello = true, world = true }
		local otherSet = { panda = true, cat = true }

		local newSet = difference(set, otherSet)

		expect(newSet).to.be.a("table")

		expect(newSet.hello).to.equal(true)
		expect(newSet.world).to.equal(true)
		expect(newSet.panda).to.equal(nil)
		expect(newSet.cat).to.equal(nil)
	end)

	it("should accept vararg nil values", function()
		local set = { hello = true, world = true }
		local otherSet = { panda = true, cat = true }

		local newSet = difference(set, nil, otherSet)

		expect(newSet).to.be.a("table")
		expect(newSet.hello).to.equal(true)
		expect(newSet.panda).to.equal(nil)
	end)

	it("should accept multiple sets", function()
		local set = { hello = true, world = true }
		local otherSet = { panda = true, cat = true }
		local anotherSet = { hello = true, panda = true }

		local newSet = difference(set, otherSet, anotherSet)

		expect(newSet).to.be.a("table")

		expect(newSet.hello).to.equal(nil)
		expect(newSet.world).to.equal(true)
		expect(newSet.panda).to.equal(nil)
		expect(newSet.cat).to.equal(nil)
	end)
end
