return function()local u=require(script.Parent)it("\115\104\111\117\108\100 \099\111\109\112\097\114\101 \100\105\099\116\105\111\110\097\114\105\101\115",function()local q={a="\097";b={},c=6}local l={b=q.b;c=q.c;a=q.a}local r={b={},a=q.a;c=q.c}local P={a=q.a;b=q.b,c=q.c,d="\104\101\108\108\111"};(expect(u(q,q))).to.equal(true);(expect(u(q,l))).to.equal(true);(expect(u(q,r))).to.equal(false);(expect(u(l,r))).to.equal(false);(expect(u(q,P))).to.equal(false);(expect(u(l,P))).to.equal(false)end)it("\115\104\111\117\108\100 \104\097\110\100\108\101 \110\105\108 \102\111\114 \101\105\116\104\101\114 \097\114\103\117\109\101\110\116",function()local q={};(expect(u(nil,nil))).to.equal(true);(expect(u(q,nil))).to.equal(false);(expect(u(nil,q))).to.equal(false)end)end
return function()
	local shallowEqual = require(script.Parent)

	it("should compare dictionaries", function()
		local a = {
			a = "a",
			b = {},
			c = 6,
		}

		local b = {
			b = a.b,
			c = a.c,
			a = a.a,
		}

		local c = {
			b = {},
			a = a.a,
			c = a.c,
		}

		local d = {
			a = a.a,
			b = a.b,
			c = a.c,
			d = "hello",
		}

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

	it("should handle nil for either argument", function()
		local a = {}

		expect(shallowEqual(nil, nil)).to.equal(true)
		expect(shallowEqual(a, nil)).to.equal(false)
		expect(shallowEqual(nil, a)).to.equal(false)
	end)
end
