return function()local r=require(script.Parent.Parent.None)local q=require(script.Parent.zipAll)it("\115\104\111\117\108\100 \122\105\112 \116\111\103\101\116\104\101\114 \116\119\111 \097\114\114\097\121\115",function()local r={1,2;3}local c={"\097","\098","\099"}local S=q(r,c);(expect(S)).to.be.a("\116\097\098\108\101");(expect(#S)).to.equal(3);(expect(S[1])).to.be.a("\116\097\098\108\101");(expect(S[1][1])).to.equal(1);(expect(S[1][2])).to.equal("\097");(expect(S[2])).to.be.a("\116\097\098\108\101");(expect(S[2][1])).to.equal(2);(expect(S[2][2])).to.equal("\098");(expect(S[3])).to.be.a("\116\097\098\108\101");(expect(S[3][1])).to.equal(3);(expect(S[3][2])).to.equal("\099")end)it("\115\104\111\117\108\100 \110\111\116 \109\111\100\105\102\121 \116\104\101 \111\114\105\103\105\110\097\108 \097\114\114\097\121\115",function()local r={1;2,3}local c={"\097","\098";"\099"}q(r,c);(expect(r)).to.be.a("\116\097\098\108\101");(expect(#r)).to.equal(3);(expect(r[1])).to.equal(1);(expect(r[2])).to.equal(2);(expect(r[3])).to.equal(3);(expect(c)).to.be.a("\116\097\098\108\101");(expect(#c)).to.equal(3);(expect(c[1])).to.equal("\097");(expect(c[2])).to.equal("\098");(expect(c[3])).to.equal("\099")end)it("\115\104\111\117\108\100 \102\105\108\108 \105\110 \116\104\101 \098\108\097\110\107\115 \119\105\116\104 \078\111\110\101",function()local c={1;2,3}local S={"\097";"\098"}local C=q(c,S);(expect(C)).to.be.a("\116\097\098\108\101");(expect(#C)).to.equal(3);(expect(C[1])).to.be.a("\116\097\098\108\101");(expect(C[1][1])).to.equal(1);(expect(C[1][2])).to.equal("\097");(expect(C[2])).to.be.a("\116\097\098\108\101");(expect(C[2][1])).to.equal(2);(expect(C[2][2])).to.equal("\098");(expect(C[3])).to.be.a("\116\097\098\108\101");(expect(C[3][1])).to.equal(3);(expect(C[3][2])).to.equal(r)end)end
return function()
	local None = require(script.Parent.Parent.None)
	local ZipAll = require(script.Parent.zipAll)

	it("should zip together two arrays", function()
		local array1 = { 1, 2, 3 }
		local array2 = { "a", "b", "c" }

		local new = ZipAll(array1, array2)

		expect(new).to.be.a("table")
		expect(#new).to.equal(3)

		expect(new[1]).to.be.a("table")
		expect(new[1][1]).to.equal(1)
		expect(new[1][2]).to.equal("a")

		expect(new[2]).to.be.a("table")
		expect(new[2][1]).to.equal(2)
		expect(new[2][2]).to.equal("b")

		expect(new[3]).to.be.a("table")
		expect(new[3][1]).to.equal(3)
		expect(new[3][2]).to.equal("c")
	end)

	it("should not modify the original arrays", function()
		local array1 = { 1, 2, 3 }
		local array2 = { "a", "b", "c" }

		ZipAll(array1, array2)

		expect(array1).to.be.a("table")
		expect(#array1).to.equal(3)

		expect(array1[1]).to.equal(1)
		expect(array1[2]).to.equal(2)
		expect(array1[3]).to.equal(3)

		expect(array2).to.be.a("table")
		expect(#array2).to.equal(3)

		expect(array2[1]).to.equal("a")
		expect(array2[2]).to.equal("b")
		expect(array2[3]).to.equal("c")
	end)

	it("should fill in the blanks with None", function()
		local array1 = { 1, 2, 3 }
		local array2 = { "a", "b" }

		local new = ZipAll(array1, array2)

		expect(new).to.be.a("table")
		expect(#new).to.equal(3)

		expect(new[1]).to.be.a("table")
		expect(new[1][1]).to.equal(1)
		expect(new[1][2]).to.equal("a")

		expect(new[2]).to.be.a("table")
		expect(new[2][1]).to.equal(2)
		expect(new[2][2]).to.equal("b")

		expect(new[3]).to.be.a("table")
		expect(new[3][1]).to.equal(3)
		expect(new[3][2]).to.equal(None)
	end)
end
