return function()local D=(Enums.new("\084\101\115\116\069\110\117\109",{"\065";"\066";"\067"})).A describe("\069\110\117\109\073\116\101\109\046\078\097\109\101",function()it("\115\104\111\117\108\100 \098\101 \097 \115\116\114\105\110\103",function()(expect(D.Name)).to.be.a("\115\116\114\105\110\103")end)end)describe("\069\110\117\109\073\116\101\109\046\086\097\108\117\101",function()it("\115\104\111\117\108\100 \110\111\116 \098\101 \110\105\108",function()(expect(D.Value)).to.never.be.a("\110\105\108")end)end)describe("\069\110\117\109\073\116\101\109\046\069\110\117\109\084\121\112\101",function()it("\115\104\111\117\108\100 \098\101 \097 \117\115\101\114\100\097\116\097",function()(expect(D.EnumType)).to.be.a("\117\115\101\114\100\097\116\097")end)end)describe("\069\110\117\109\073\116\101\109\058\073\115\065\040\041",function()it("\115\104\111\117\108\100 \098\101 \116\114\117\101",function()(expect(D:IsA("\084\101\115\116\069\110\117\109"))).to.be.equal(true)end)it("\115\104\111\117\108\100 \098\101 \102\097\108\115\101",function()(expect(D:IsA("\077\097\116\101\114\105\097\108"))).to.be.equal(false)end)end)describe("\069\110\117\109\115\046\095\095\109\101\116\097\116\097\098\108\101",function()it("\115\104\111\117\108\100 \114\101\116\117\114\110 \115\116\114\105\110\103",function()(expect(getmetatable(D))).to.be.a("\115\116\114\105\110\103")end)end)describe("\069\110\117\109\115\046\095\095\105\110\100\101\120",function()it("\115\104\111\117\108\100 \116\104\114\111\119",function()(expect(function()_=D._ end)).to.throw()end)end)describe("\069\110\117\109\115\046\095\095\110\101\119\105\110\100\101\120",function()it("\115\104\111\117\108\100 \116\104\114\111\119",function()(expect(function()D._=nil end)).to.throw()end)end)end
return function()
    local testEnumItem = Enums.new("TestEnum", {"A", "B", "C"}).A

    describe("EnumItem.Name", function()
        it("should be a string", function()
            expect(testEnumItem.Name).to.be.a("string")
        end)
    end)

    describe("EnumItem.Value", function()
        it("should not be nil", function()
            expect(testEnumItem.Value).to.never.be.a("nil")
        end)
    end)

    describe("EnumItem.EnumType", function()
        it("should be a userdata", function()
            expect(testEnumItem.EnumType).to.be.a("userdata")
        end)
    end)

    describe("EnumItem:IsA()", function()
        it("should be true", function()
            expect(testEnumItem:IsA("TestEnum")).to.be.equal(true)
        end)

        it("should be false", function()
            expect(testEnumItem:IsA("Material")).to.be.equal(false)
        end)
    end)

    describe("Enums.__metatable", function()
        it("should return string", function()
            expect(getmetatable(testEnumItem)).to.be.a("string")
        end)
    end)

    describe("Enums.__index", function()
        it("should throw", function()
            expect(function()
                _ = testEnumItem._
            end).to.throw()
        end)
    end)

    describe("Enums.__newindex", function()
        it("should throw", function()
            expect(function()
                testEnumItem._ = nil
            end).to.throw()
        end)
    end)
end