return function()local D=Enums.new("\084\101\115\116\069\110\117\109",{"\065";"\066";"\067"})describe("\069\110\117\109\058\071\101\116\069\110\117\109\073\116\101\109\115\040\041",function()it("\115\104\111\117\108\100 \114\101\116\117\114\110 \097 \116\097\098\108\101",function()(expect(D:GetEnumItems())).to.be.a("\116\097\098\108\101")end)it("\115\104\111\117\108\100 \099\111\110\116\097\105\110 \051 \069\110\117\109\073\116\101\109\115",function()(expect(#D:GetEnumItems())).to.equal(3)end)end)describe("\069\110\117\109\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\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\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 testEnum = Enums.new("TestEnum", {"A", "B", "C"})

    describe("Enum:GetEnumItems()", function()
        it("should return a table", function()
            expect(testEnum:GetEnumItems()).to.be.a("table")
        end)

        it("should contain 3 EnumItems", function()
            expect(#testEnum:GetEnumItems()).to.equal(3)
        end)
    end)

    --[[
    describe("Enum:FromValue()", function()
        it("should return A", function()
            expect(testEnum:FromValue(1)).to.equal(testEnum.A)
        end)

        it("should return nil", function()
            expect(testEnum:FromValue(4)).to.equal(nil)
        end)
    end)
    ]]

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

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

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