return function()local U=game:GetService("\082\101\112\108\105\099\097\116\101\100\083\116\111\114\097\103\101")local s=U.Packages local H=require(s.Llama)local X=H.List local Y=X.equalsDeep it("\115\104\111\117\108\100 \114\101\116\117\114\110 \097 \098\111\111\108\101\097\110",function()local U={};(expect(Y(U,U))).to.be.a("\098\111\111\108\101\097\110");(expect(Y(U,{}))).to.be.a("\098\111\111\108\101\097\110");(expect(Y({},{1}))).to.be.a("\098\111\111\108\101\097\110")end)it("\115\104\111\117\108\100 \114\101\116\117\114\110 \119\104\101\116\104\101\114 \112\114\111\118\105\100\101\100 \116\097\098\108\101\115 \097\110\100 \115\117\098\116\097\098\108\101\115 \104\097\118\101 \118\097\108\117\101 \101\113\117\097\108\105\116\121 \111\114 \110\111\116",function()local U={"\102\111\111","\098\097\114",{"\098\097\122"}}local s={"\102\111\111";"\098\097\114";{"\098\097\122"}}local H={"\102\111\111";"\098\097\122",{"\098\097\122"}};(expect(Y(U,s))).to.equal(true);(expect(Y(U,H))).to.equal(false)end)it("\115\104\111\117\108\100 \119\111\114\107 \119\105\116\104 \109\117\108\116\105\112\108\101 \115\117\098\116\097\098\108\101\115",function()local U={{{"\104\105"}}}local s={{{"\104\105"}}};(expect(Y(U,s))).to.equal(true)end)it("\115\104\111\117\108\100 \119\111\114\107 \119\105\116\104 \097\110 \097\114\098\105\116\114\097\114\121 \110\117\109\098\101\114 \111\102 \116\097\098\108\101\115",function()local U={"\102\111\111";"\098\097\114";{"\098\097\122"}}local s=U local H={"\102\111\111";"\098\097\114";{"\098\097\122"}}local X={"\102\111\111","\098\097\114";{{{"\098\097\122"}}}}local B=X local Q={"\102\111\111";"\098\097\114";{{{"\098\097\122"}}}};(expect(Y(U,s,H))).to.equal(true);(expect(Y(X,B,Q))).to.equal(true);(expect(Y(U,s,H,X,B,Q))).to.equal(false)end)it("\115\104\111\117\108\100 \119\111\114\107 \119\105\116\104 \111\110\101 \116\097\098\108\101",function()local U={};(expect(Y(U))).to.equal(true)end)it("\115\104\111\117\108\100 \119\111\114\107 \119\105\116\104 \122\101\114\111 \116\097\098\108\101\115",function()(expect(Y())).to.equal(true)end)it("\115\104\111\117\108\100 \119\111\114\107 \102\111\114 \097\110\121 \116\121\112\101 \111\102 \111\098\106\101\099\116\115",function()(expect(Y(1,1))).to.equal(true);(expect(Y(1,"\097"))).to.equal(false)end)end
return function()
	local ReplicatedStorage = game:GetService("ReplicatedStorage")

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

	local List = Llama.List
	local equalsDeep = List.equalsDeep

	it("should return a boolean", function()
		local a = {}

		expect(equalsDeep(a, a)).to.be.a("boolean")
		expect(equalsDeep(a, {})).to.be.a("boolean")
		expect(equalsDeep({}, { 1 })).to.be.a("boolean")
	end)

	it("should return whether provided tables and subtables have value equality or not", function()
		local a = {
			"foo",
			"bar",
			{
				"baz",
			},
		}
		local b = {
			"foo",
			"bar",
			{
				"baz",
			},
		}
		local c = {
			"foo",
			"baz",
			{
				"baz",
			},
		}

		expect(equalsDeep(a, b)).to.equal(true)
		expect(equalsDeep(a, c)).to.equal(false)
	end)

	it("should work with multiple subtables", function()
		local a = {
			{
				{
					"hi"
				}
			}
		}
		local b = {
			{
				{
					"hi"
				}
			}
		}

		expect(equalsDeep(a, b)).to.equal(true)
	end)

	it("should work with an arbitrary number of tables", function()
		local a = {
			"foo",
			"bar",
			{
				"baz",
			},
		}
		local b = a
		local c = {
			"foo",
			"bar",
			{
				"baz",
			},
		}
		local d = {
			"foo",
			"bar",
			{
				{
					{
						"baz",
					},
				},
			},
		}
		local e = d
		local f = {
			"foo",
			"bar",
			{
				{
					{
						"baz",
					},
				},
			},
		}

		expect(equalsDeep(a, b, c)).to.equal(true)
		expect(equalsDeep(d, e, f)).to.equal(true)
		expect(equalsDeep(a, b, c, d, e, f)).to.equal(false)
	end)

	it("should work with one table", function()
		local a = {}

		expect(equalsDeep(a)).to.equal(true)
	end)

	it("should work with zero tables", function()
		expect(equalsDeep()).to.equal(true)
	end)

	it("should work for any type of objects", function()
		expect(equalsDeep(1, 1)).to.equal(true)
		expect(equalsDeep(1, "a")).to.equal(false)
	end)
end