return function()local Z=require(script.Parent)describe("\067\111\110\115\116\114\117\099\116\111\114",function()it("\115\104\111\117\108\100 \099\114\101\097\116\101 \097 \110\101\119 \115\121\109\098\111\108",function()local X=Z("\084\101\115\116");(expect(X)).to.be.a("\117\115\101\114\100\097\116\097");(expect(X==X)).to.equal(true);(expect(tostring(X))).to.equal("\083\121\109\098\111\108\040\084\101\115\116\041")end)it("\115\104\111\117\108\100 \099\114\101\097\116\101 \097 \110\101\119 \115\121\109\098\111\108 \119\105\116\104 \110\111 \110\097\109\101",function()local X=Z();(expect(X)).to.be.a("\117\115\101\114\100\097\116\097");(expect(X==X)).to.equal(true);(expect(tostring(X))).to.equal("\083\121\109\098\111\108\040\041")end)it("\115\104\111\117\108\100 \098\101 \117\110\105\113\117\101 \114\101\103\097\114\100\108\101\115\115 \111\102 \116\104\101 \110\097\109\101",function()(expect(Z("\084\101\115\116")==Z("\084\101\115\116"))).to.equal(false);(expect(Z()==Z())).to.equal(false);(expect(Z("\084\101\115\116")==Z())).to.equal(false);(expect(Z("\084\101\115\116\049")==Z("\084\101\115\116\050"))).to.equal(false)end)it("\115\104\111\117\108\100 \098\101 \117\115\101\097\098\108\101 \097\115 \097 \116\097\098\108\101 \107\101\121",function()local X=Z()local v={}v[X]=100;(expect(v[X])).to.equal(100)end)end)end
return function()
	local Symbol = require(script.Parent)

	describe("Constructor", function()
		it("should create a new symbol", function()
			local symbol = Symbol("Test")
			expect(symbol).to.be.a("userdata")
			expect(symbol == symbol).to.equal(true)
			expect(tostring(symbol)).to.equal("Symbol(Test)")
		end)

		it("should create a new symbol with no name", function()
			local symbol = Symbol()
			expect(symbol).to.be.a("userdata")
			expect(symbol == symbol).to.equal(true)
			expect(tostring(symbol)).to.equal("Symbol()")
		end)

		it("should be unique regardless of the name", function()
			expect(Symbol("Test") == Symbol("Test")).to.equal(false)
			expect(Symbol() == Symbol()).to.equal(false)
			expect(Symbol("Test") == Symbol()).to.equal(false)
			expect(Symbol("Test1") == Symbol("Test2")).to.equal(false)
		end)

		it("should be useable as a table key", function()
			local symbol = Symbol()
			local t = {}
			t[symbol] = 100
			expect(t[symbol]).to.equal(100)
		end)
	end)
end
