return function()local b=game:GetService("\082\101\112\108\105\099\097\116\101\100\083\116\111\114\097\103\101")local Q=b.Packages local o=require(Q.Llama)local F=o.None local O=o.Dictionary local z=O.fromLists it("\115\104\111\117\108\100 \118\097\108\105\100\097\116\101 \116\121\112\101\115",function()local b={{0},{{};0}}for Q=1,#b,1 do local o,F=pcall(function()z(unpack(b[Q]))end);(expect(string.find(F,"\101\120\112\101\099\116\101\100\044 \103\111\116"))).to.be.ok()end end)it("\115\104\111\117\108\100 \114\101\116\117\114\110 \097 \110\101\119 \116\097\098\108\101",function()local b={}local Q={}local o=z(b,Q);(expect(o)).never.to.equal(b);(expect(o)).never.to.equal(Q)end)it("\115\104\111\117\108\100 \110\111\116 \109\117\116\097\116\101 \112\097\115\115\101\100 \105\110 \116\097\098\108\101\115",function()local b=0 local Q=0 local o={"\102\111\111";"\098\097\114"}local F={1,2}setmetatable(o,{__newindex=function()b=b+1 end})setmetatable(F,{__newindex=function()Q=Q+1 end})z(o,F);(expect(b)).to.equal(0);(expect(Q)).to.equal(0)end)it("\115\104\111\117\108\100 \099\114\101\097\116\101 \097 \100\105\099\116\105\111\110\097\114\121 \103\105\118\101\110 \050 \108\105\115\116\115",function()local b={"\102\111\111";"\098\097\114"}local Q={1,2}local o=z(b,Q);(expect(o.foo)).to.equal(Q[1]);(expect(o.bar)).to.equal(Q[2])end)it("\115\104\111\117\108\100 \116\104\114\111\119 \105\102 \103\105\118\101\110 \108\105\115\116\115 \097\114\101 \110\111\116 \116\104\101 \115\097\109\101 \115\105\122\101",function()(expect(function()z({"\102\111\111"},{1,2})end)).to.throw()end)it("\115\104\111\117\108\100 \110\111\116 \115\107\105\112 \078\111\110\101 \118\097\108\117\101\115",function()local b={F,"\098\097\114"}local Q={1,F}local o=z(b,Q);(expect(o[F])).to.equal(Q[1]);(expect(o.bar)).to.equal(F)end)it("\115\104\111\117\108\100 \114\101\112\108\097\099\101 \100\117\112\108\105\099\097\116\101 \107\101\121\115 \119\105\116\104 \108\097\116\101\114 \118\097\108\117\101\115",function()local b={"\102\111\111";"\098\097\114","\102\111\111"}local Q={1;2,3}local o=z(b,Q);(expect(o.foo)).to.equal(Q[3]);(expect(o.bar)).to.equal(Q[2])end)end
return function()
	local ReplicatedStorage = game:GetService("ReplicatedStorage")

	local Packages = ReplicatedStorage.Packages
	local Llama = require(Packages.Llama)

	local None = Llama.None

	local Dictionary = Llama.Dictionary
	local fromLists = Dictionary.fromLists

	it("should validate types", function()
		local args = {
			{ 0 },
			{ {}, 0 },
		}

		for i = 1, #args do
			local _, err = pcall(function()
				fromLists(unpack(args[i]))
			end)

			expect(string.find(err, "expected, got")).to.be.ok()
		end
	end)

	it("should return a new table", function()
		local a = {}
		local b = {}
		local c = fromLists(a, b)

		expect(c).never.to.equal(a)
		expect(c).never.to.equal(b)
	end)

	it("should not mutate passed in tables", function()
		local keyMutations = 0
		local valueMutations = 0

		local keys = { "foo", "bar" }
		local values = { 1, 2 }

		setmetatable(keys, {
			__newindex = function()
				keyMutations = keyMutations + 1
			end,
		})

		setmetatable(values, {
			__newindex = function()
				valueMutations = valueMutations + 1
			end,
		})

		fromLists(keys, values)

		expect(keyMutations).to.equal(0)
		expect(valueMutations).to.equal(0)
	end)

	it("should create a dictionary given 2 lists", function()
		local keys = { "foo", "bar" }
		local values = { 1, 2 }
		local dictionary = fromLists(keys, values)

		expect(dictionary.foo).to.equal(values[1])
		expect(dictionary.bar).to.equal(values[2])
	end)

	it("should throw if given lists are not the same size", function()
		expect(function()
			fromLists({ "foo" }, { 1, 2 })
		end).to.throw()
	end)

	it("should not skip None values", function()
		local keys = { None, "bar" }
		local values = { 1, None }
		local dictionary = fromLists(keys, values)

		expect(dictionary[None]).to.equal(values[1])
		expect(dictionary.bar).to.equal(None)
	end)

	it("should replace duplicate keys with later values", function()
		local keys = { "foo", "bar", "foo" }
		local values = { 1, 2, 3 }
		local dictionary = fromLists(keys, values)

		expect(dictionary.foo).to.equal(values[3])
		expect(dictionary.bar).to.equal(values[2])
	end)
end